Instruction PHP if à l’intérieur de foreach pour vérifier les pages WordPress
J’ai une instruction foreach qui parcourt toutes les pages d’une installation WordPress et les répertorie dans une div (en utilisant la fonction get_pages()).
Il ressemble actuellement à ceci :
<?php
$pages = get_pages();
foreach ( $pages as $page ) {
$linkPage = '<a class="order" href="' . get_page_link( $page->ID ) . '">';
$linkPage .= $page->post_title;
$linkPage .= '</a>';
echo $linkPage;
}
?>
Ce que je dois faire maintenant est d’ajouter une instruction if qui insère la chaîne » current » après class= »order… si le lien est celui de la page actuelle.
Cela peut sembler une question idiote, mais je suis un développeur front-end avec peu d’expérience en PHP, et chaque fois que j’essayais d’ajouter le si j’avais une erreur de syntaxe, prétendant qu’il y avait une instruction if inattendue.
J’espère que j’ai été clair. Si une aide peut être fournie, elle sera très appréciée.
Solution n°1 trouvée
Essayez ce Code :
<?php
//get id of your current page
$post_id = get_the_ID();
$pages = get_pages();
foreach ( $pages as $page ) {
//Condition statement to add the class current
$current = $post_id == $page->ID ? 'current' : '';
$linkPage = '<a class="order '.$current.'" href="' . get_page_link( $page->ID ) . '">';
$linkPage .= $page->post_title;
$linkPage .= '</a> <br> ';
echo $linkPage;
}
?>
J’espère que ceci vous aidera…
Solution n°2 trouvée
<?php
//get id of your current page
$post_id = $post[0]->ID;
$pages = get_pages();
foreach ( $pages as $page ) {
$current = $post_id == $page->ID ? ' current' : '';
$linkPage = '<a class="order '.$current.'" href="' . get_page_link( $page->ID ) . '">';
$linkPage .= $page->post_title;
$linkPage .= '</a>';
echo $linkPage;
}
?>
Vérifiez ceci, je ne sais pas si cela $post_id = $post[0]->ID
fonctionne dans votre version wp, mais la logique de l’instruction if est correcte et fonctionnera. Essayez de faire écho $post_id
et $current
si quelque chose ne va pas.
0 commentaire