следующая и предыдущая ссылка на публикацию упорядочены в алфавитном порядке


Я нашел фрагмент , который упорядочивает все сообщения в алфавитном порядке. Интересно, есть ли способ заставить его работать только для одного типа сообщений? У меня есть несколько пользовательских типов записей на моем веб-сайте, и я хочу, чтобы одна из них была упорядочена в алфавитном порядке, а остальные - по дате.

Я изменил filter_next_post_sort и fiter_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_where и filter_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.

Author: Community, 2015-04-20

1 answers

Найдите решение: Фрагмент отверстия выглядит следующим образом:

<?php
function filter_next_post_sort($sort) {
    global $post;
    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);
    }
}

function filter_previous_post_sort($sort) {
    global $post;
    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);
    }
}

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');
 2
Author: Koli, 2019-11-12 09:40:03