Intereting Posts

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

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

Я изменил 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); } 

Любое предложение, что изменить? Благодаря!

EDITED: Я пробовал это, но он не работает:

 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.

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

 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');