WordPress : Utiliser une variable dans is_page(array())
De la même manière que pour ce sujet, j’ai besoin d’extraire certains ID de page de l’entrée de l’utilisateur (une page d’administration des options de thème), de les stocker dans une variable, puis de les filtrer à l’aide du is_page()
filtre. L’entrée se compose d’identifiants numériques séparés par des retours à la ligne, bien que si cela fonctionne, je refactoriserai pour autoriser également les slugs de page.
Sur la base de la réponse au sujet lié, j’ai ce qui suit, mais cela ne fonctionne toujours pas. La variable crache un tableau approprié d’ID, mais is_page()
ne filtre pas en fonction du tableau.
// WordPress my_conditional_load stuff code above
function my_option_pages() {
$pages = get_option(esc_textarea('my_conditional_load', ''));
return $pages; // reusable variable; used in form and also below
}
function my_option_result() {
$pages = my_option_pages();
$page = array_map(trim, explode(PHP_EOL, $pages)); // create array; split string at newline
$result = implode( ', ', $page ); // reassemble as comma delimited list
$result = rtrim($result); // get rid of extra whitespace
return $result; // string; resusable variable used below end elsewhere. Must be a string for other uses.
}
add_filter( 'the_content', 'test_the_variable' );
function test_the_variable( $content ) {
$result = my_option_result();
$result = explode(', ', $result); // recreate the array
if ( is_page( array( $result ) ) ) {
echo '<span class="foo hide">Array $result = ';
print_r($result);
echo '</span>';
}
else {
echo '<span class="bar hide">Array $result is EMPTY! But we found this: ';
print_r($result);
echo '</span>';
}
return $content;
}
Cette page est un exemple de travail. C’est la page ID 9, qui est dans le tableau. Ouvrez DevTools et recherchez la chaîne bar hide
dans la source de la page. Vous pouvez voir le tableau :
<span class="bar hide">Array $result is EMPTY! But we found this: Array
(
[0] => 9
[1] => 6604
[2] => 6509
[3] => 7323
)
</span>
Alors, qu’est-ce qui ne va pas?
Solution n°1 trouvée
Dans is_page
vous passez un tableau avec un élément qui est également un tableau. Puisque $result est déjà un tableau, vous devriez faire
if ( is_page( $result ) ){
0 commentaire