Wordpress is_page()始终返回false

时间:2014-02-20 05:24:37

标签: php wordpress

我正在使用此代码向wordpress页面添加一些内容。但是这段代码不起作用。 is_page()始终返回false值。

<?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...
        }
    }
}

请帮帮我。

4 个答案:

答案 0 :(得分:20)

好的..这是解决方案。而不是使用动作钩子init,使用wp动作钩子。

    /*
 * 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';
        }
    }
}

这很好用。希望这会有所帮助。

答案 1 :(得分:0)

嗯,我想如果它不起作用,你可以抓住$wpdb对象并检查post_type

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

答案 2 :(得分:-1)

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.

Reference

答案 3 :(得分:-1)

尝试另一种方法。在每个页面中都有一个名为&#34; page&#34;在身体css。所以你可以定位这个类:

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