Comment déterminer quelle page est actuellement en cours de modification à l’aide de la fonctionnalité intégrée de WordPress ?

Publié par Jean-Michel le

J’ai écrit un module dans mon thème WordPress, c’est trop compliqué et hors de propos.

I need to include a block of code and want a reliable way to determine if the user is currently editing specific pages.

Essentially, I want the equivalent of the front-end check:

if (is_front_page()) {

But, for when on the editor pages.

It is required to be able to target pages that are not given special names like front-page / shop-page too. So I may need to target by post ID.

What is the cleanest way to perform this check?

I have tried the function above, along with:

$screen = get_current_screen();

However, this forces a critical error:

Fatal error: Uncaught Error: Call to undefined function get_current_screen() in ... points to line.

A couple other methods have also been attempted, I just note a few. I thought I would be able to get one to work but none seem to do the trick. Please can someone point me in the right direction?

EDIT
Adding example snippet


// This creates the fatal error.
// $screen = get_current_screen();
// var_dump($screen);

// This is for the front-end
// if (is_front_page()) {

// global $pagenow;
// var_dump($pagenow);
// if ($pagenow == 'post.php') {
// This returns string(8) "post.php" which is not descript enough.

// This is front-end
// global $post;
// $post_id = $post->ID;
// Post ID 3887 is Home

if ($post_id == '3887') {

    echo 'hello!';

    require_once('inc/overlays/page-template/fc-front-page.php');

} else {

    echo 'Well that did not work!';

}

La raison pour laquelle je fais cela n’est pas pertinente, je veux simplement inclure un fichier dans un dossier différent, le fichier appelé sera différent selon la page en cours d’édition !

Solution n°1 trouvée

get_current_screen()n’est valable que sur les pages d’administration.

L’ WP_Screenobjet est défini après le admin_initcrochet d’action via le current_screencrochet d’action. Vous pouvez vous référer au Plugin API/Action Reference et aux actions exécutées lors d’une demande typique pour la séquence de crochet de déclenchement.

Pour vous assurer que l’ WP_Screenobjet tire, vous pouvez utiliser la fonction suivante. Il affichera l’objet écran sous forme de commentaire html sur les pages d’administration qui le prennent en charge.

add_action( 'current_screen', 'print_r_get_current_screen' );

if ( ! function_exists( 'print_r_get_current_screen' ) ) {

    function print_r_get_current_screen() {

        echo PHP_EOL . '<!--' . PHP_EOL;
        print_r( get_current_screen() );
        echo PHP_EOL . '-->' . PHP_EOL;

    };

};

Mais je ne pense pas que l’utilisation de l’écran actuel vous aidera à réaliser ce que vous essayez de faire.

Vous pouvez utiliser get_option( 'page_on_front' );pour obtenir l’identifiant de la page d’accueil.

add_action( 'init', 'print_r_get_option_page_on_front' );

if ( ! function_exists( 'print_r_get_option_page_on_front' ) ) {

    function print_r_get_option_page_on_front() {

        echo PHP_EOL . '<!--' . PHP_EOL;
        print_r( get_option( 'page_on_front' ) ); //... 0 if undefined, page ID if defined
        echo PHP_EOL . '-->' . PHP_EOL;

    };

};

Pour woocommerce, je suis sûr que vous pouvez utiliser woocommerce_get_page_id( 'shop' ).

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 *