我有一个输出null(“”)的短代码。
我试图实现的是,如果短代码输出null,则输出一条默认消息。我不想扩展我的短代码,因为可能有多个短代码实例,我不想多次输出消息。
所以我的功能如下:
function av_standalone_doc_404($content) {
if(has_term(\'standalone-document\', \'formats\')){
$filtered_content = apply_filters(\'the_content\', $content);
if(empty($content)){
// Display 404 message
$output .= \'<div id="404_message">Error:
Please check this page later.</div>\';
}else{
$output .= \'\';
}
return $output . $content;
}
}
add_filter(\'the_content\', \'av_standalone_doc_404\', 12);
问题是
apply_filters
正在导致致命错误-显然是因为您无法对内容和调用应用筛选器
apply_filters
在该过滤器内。
“12”加载顺序似乎也没有帮助。
如何在将短代码应用于的后续过滤器之后应用过滤器the_content
?
最合适的回答,由SO网友:fuxia 整理而成
如果要保持当前设置,请尝试尽早挂接并使用do_shortcode()
:
function av_standalone_doc_404($content)
{
remove_filter( current_filter(), __FUNCTION__ );
if ( has_term( \'standalone-document\', \'formats\' ) )
{
$filtered_content = do_shortcode( $content );
// …
如果要避免重复短代码输出,请在短代码处理程序中使用静态变量:
function shortode_handler()
{
static $done = FALSE;
if ( $done )
return;
$done = TRUE;
// create the shortcode output; this will happen only once.
return $output;
}