单过滤器调用
试试这个插件。它说明了整个技术。
<?php
/** Plugin Name: (#69351) Example single filter call on <code>\'the_content\'</code> */
function wpse69351_single_call( $content )
{
// Only for single view request (post, page, etc.)
if ( ! is_singular() )
return $content;
// This removes the filter during its first call
remove_filter( current_filter(), __FUNCTION__ );
$custom = \'<h1>I am only here once!</h1>\';
return $content.$custom;
}
add_filter( \'the_content\', \'wpse69351_single_call\' );
如果你的目标不是内容本身,而是更多的循环,那么试试这个示例插件。
<?php
/** Plugin Name: (#69351) Example single filter call on <code>\'loop_start\'</code> & <code>\'loop_end\'</code> */
function wpse69351_single_call( $wp_query )
{
// Abort in some case
if ( \'post\' !== get_query_var( \'post_type\' ) )
return;
// This removes the filter during its first call
remove_filter( current_filter(), __FUNCTION__ );
return print \'<h1>I am only here once!</h1>\';
}
// Attach something to the START of the loop
add_action( \'loop_end\', \'wpse69351_single_call\' );
// Attach something to the END of the loop
add_action( \'loop_start\', \'wpse69351_single_call\' );
不完整的主题
我也考虑将过滤器附加到页脚而不是内容,但我遇到过没有页脚的主题。
从来不敢去想关心不完整的主题。我们得到了主题开发指南,这是有原因的,我们呼吁wp_footer();
是一个must have 对于每个主题。否则,想想“这是胡说八道!”独自前行。