显示自定义归档内容,而不是发布内容

时间:2013-05-27 作者:Chameron

插件允许在帖子/页面中添加自定义字段。

在帖子/页面中,我创建了一个自定义字段,以便用户可以在该字段上输入内容。

如果用户输入这个字段,帖子/页面将在屏幕上显示这个内容,而不是通过帖子/页面编辑器输入的主要内容。

谁能告诉我怎么做?

这是一个插件,所以我不能编辑模板。

我尝试过添加过滤器->内容,但它似乎只适用于帖子类型,如何使其同时适用于帖子/页面类型?

add_meta_box(
            \'st-page-builder\',          // Unique ID
            esc_html__( \'Page Builder\', \'page-builder\' ),       // Title
            \'pageBuilderCallBack\',      // Callback function
            \'post\',                 // Admin page (or post type)
            \'advanced\',                 // Context
            \'default\'                   // Priority
        );

function pageBuilderCallBack($object, $box) {
    wp_nonce_field( basename( __FILE__ ), \'page-builder-nonce\' );
    $page = get_post_meta($object->ID, \'page_builder\', true);
    require_once \'form-input.php\';
}

function displayCustomContent() {
    // how to replace main post content with custom content ?
    if (is_page() || is_single()) 
    {
          global $post;

          $pageBuilderContent = trim(get_post_meta($post->ID, \'page_builder\', TRUE));

          if ($pageBuilderContent) {
               return $pageBuilderContent;
          }
     }

     return $content;
} 

add_filter(\'the_content\', \'displayCustomContent\');

1 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

您只需检查该自定义字段,并返回该字段,而不是post内容。

function displayCustomContent() {    
    if (!is_front_page()) return $content;
    // how to replace main post content with custom content ?
    global $post;
    $special_content = get_post_meta($post->ID,\'page_builder\',true);
    if (!empty($special_content)) { 
        // remove_all_filters(\'the_content\');
        return $special_content;
    }
    return $content;
}
你唯一想做的另一件事是先运行你的过滤器。。。

add_filter(\'the_content\', \'displayCustomContent\', 1);
。。。然后取消注释remove_all_filters(\'the_content\'); 在回调函数内部。这将减少不必要的开销,并有助于避免其他内容过滤器更改您的内容。

结束

相关推荐