php si plusieurs états?
Cela va sembler comme une question de noob, désolé. Je ne peux pas travailler mon cerveau ce matin.
Je suis en train d'effectuer plusieurs if
états, mais ils ne se comportent pas correctement. Il semble être toujours le chargement du moins le Modèle après avoir trouvé celui qu'il recherche.
Quelle est la meilleure façon de faire quelque chose comme ceci:
$post = $wp_query->post;
if ( in_category('7') ) {include(TEMPLATEPATH . '/post-experts.php');}
if ( in_category('6') ) {include(TEMPLATEPATH . '/post-radio.php');}
if ( in_category('5') ) {include(TEMPLATEPATH . '/post-lifestyle.php');}
else {include(TEMPLATEPATH . '/singleorigional.php');
}
- Ce n'est pas se comporter correctement à leur sujet? La façon dont vous le faites, il semble bien pour moi.
- Ummm... Exactement comme ça? Qu'est-ce exactement ne fonctionne pas dans cet exemple?
- vous souhaiterez peut-être utiliser elseif?
- Qu'entendez-vous par "ne pas se comporter correctement"?
Vous devez vous connecter pour publier un commentaire.
Vous les plus susceptibles de vouloir faire
else if
pour les 2e et 3e fi ou d'avoir un moyen de savoir si aucun des sont vrai, ne l'instruction elseje pense que vous le problème est que, Si les déclarations sont indépendants. Si vous avez un tableau avec les catégories essayez d'utiliser l'instruction switch ou si vous avez seulement in_category fonction d'un think retourne un booléen alors utiliser elseif déclaration par exemple:
Mon hypothèse, c'est que quel que soit ce que vous cherchez "in_category" peut être trouvé dans plus d'une catégorie n'est donc pas un long bloc if. Essayez ceci:
Version condensée:
Plus facile à lire/comprendre version:
OU - si elle ne peut être trouvé que dans une seule catégorie:
Pour plus d'efficacité, vous êtes mieux d'utiliser une instruction switch, puis d'attraper ceux que vous n'avez pas trouvé dans votre cas, vous pouvez utiliser une valeur par défaut.
Edit: j'ai décidé de revenir à présent à une date ultérieure, afin de mieux expliquer pourquoi c'est mieux.
Un si d'autre combinaison implique un ordre. E. g.
Cela signifie qu'il va vérifier la première condition, si la chose == thing1, si non, vérifier si elle est égale à la condition suivante qui est la chose == thing2 et ainsi de suite. Si vous êtes généralement toujours attendre thing1, alors ce pourrait être bon, parce que vous êtes juste à attraper quelques autres choses. Cependant, de façon réaliste, il est inefficace pour vérifier toutes les conditions possibles avant d'atteindre la solution dont vous avez besoin.
Au lieu de cela, par écrit, l'équivalent de l'instruction switch:
Ce que cela fait, au lieu de cela, c'est prendre la première réponse, par exemple, chose == "thing3", et puis il va ignorer les autres cas qui ne sont pas pertinentes, et, au lieu de seulement faire ce qu'il doit faire. Il n'utilise pas un ordre, au lieu de cela, il fonctionne un peu comme pointant vers la bonne réponse. Donc, il n'a pas d'importance si votre réponse est le premier cas, ou la centième, il ne fait que ce qui est pertinent.
Donc, pour résumer: Si vous utilisez un commutateur, et répondu à votre cas est le centième cas, il vous montrera quoi faire après que l'interrupteur(réponse) est trouvé, si vous étiez à utiliser ifelse et votre réponse était la 100e édition de la variation de la ifelse, il aurait pour itérer sur les 99 autres inutiles vérifie avant de faire ce qu'il doit faire.
Comme @thantos dit, incluent d'autre si consolidés.
EDIT: WordPress me dit qu'il a besoin d'une deuxième argument de la in_category fonction, à savoir l' $variable post; j'ai édité ma réponse corresponde.
Exemple: