WordPress : Utiliser une variable globale dans WordPress

Publié par Jean-Michel le

Dans mon fichier header.php, je dois définir dynamiquement l’ID du corps en fonction du modèle actuellement utilisé pour la page que quelqu’un consulte.

Si quelqu’un consulte une page qui utilise le modèle A, la balise body devrait ressembler à ceci :

<body id="page1">

Si quelqu’un consulte une page qui utilise le modèle B, la balise body devrait ressembler à ceci :

<body id="page2">

Quel serait l’inconvénient pour moi de définir la variable suivante dans mes thèmes functions.php

$GLOBALS['my_current_body_id'];

Ensuite, au début de chaque modèle, j’ai défini ce qui suit :

$GLOBALS['my_current_body_id'] = '1';

ou

$GLOBALS['my_current_body_id'] = '2';

et ainsi de suite en fonction de la façon dont je dois styliser et structurer la page particulière.

Ensuite, dans mon fichier header.php, je fais ce qui suit :

<body id="page<?php echo $GLOBALS['my_current_body_id']?>">

Je me demande s’il y a un problème avec l’utilisation de ce type d’approche que je pourrais négliger.

Par exemple, si deux personnes visitent le site exactement au même moment, peut-il y avoir une confusion ou est-ce que $GLOBALS[‘my_current_body_id’] est spécifique à l’utilisateur qui consulte la page ?

Merci.

Solution n°1 trouvée

Voici quelques méthodes, selon ce dont vous avez besoin :

1) Pour récupérer le ‘post_name’ du parent direct de la Page :

<?php
$page = $wp_query->post;
$parent_name = $wpdb->get_var("SELECT post_name FROM $wpdb->posts WHERE ID = '$page->post_parent;'");
?>

Et pour afficher le nom de la Page parent :

<body id="<?php echo $parent_name; ?>">

2) Pour le collecter pour le parent supérieur , c’est-à-dire celui en haut d’une hiérarchie Page parent<>child, nous pouvons modifier le code du lien de jpepper :

<?php
$current_page = $post->ID;
$parent = 1;

while($parent) {
$page_query = $wpdb->get_row("SELECT post_name, post_parent FROM $wpdb->posts WHERE ID = '$current_page'");
$parent = $current_page = $page_query->post_parent;
if(!$parent)
$parent_name = $page_query->post_name;
}
?>

Utilisez ensuite la même méthode que ci-dessus pour afficher le nom. Pour une meilleure façon, vous pouvez simplement utiliser une fonction dans functions.php et l’utiliser dans le fichier header.php.

Source : https://wordpress.org/support/topic/dynamic-id-for-ltbodygt-and-subpages

Solution n°2 trouvée

Que diriez-vous de cette solution:

PHP :

function body_tag() {
    global $post;
    $pageid = $post->ID; // Get page ID
    switch($pageid) {
        case '1':
        $bodyid = '1';
        break;

        case '2':
        $bodyid = '2';
        break;

        case '3':
        $bodyid = '3';
        break;

        default:
        $bodyid = '';
    }
    // Based on the page ID, set the appropriate bodyid and then return it.

    return $bodyid;
}

En-tête.php :

<body id="page<?php echo body_tag(); ?>">

Le code que j’ai écrit semble cependant un peu plus simple… Si l’utilisateur A et l’utilisateur B consultent la même page, ils verront le même modèle. Mais si l’utilisateur A visualise la page avec l’ID 4 et que l’utilisateur B visualise la page avec l’ID 5, ils verront différents modèles. Essayez-vous de créer un plugin pour les tests A/B ?

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 *