Wordpress:仅为自定义插件创建的页面替换the_content的正确方法

时间:2014-10-25 18:44:52

标签: wordpress wordpress-plugin

我正在创建一个插件,需要替换它在激活时创建的两个特定页面的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 ErrorMember Directory以外的网页提供了Contact Members,这些网页都正常运行。

如果我删除了else { the_content(); },则Member DirectoryContact Members正常工作,但所有其他页面都不会显示应显示the_content的任何内容。< / p>

我还尝试将add_filter()包裹在if(is_page('Member Directory') || is_page('Contact Members')) { }中。 the_content适用于其他页面,但不适用于插件创建的两个页面。

使用我的插件替换这两个页面the_content的更好/正确方法是什么?

1 个答案:

答案 0 :(得分:3)

您必须在函数中添加参数。在此之后,你可以改为$ content,the_content()。例如:

function emd_content($content) {
  if ( is_page('Member Directory') ) {
      $content = include dirname( __FILE__ ) . '/content-members.php'; 
    }
    elseif ( is_page('Contact Members') ) {
      $content = include dirname( __FILE__ ) . '/content-member-contact-form.php'; 
    }
    else {
      $content = $content;
    }
      return $content;
}