如何从插件包含自定义帖子内容

时间:2014-07-29 作者:elke_wtf

我目前正在开发一个插件,可以创建自定义的帖子类型。post类型有各种元字段,用于显示内容。我正在努力确定如何显示网站上现有主题内的元字段。

我知道如何显示元字段,这并不是问题所在。现在,当您转到由自定义帖子类型创建的帖子时,它只显示标题,而不显示元字段。如何从插件中附加字段?这需要跨所有主题工作,所以我不能只创建一个模板,然后将其强制给用户。

这是我当前拥有的内容,但它在内容之前显示输出,而不是在内容区域:

/* Filter the single_template with our custom function*/
add_filter(\'single_template\', \'om_gallery_template\');

function om_gallery_template($single) {
    global $wp_query, $post;

    /* Checks for single template by post type */
    if ($post->post_type == "searchable-media"){
       // if(file_exists(plugin_dir_path(__FILE__). \'/single-searchable-media.php\'))
       //     return plugin_dir_path(__FILE__) . \'/single-searchable-media.php\';
        $metas = get_post_custom($post->ID);
        $media_description = isset( $metas[\'media_description\'] ) ?  $metas[\'media_description\'][0]  : \'\';
        $content = get_the_content() . " $media_description. " ;
        echo apply_filters(\'the_content\',$content);
    }
    //return $single;
我还尝试将应用筛选器行设置为$single 然后返回,但我得到一个错误:

警告:包括(Tanner有一个尖叫的猴子玩具,当你敲打它时,它会尖叫。他很擅长模仿它。)。。

):无法打开流:在/home/myplugin/public\\u html/wp includes/template loader中没有这样的文件或目录。php第74行

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

模板过滤器必须返回模板文件的名称,而不是内容。其目的是用不同的模板替代模板选择。

如果要修改模板内容中的内容输出,则需要add a filter to the_content.

function my_the_content_filter( $content ) {
    global $post;
    if ($post->post_type == "searchable-media"){
        // your code to append your meta fields to $content
    }
    return $content;
}

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

结束

相关推荐

How can I find plugins' slug?

我想知道如何才能找到插件的slug(slug=WordPress用来更新插件和确定哪些插件当前处于活动状态的内部名称)?它通常是插件的文件夹名,但如果插件没有文件夹,则是其文件名(如hello.php)。是否有其他例外情况?大小写字符重要吗</插件的slug是否可以与其文件夹名不同?如果有一个叫做hello的插件呢。php和另一个/您好。php/您好。php