WordPress : Utiliser une variable dans is_page(array())

Publié par Jean-Michel le

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 hidedans 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_pagevous 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 ) ){

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *