在短码中执行php函数

时间:2016-11-11 作者:Dorvalla

首先,我想指出,我这样做可能是错误的,但这是一件有点绝望的事情,它突然出现在我的脑海中。

我们正在为客户开发一个网站,他想要面包屑。现在,我们下载了一个插件,它允许您通过调用breadcrumbs\\u试用函数来放置breadcrumbs。由于主题不支持PHP添加,我们希望将其放置在页面中不易访问的动态位置。

由于主题代码块接受短代码,我认为(可能很愚蠢)在短代码中创建运行面包屑,所以我尝试了一下,

function breadcrumbs_func( $atts ){
    breadcrumb_trail();
}
add_shortcode( \'breadcrumbs\', \'breadcrumbs_func\' );
现在我意识到,我偏离了函数的范围,这里没有定义breadcrumb\\u trail()函数。有没有一种方法可以让我从其他插件中运行这个独立的函数?

edit

我输入了一个错误,它确实运行了,但它只是没有显示在正确的位置。。。进一步调整我想

2 个回复
最合适的回答,由SO网友:Mark Kaplun 整理而成

这可能不起作用,或者以意想不到的方式起作用。短代码应probably 只能在“post”单页上显示。以您想要的方式使用短代码会使面包屑不显示在存档页面上,或者让它们在那里显示多次或错误的位置。

您应该做的是对主题进行最小程度的修改。插入ado_action(\'show_bc); 在头文件的适当位置(“fork”如果使用子主题,则在子主题中)。然后添加以下内容add_action(\'show_bc\',\'breadcrumb_trail\'); 在主题的functions.php 或者在插件中。

至于代码中的确切问题,这是因为短代码处理程序应该返回HTML,而不是输出HTML。如果BC函数没有返回HTML而不是回显的选项,则必须围绕其调用进行输出缓冲。

SO网友:rudtek

您可以尝试以下操作:

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

 function customcode_after_content( $content ) { 
    if ( is_singular(\'post\') {
        $extracode = \'<p>hi</p>\';

        $content = $extracode . $content;

        }

    return $content;
}
然后,您可以输入一个短代码,也可以只输入实际代码。也不用搞乱头球。