web-dev-qa-db-fra.com

if (is_page (** PAGE ID **)) ne fonctionne pas

Je suis ce didacticiel sur l'ajout du code Google Content Experiments à header.php.

J'ai ajouté le code suivant à header.php:

<?php if (is_page('346') ):?>
    <!-- Google Analytics Content Experiment code -->
        ...
    <!-- End of Google Analytics Content Experiment code -->
<?php endif; ?>

Cela n'a pas produit le code de test de contenu sur le front-end. J'ai essayé:

<?php if (is_page(346) ):?>
    <!-- Google Analytics Content Experiment code -->
        ...
    <!-- End of Google Analytics Content Experiment code -->
<?php endif; ?>

Cela n'a pas fonctionné non plus.

Pouvez-vous voir pourquoi ce code ne fonctionne pas? Merci.

2
Steve

vous pouvez l'utiliser pour

global $post;

<?php if( $post->ID == 346) { ?>

      <!-- do your stuff here -->

<?php } ?>

vous pouvez l'utiliser n'importe où dans l'en-tête ou ailleurs.

7
Waqas Shakeel

Une solution plus simple consiste à passer la title ou la slug comme argument dans is_page() . Vous n'aurez pas de problèmes si vous dupliquez cette page sur un autre serveur.

<?php
if (is_page( 'Page Title' ) ):
  # Do your stuff
endif;
?>
3
RRikesh

essayez d'utiliser is_single ($ post)

dans votre cas, is_single (346) ou is_single ('346') devrait fonctionner

plus ici

1
Huseyn

Des crochets tels que init ne fonctionneront pas du tout.

Vous devez accrocher au moins parse_query.

Voici la partie du code de la fonction is_page dans le noyau de WordPress:

 * @param int|string|array $page Optional. Page ID, title, slug, path, or array of such. Default empty.
 * @return bool Whether the query is for an existing single page.
 */
public function is_page( $page = '' ) {
    if ( !$this->is_page )
        return false;

    if ( empty( $page ) )
        return true;

    $page_obj = $this->get_queried_object();

    $page = array_map( 'strval', (array) $page );

    if ( in_array( (string) $page_obj->ID, $page ) ) {
        return true;
    } elseif ( in_array( $page_obj->post_title, $page ) ) {
        return true;
    } elseif ( in_array( $page_obj->post_name, $page ) ) {
        return true;
    }

Comme vous pouvez le constater, tout fonctionne comme suit:

is_page(198); # (int) ID
is_page('198'); # (string) ID
is_page('Some Title'); (string) Title, case-sensitive
is_page('some-title'); (string) Slug

Mais il doit être accroché au moins dans parse_query ou tout autre crochet après. Vous pouvez voir la commande de hook de WordPress ici: https://codex.wordpress.org/Plugin_API/Action_Reference

1
Lucas Bustamante

Essayez de supprimer '' (guillemets simples) du numéro d’identification et cela fonctionnera:

is_page(34)
0
Md. Jahidul Islam