+其他两个答案的1,用于解释动作和过滤器之间的主要区别。
但是,要回答您的特定问题,请使用该问题修改查询:
正如您所猜测的,将自定义查询注入到模板中需要挂接到现有action. (无论是否wp_footer
操作是否正确/理想是另一回事,具体取决于您打算如何使用所述查询允许自定义查询可能最好使用custom filter, 其他插件可以连接到例如,从以下代码开始:
function get_page_list() {
$pages_args = array(
\'post_type\' => \'page\',
\'posts_per_page\' => \'1\'
);
$pages_query = new WP_Query( apply_filters( \'myfilter\', $pages_args ) );
if( $pages_query->have_posts() ) {
while ( $pages_query->have_posts() ) : $pages_query->the_post();
echo get_the_title();
endwhile;
// Reset Post Data
wp_reset_postdata();
}
else echo \'no results found\';
}
add_action( \'wp_footer\', \'get_page_list\', 1);
如果希望此代码可扩展,则需要为其他人提供扩展它的方法。我建议通过以下方式使您的自定义查询参数可扩展:
custom filter. e、 g.这:
$pages_args = array(
\'post_type\' => \'page\',
\'posts_per_page\' => \'1\'
);
。。。很容易变成这样:
$pages_args = apply_filters(
\'custom_filter_name\',
array(
\'post_type\' => \'page\',
\'posts_per_page\' => \'1\'
)
);
这将允许其他插件修改您的查询参数。例如,如果插件想要返回两篇帖子,而不是一篇:
function wpse73840_modify_custom_filter_name( $args ) {
// Modify posts_per_page
$args[\'posts_per_page\'] = \'2\';
// Return modified args
return $args;
}
add_filter( \'custom_filter_name\', \'wpse73840_modify_custom_filter_name\' );
我想这就是你要问的。如果没有,请在评论中告诉我。