我正在创建一个需要替换的插件the_content
仅在激活时创建的两个特定页面中。
这是我的代码:
add_filter(\'the_content\', \'emd_content\');
function emd_content() {
if ( is_page(\'Member Directory\') ) {
include dirname( __FILE__ ) . \'/content-members.php\';
}
elseif ( is_page(\'Contact Members\') ) {
include dirname( __FILE__ ) . \'/content-member-contact-form.php\';
}
else {
the_content();
}
}
上面的代码给了我一个
500 Internal Server Error
对于除
Member Directory
和
Contact Members
, 两者都能正常工作。
如果我删除else { the_content(); }
, 然后Member Directory
和Contact Members
正常工作,但所有其他页面不显示任何内容the_content
应显示。
我还试着包装add_filter()
在内部if(is_page(\'Member Directory\') || is_page(\'Contact Members\')) { }
. the_content
适用于其他页面,但不适用于插件创建的两个页面。
What is a better/proper way to replace the_content
for these two pages using my plugin?
最合适的回答,由SO网友:Ashok Kumar Nath 整理而成
您需要返回过滤后的内容,请尝试以下操作:
add_filter(\'the_content\', \'emd_content\');
function emd_content( $content ) {
if ( is_page(\'Member Directory\') ) {
include dirname( __FILE__ ) . \'/content-members.php\';
}
elseif ( is_page(\'Contact Members\') ) {
include dirname( __FILE__ ) . \'/content-member-contact-form.php\';
}
else {
return $content;
}
}
但更好的方法是使用
custom page template 对于那些页面。