我有一个页面模板“作者”(ID 1814)我用来查询我的帖子(标题:书名和内容:描述),meta_key:author_name,它等于书作者的名字和姓氏_但是,我想仅按作者的姓氏(meta_value 中的第二个单词)对这些帖子进行排序。我可以使用以下方法在循环中过滤获得这些结果:
$values = get_post_custom_values("author_name");
$alpha = end(explode(' ',$values[0]));
但我不知道如何通过这个结果而不是作者姓名的名字来排序这些帖子。我在下面找到了 functions.php 文件的查询,我认为它让我走上了正确的道路,但在我使用它时在我的页面上返回了 404 错误。
来自这里的代码:http ://randyhoyt.com/wordpress/custom-post-type-ordering/
我什至还没有添加要爆炸的 SQL 查询(或者在 SQL 中而不是 PHP 中的任何内容)。不确定该代码是否不起作用,因为我正在查询页面模板而不是 archive.php 文件?有什么建议可以让我走上正确的道路吗?
add_filter('posts_join', 'author_join' );
function author_join($wp_join) {
if(is_page(1814)) {
global $wpdb;
$wp_join .= " LEFT JOIN (
SELECT post_id, meta_value as author_name
FROM $wpdb->postmeta
WHERE meta_key = 'author_name' ) AS DD
ON $wpdb->posts.ID = DD.post_id ";
}
return ($wp_join);
}
add_filter('posts_orderby', 'author_order' );
function author_order( $orderby ) {
if(is_page(1814)) {
$orderby = " DD.post_title ASC";
}
return $orderby;
}