来自插件类构造函数的Wordpress is_single调用

时间:2014-01-02 02:03:00

标签: php wordpress

大家好,祝大家新年快乐。

最近我正在开发一个插件,而且我一直坚持插件类的实例化步骤。

以下是我在主文件中的内容:

<?php

class Filter_Content {

 public function __construct() {
    if( !is_front_page() && !is_home() && !is_single() ) return;
    if( !is_singular( array('post','page') ) ) return;

    add_filter( 'the_content', array(&$this, 'manage_page_content') );
 }


 public function manage_page_content($content) {

    global $post;
    $content_enabled = get_post_meta( $post->ID, 'post_content_enabled', true );

    if( !$content_enabled ) {
        $content = '';
    }

    return $content;
 }

}

$filtercontent = new Filter_Content();

?>

然而,当在构造函数方法 is_single() is_home()被调用时,它们不起作用, 当我将if语句移动到方法时,它们可以正常工作。 我必须将if语句移动到构造函数的原因是因为将有更多的方法将使用这些语句。

1 个答案:

答案 0 :(得分:3)

尝试一下,在代码中添加了注释

public function __construct() {

    // Plugins are loaded before themes so you need to fire this when theme template is loading EG wp_head hook
    add_action( 'wp_head', array(&$this, 'filter_check') );
 }


 public function filter_check() {
    if( !is_front_page() && !is_home() && !is_single() ) return;
    if( !is_singular( array('post','page') ) ) return;

    add_filter( 'the_content', array(&$this, 'manage_page_content') );
 }