WordPress is_page() gibt immer false zurück

Lesezeit: 2 Minuten

Ich verwende diesen Code, um etwas zu WordPress-Seiten hinzuzufügen. Aber dieser Code funktioniert nicht. ist_seite() wird immer mit falschem Wert zurückgegeben.

<?php
/**
 * Plugin Name: Name Of The Plugin
 * Plugin URI: http://URI_Of_Page_Describing_Plugin_and_Updates
 * Description: A brief description of the Plugin.
 * Version: The Plugin's Version Number, e.g.: 1.0
 * Author: Name Of The Plugin Author
 * Author URI: http://URI_Of_The_Plugin_Author
 * License: A "Slug" license name e.g. GPL2
 */
add_action("init", "only_pages");

function only_pages(){
    if(!is_admin()){
        if(is_page()){
            // Do something here...
        }
    }
}

Bitte hilf mir.

  • hast du es versucht is_page(‘pagename’) ; ?

    – Zeeshan

    20. Februar 2014 um 5:26 Uhr

  • Ja, gebraucht. Funktioniert aber nicht… 🙁

    Benutzer3087089

    20. Februar 2014 um 5:29 Uhr

  • is_page() ist eigentlich $wp_query->is_page(), wenn Sie also $wp_query var_dumpen, können Sie sehen, was bei init valorisiert wird und was nicht

    – Adriano GV Esposito

    17. Dezember 2019 um 9:56 Uhr

Okay, hier ist die Lösung. Anstelle von action hook init verwenden Sie wp action hook.

    /*
 * Plugin Name: Page Test
 */

add_action("wp", "only_pages");

function only_pages(){
    if(!is_admin()){
        wp_reset_query();
        if(is_page()){
            echo 'I am single page';
        }
        else{
            echo 'I am not single page';
        }
    }
}

Das funktioniert gut. Hoffe das hilft.

  • Sie haben mich gerade nach 3 Stunden des Versuchs gerettet. Dieses Verhalten sollte irgendwo auf der WordPress-Website erklärt werden.

    – Chris

    18. April 2017 um 14:22 Uhr

  • Und wenn Sie es früher brauchen, parse_query ist der früheste Haken, wo is_page() wird funktionieren

    – Lukas Bustamante

    13. Januar 2020 um 19:58 Uhr


Nun, ich denke, wenn es nicht funktioniert, könnten Sie das greifen $wpdb Objekt und überprüfen Sie die post_type

function only_pages(){
     global $wpdb;
     if(!is_admin() & $wpdb->post_type == 'page'):
         //Do something here
     endif;
}

  • $wpdb->post_type wird mit null zurückgegeben

    Benutzer3087089

    20. Februar 2014 um 5:41 Uhr

is_page();
// When any single Page is being displayed.

is_page( 42 );
// When Page 42 (ID) is being displayed.

is_page( 'Contact' );
// When the Page with a post_title of "Contact" is being displayed.

is_page( 'about-me' );
// When the Page with a post_name (slug) of "about-me" is being displayed.

is_page( array( 42, 'about-me', 'Contact' ) );
// Returns true when the Pages displayed is either post ID 42, or post_name "about-me", or post_title "Contact".  Note: the array ability was added at Version 2.5.

Bezug

Versuchen Sie einen alternativen Ansatz. In jeder Seite gibt es eine Klasse namens “page” in body css. Sie können also auf diese Klasse abzielen:

    $classes = get_body_class();
    if (in_array('page',$classes)) {
        // Do something
    }

1389000cookie-checkWordPress is_page() gibt immer false zurück

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy