PHP: puis-je mettre une instruction if à l'intérieur d'une variable?
Je suis encore un peu débutant en PHP, donc désolé si c'est une question stupide =)
Ce que je suis en train de faire est dans un blog WordPress, insérer un champ personnalisé avec plusieurs valeurs (les"ingrédients") dans mon flux RSS. (J'ai aussi d'autres postes qui ne sont pas des recettes, c'est pourquoi la rubrique "Ingrédients" et "Instructions" sont à l'intérieur de l'instruction if.) Voici mon code pour l'instant:
<?php
function insertIngredients($content) {
/* get ingredients into variable $recipeStuff */
$recipeStuff =
if ($ingredients = get_post_custom_values('ingredients')) {
echo '<h3>Ingredients</h3><ul id="ingredients">';
foreach ( $ingredients as $key => $value ) {
echo '<li>';
echo $value;
echo '</li>';
}
echo '</ul><h3>Instructions</h3>';
}
/* add before content */
$content = $recipeStuff . $content;
return $content;
}
/* Do it! */
add_filter('the_excerpt_rss', 'insertIngredients');
add_filter('the_content_rss', 'insertIngredients');
?>
Mais une obtenir une "inattendu SI" erreur, donc je suppose que je ne peux pas mettre tout ce que l'intérieur de l' $recipeStuff variable =) je ne peux pas penser comment le mettre là.
(Si c'est important, SI l'instruction est exactement ce que j'utilise dans les posts sur la page elle-même, et il fonctionne parfaitement!)
Merci beaucoup d'avance pour toute aide! =D
Mise à JOUR!
Voici ce que j'ai dans mon code maintenant:
function insertIngredients($content) {
/* test for presence of ingredients & set variables */
if ($ingredients = get_post_custom_values('ingredients')) {
$heading1 = '<h3>Ingredients</h3><ul id="ingredients">';
foreach ( $ingredients as $key => $value ) {
$ings = '<li>' . $value . '</li>';
}
$heading2 = '</ul><h3>Instructions</h3>';
}
/* if no ingredients, variables are empty */
else { $heading1=''; $ings=''; $heading2=''; }
$recipeStuff = $heading1 . $ings . $heading2 ;
/* add before content */
$content = $recipeStuff . $content;
return $content;
}
/* Do it! */
add_filter('the_excerpt_rss', 'insertIngredients');
add_filter('the_content_rss', 'insertIngredients');
Je n'ai plus obtenez un message d'erreur, mais les ingrédients ne sont pas apparaître dans le flux rss. Je ne sais pas si c'est parce que quelque chose est encore mal avec le code, ou si il faut un certain temps pour avoir un effet (même si je ne sais pas pourquoi ce serait le cas)? J'utilise FeedBurner, si cela fait une différence.
Merci beaucoup pour vos réponses, tout le monde. Je vais essayer de faire un peu de choses différentes et mise à jour dans un peu. Merci! =)
- Pour votre code de mise à JOUR à essayer: si ($ingrédients == get_post_custom_values ("ingrédients")) {
Vous devez vous connecter pour publier un commentaire.
Pourquoi ne pas tourner autour?
Même si cette question est assez vieux, l'OMI, la meilleure réponse est manquant, l'opérateur ternaire:
$recipeStuff
obtenez la valeurSOMETHING
si la case est vrai, sinon il va obtenirSOMETHING ELSE
Le plus simple à faire, et garder les choses simples est par
Non, ça ne fonctionne pas vraiment de cette façon.
Il devrait être (en ignorant la tête de la fonction et de quoi que ce soit):
Donc, vous ne pouvez pas utiliser si (sous cette forme) comme une fonction inline. Il y a une ligne alternative, mais il est difficile d'utiliser des boucles à l'intérieur d'elle. Echo sera TOUJOURS la sortie de quelque chose de la mémoire tampon de sortie. Id est, vous ne pouvez pas utiliser echo comme "$myVar = echo "quelque chose";". Viens de faire une affectation à l'intérieur de l'état.
Évidemment, ce n'est pas correct de syntaxe PHP. Ce que vous avez besoin est une variable qui concatène les chaînes de caractères (li, etc.) et de le retourner.
Vous devez déplacer si à l'extérieur de l' $recipeStuff variable.
Je pense que c'est le problème des lignes
à quoi ça sert? ou quelle valeur doit-il posséder?
essayez plutôt ceci
Lors de l'utilisation du signe égal pour comparer des valeurs, il devrait être un double == ou triple ===
à l'aide d'un signe égal est de savoir comment vous définissez la valeur
Lire la Les opérateurs de comparaison page