web-dev-qa-db-ja.com

次の前の投稿へのリンク(アルファベット順)

すべての投稿をアルファベット順に並べる スニペット を見つけました。私はそれを1つのポストタイプだけで機能させる方法があるのだろうか?私は私のウェブサイトでいくつかのカスタム投稿タイプを持っています、そして私はそれらのうちの1つをアルファベット順に、しかし残りは日付順にしたいです。

私はfilter_next_post_sortfiter_previous_post_sortを次のように変更しました。

function filter_next_post_sort($sort) {
  if (get_post_type($post) == 'MyCustomPostType') {
    $sort = "ORDER BY p.post_title ASC LIMIT 1";
  }
  else{
    $sort = "ORDER BY p.post_date ASC LIMIT 1";
  }
  return $sort;
}

私はそれがそのように良いことを願っています。しかし、私はfilter_next_post_wherefilter_previous_post_whereも変更する必要があります、しかし私は正しい方法を見つけません。

今、彼らはこのように見えます:

function filter_next_post_where($where) {
    global $post, $wpdb;
    return $wpdb->prepare("WHERE p.post_title > '%s' AND p.post_type = '". get_post_type($post)."' AND p.post_status = 'publish'",$post->post_title);
}

function filter_previous_post_where($where) {
    global $post, $wpdb;
    return $wpdb->prepare("WHERE p.post_title < '%s' AND p.post_type = '". get_post_type($post)."' AND p.post_status = 'publish'",$post->post_title);
}

何か提案、何を変更しますか?ありがとうございます。

編集:私はこれを試したが、それはうまくいきません。

function filter_next_post_where($where) {
    global $post, $wpdb;
    if (get_post_type($post) == 'szinesz') {
        return $wpdb->prepare("WHERE p.post_title > '%s' AND p.post_type = '". get_post_type($post)."' AND p.post_status = 'publish'",$post->post_title);
    }
    else{
        return $wpdb->prepare("WHERE p.post_date > '%s' AND p.post_type = '". get_post_type($post)."' AND p.post_status = 'publish'",$post->post_title);
    }
}

ああ、私はWP 4.1.1を使っています。

3
Koli

解決策を見つける:穴の抜粋は次のようになります。

function filter_next_post_sort($sort) {
    if (get_post_type($post) == 'MyCustomPostType') {
        $sort = "ORDER BY p.post_title ASC LIMIT 1";
    }
    else{
        $sort = "ORDER BY p.post_date ASC LIMIT 1";
    }
    return $sort;
}
function filter_next_post_where($where) {
    global $post, $wpdb;
    if (get_post_type($post) == 'MyCustomPostType') {
        return $wpdb->prepare("WHERE p.post_title > '%s' AND p.post_type = '". get_post_type($post)."' AND p.post_status = 'publish'",$post->post_title);
    }
    else{
        return $wpdb->prepare( "WHERE p.post_date > '%s' AND p.post_type = '". get_post_type($post)."' AND p.post_status = 'publish'", $post->post_date, $post->post_type );
    }
}

function filter_previous_post_sort($sort) {
    if (get_post_type($post) == 'MyCustomPostType') {
        $sort = "ORDER BY p.post_title DESC LIMIT 1";
    }
    else{
        $sort = "ORDER BY p.post_date DESC LIMIT 1";
    }
    return $sort;
}
function filter_previous_post_where($where) {
    global $post, $wpdb;
    if (get_post_type($post) == 'MyCustomPostType') {
        return $wpdb->prepare("WHERE p.post_title < '%s' AND p.post_type = '". get_post_type($post)."' AND p.post_status = 'publish'",$post->post_title);
    }
    else{
        return $wpdb->prepare( "WHERE p.post_date < '%s' AND p.post_type = '". get_post_type($post)."' AND p.post_status = 'publish'", $post->post_date, $post->post_type );
    }
}

add_filter('get_next_post_sort',   'filter_next_post_sort');
add_filter('get_next_post_where',  'filter_next_post_where');

add_filter('get_previous_post_sort',  'filter_previous_post_sort');
add_filter('get_previous_post_where', 'filter_previous_post_where');
1
Koli