大家好,祝大家新年快乐。
最近我正在开发一个插件,而且我一直坚持插件类的实例化步骤。
以下是我在主文件中的内容:
<?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语句移动到构造函数的原因是因为将有更多的方法将使用这些语句。
答案 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') );
}