「著者別」のページテンプレート(ID 1814)を使用して、投稿(タイトル:本のタイトルとコンテンツ:説明)をmeta_key:author_nameでクエリしています。これは、本の著者の姓名の両方に相当します。ただし、これらの投稿を作成者の姓(meta_valueの2番目の単語)だけで並べ替えます。次を使用して、これらの結果をループでフィルタリングして取得できます。
$values = get_post_custom_values("author_name");
$alpha = end(explode(' ',$values[0]));
しかし、author_nameの名ではなく、この結果でこれらの投稿を並べ替える方法がわかりません。以下のfunctions.phpファイルのクエリを見つけました。これは正しいパスをたどると思いますが、使用するとページに404エラーが返されます。
ここからのコード:http://randyhoyt.com/wordpress/custom-post-type-ordering/
分解するSQLクエリ(またはPHPではなくSQLにあるもの)を追加していません。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;
}