首先,我想指出,我这样做可能是错误的,但这是一件有点绝望的事情,它突然出现在我的脑海中。
我们正在为客户开发一个网站,他想要面包屑。现在,我们下载了一个插件,它允许您通过调用breadcrumbs\\u试用函数来放置breadcrumbs。由于主题不支持PHP添加,我们希望将其放置在页面中不易访问的动态位置。
由于主题代码块接受短代码,我认为(可能很愚蠢)在短代码中创建运行面包屑,所以我尝试了一下,
function breadcrumbs_func( $atts ){
breadcrumb_trail();
}
add_shortcode( \'breadcrumbs\', \'breadcrumbs_func\' );
现在我意识到,我偏离了函数的范围,这里没有定义breadcrumb\\u trail()函数。有没有一种方法可以让我从其他插件中运行这个独立的函数?
edit
我输入了一个错误,它确实运行了,但它只是没有显示在正确的位置。。。进一步调整我想
最合适的回答,由SO网友:Mark Kaplun 整理而成
这可能不起作用,或者以意想不到的方式起作用。短代码应probably 只能在“post”单页上显示。以您想要的方式使用短代码会使面包屑不显示在存档页面上,或者让它们在那里显示多次或错误的位置。
您应该做的是对主题进行最小程度的修改。插入ado_action(\'show_bc
); 在头文件的适当位置(“fork”如果使用子主题,则在子主题中)。然后添加以下内容add_action(\'show_bc\',\'breadcrumb_trail\');
在主题的functions.php
或者在插件中。
至于代码中的确切问题,这是因为短代码处理程序应该返回HTML,而不是输出HTML。如果BC函数没有返回HTML而不是回显的选项,则必须围绕其调用进行输出缓冲。