我浏览了互联网,但找不到一个好的工作示例或关于过滤器的讨论posts_distinct
我正在使用高级自定义字段,但我认为这可能不是问题所在。不管怎样,我尝试的都不管用。
我的函数调用是否正确?还是在WP\\u查询之前
//functions.php
function search_distinct() {
return "DISTINCT";
}
add_filter(\'posts_distinct\', \'search_distinct\');
//archive.php
<?php
$args = array(
\'post_type\' => \'homily\',
\'posts_per_page\' => -1,
\'meta_key\' => \'homilist\',
\'orderby\' => \'meta_value\',
\'order\' => \'ASC\'
);
$the_query = new WP_Query( $args );
search_distinct(); //Correct?
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(); ?>
Update:最终得到的WordPress式解决方案比我所希望的要少,尽管有善意的建议:<?php
global $wpdb;
$querystr = "SELECT DISTINCT meta_value
FROM $wpdb->postmeta
WHERE meta_key = \'homilist\'
ORDER BY meta_value ASC";
$homilists = $wpdb->get_results( $querystr, OBJECT);
echo \'<select id="homilist">\';
for ($i = 1; $i < count($homilists); $i++) {
echo \'<option value="\'.$homilists[$i]->meta_value.\'">\'.$homilists[$i]->meta_value.\'</option>\';
}
echo \'</select>\';
?>