我有一个功能,可以将任何页面内容加载到另一个页面,就像这样:
add_shortcode( 'load_content', 'fc_load_content' );
function fc_load_content($params) {
extract(shortcode_atts(array('id' => -1), $params));
return apply_filters('the_content', get_post($id)->post_content);
}
在任何页面中,我都可以使用
[load_content id="123"]
添加块,它将把页面 id 123 的内容加载到另一个页面。没关系。但是当我在 ID 123 的页面中执行 [load_content id="123"]
时,它将导致无限循环,直到执行超时。这是用户问题 - ID 错误。但是如何打破函数 fc_load_content 中的无限加载循环呢?我无法获取“调用”页面的 ID,因此无法将其与参数 ID 进行比较。谢谢。
不用担心获取调用页面的id。
只需检查当前页面不是正在加载短代码的页面。函数 is_page() 可以接受一个 id,如果这是当前页面,则返回 true 或 false。在包装您的返回语句的条件门上否定它......
add_shortcode( 'load_content', 'fc_load_content' );
function fc_load_content($params) {
extract(shortcode_atts(array('id' => -1), $params));
if ( !is_page($id) ) {
return apply_filters('the_content', get_post($id)->post_content);
}
}