следующая и предыдущая ссылка на публикацию упорядочены в алфавитном порядке
Я нашел фрагмент , который упорядочивает все сообщения в алфавитном порядке. Интересно, есть ли способ заставить его работать только для одного типа сообщений? У меня есть несколько пользовательских типов записей на моем веб-сайте, и я хочу, чтобы одна из них была упорядочена в алфавитном порядке, а остальные - по дате.
Я изменил 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.
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');