您可以在此处看到一个实际示例:https://wordpress.stackexchange.com/a/142902/19105
但在这种情况下,为什么需要使用DISTINCT?您提供的WP\\u查询不应该提供重复的结果,除非有插件导致问题。
但我还是会尽力回答的。我建议将函数保留在函数中。php。但将过滤器移动到存档。php围绕WP\\u查询调用,如下所示:
add_filter(\'posts_distinct\', \'search_distinct\');
$the_query = new WP_Query( $args );
remove_filter(\'posts_distinct\', \'search_distinct\');
如果这样做,我还建议您通过search\\u distinct函数留下评论。只需解释一下归档中使用了该函数。php——如果您忘记了函数的来源,它将在将来对您有所帮助。
此外,请删除该行:search_distinct(); //Correct?
这是不正确的,通常不直接调用操作/筛选函数。这就是“add\\u filter()”的作用。
完整代码:
// functions.php
// Used as a filter for archive.php to eliminate duplicate posts
function search_distinct() {
return "DISTINCT";
}
//archive.php
<?php
$args = array(
\'post_type\' => \'homily\',
\'posts_per_page\' => -1,
\'meta_key\' => \'homilist\',
\'orderby\' => \'meta_value\',
\'order\' => \'ASC\'
);
// Get posts, make them distinct. search_distinct is defined in functions.php
add_filter(\'posts_distinct\', \'search_distinct\');
$the_query = new WP_Query( $args );
remove_filter(\'posts_distinct\', \'search_distinct\');
if ( $the_query->have_posts() ) {
echo \'<ul>\';
while ( $the_query->have_posts() ) {
$the_query->the_post();
echo \'<li>\' .the_field(\'homilist\') . \'</li>\';
}
echo \'</ul>\';
}
wp_reset_postdata(); ?>