在模板中包含插件输出而不使用短码的最佳实践?

时间:2011-05-04 作者:Tom Auger

我需要你的recommendation for the best practice 此处:

我创建的自定义帖子类型需要在帖子内容末尾列出一个附件列表

我的解决方案是创建自己的伪模板标记(“the\\u attachments()”),该标记在插件中定义。然后是我的自定义帖子类型。php模板页面在\\u content()之后使用这个伪模板标记,我们得到了一个很好的列表。

但这真的是最好的方法吗?现在我们有了一个依赖于外部插件的模板。如果插件不存在,模板将“中断”。从模板的角度来看,很难“要求”插件,因为is\\u plugin\\u active()仅在管理级别可用,这可能是有原因的(因为让模板依赖于插件是一个愚蠢的想法!)

因此,我只剩下以下两种选择:A)将插件输出与模板分离,类似于小部件的工作方式(如果是这样,我如何将$post信息传递给该小部件?),orB)在模板函数中嵌入“插件”代码(但这真的是可移植的吗?)

2 个回复
最合适的回答,由SO网友:kaiser 整理而成
<?php
// A)
// inside your template
if ( function_exists( \'the_attachment_stuff()\' ) )
{
    // do stuff
}
// better/faster
if ( class_exists( \'attachment_plugin_class\' ) )
{
    // do stuff
}

// B) 
// inside your template
do_action( \'the_attachment_suff\');
// means setting this inside your plugin
// this avoids throwing errors or aborting if the hook isn\'t in your template
add_action( \'the_attachment_stuff\', \'your_callback_fn\' );

// C)
function add_attachment_stuff()
{
    if ( ! is_admin() )
        return;

    // the following is guess and theory...
    $content  = get_the_content();
    $content .= the_attachment_stuff(); // in case the attachment_stuff returns instead of echos the result/output.
}
// @link http://codex.wordpress.org/Plugin_API/Action_Reference
// only add on publish, on \'post_save\' we would add it multiple times
add_action( \'publish_post\', \'add_attachment_stuff\', 100 );
add_action( \'publish_phone\', \'add_attachment_stuff\', 100 );
SO网友:Chris_O

您可以通过添加过滤器将插件功能输出到\\u内容。

function ta_post_attachment() {
    if ( is_singular( \'your_custom_post_type\' ) {
        // do stuff
        }
}

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

结束

相关推荐

Sidebar Generator? :)

我厌倦了编辑功能。每次我想添加/删除侧栏时,都会使用php。我知道有Sidebar Generator plugin, 但我想自己开发一些东西,不用插件就可以开箱即用。无论如何,我已经知道如何列出所有侧边栏,如何注册和删除它们,但我不知道如何从选项页自动执行此操作(当然我已经有了一个)。我已经分析了插件的代码,但我的PHP很烂,所以我不懂一半甚至更多。也许这里有人开发了自己的边栏生成器,可以帮助我掌握一些基本知识,比如如何使用$\\u POST等注册新的边栏。?我在考虑fopen(“functions.p