Wordpressの次/前の投稿リンク機能を使用して、人の姓に基づいてカスタムタイプの投稿間を移動しようとしています。
カスタムタイプは、 "Forename Surname"という形式の役職を持つ人を表します。
アーカイブページの投稿を姓で並べましたが、次の/前のリンクを使ってこのフィルタをたどることができないかどうかを調べるのに苦労しています。私は別の 似たような質問 を見ました。そして次の/前のリンクをタイトル順に並べることができました。
どのようにこれを行うことができるかについて誰かが何か考えを持っていれば、助けは大いに感謝されるでしょう。
MySQLの文字列関数 を見ると、 SUBSTRING_INDEX()
が使えるように見えます。関数:
ORDER BY SUBSTRING_INDEX( p.post_title, ' ', -1 ) {ASC|DESC} LIMIT 1
投稿タイトルの最後のWordで並べる。
このメソッドはあなたのorderbyフィルタの中でテストできます。
これは@WillLanniによってリンクされた 答え を変更する方法の例です。
a)カスタム投稿タイプcpt
の次の部分:
// Next CPT
add_filter( 'get_next_post_where', function( $where, $in_same_term, $excluded_terms )
{
global $post, $wpdb;
// Edit this custom post type to your needs
$cpt = 'post';
// Current post type
$post_type = get_post_type( $post );
// Nothing to do
if( $in_same_term || ! empty( $excluded_terms ) || $cpt !== $post_type )
return $where;
// Next CPT order by last Word in title
add_filter( 'get_next_post_sort', function( $orderby )
{
return " ORDER BY SUBSTRING_INDEX( p.post_title, ' ', -1 ) ASC LIMIT 1 ";
} );
// Modify Next WHERE part
return $wpdb->prepare(
" WHERE
SUBSTRING_INDEX( p.post_title, ' ', -1 ) > SUBSTRING_INDEX( '%s', ' ', -1 )
AND p.post_type = '%s'
AND p.post_status = 'publish'
",
$post->post_title,
$post_type
);
}, 10, 3 );
b)カスタム投稿タイプcpt
の前の部分:
// Previous CPT
add_filter( 'get_previous_post_where', function( $where, $in_same_term, $excluded_terms)
{
global $post, $wpdb;
// Edit this custom post type to your needs
$cpt = 'post';
// Current post type
$post_type = get_post_type( $post );
// Nothing to do
if( $in_same_term || ! empty( $excluded_terms ) || $cpt !== $post_type )
return $where;
// Previous CPT, order by last Word in post title
add_filter( 'get_previous_post_sort', function( $orderby )
{
return " ORDER BY SUBSTRING_INDEX( p.post_title, ' ', -1 ) DESC LIMIT 1 ";
} );
// Modify Prev WHERE part
return $wpdb->prepare(
" WHERE
SUBSTRING_INDEX( p.post_title, ' ', -1 ) < SUBSTRING_INDEX( '%s', ' ', -1 )
AND p.post_type = '%s'
AND p.post_status = 'publish'
",
$post->post_title,
$post_type
);
}, 10, 3 );
必要に応じてカスタム投稿タイプ'cpt'
を変更します。