2012-03-29 1 views
5

나는 알파벳순으로 순서대로 정렬 된 사용자 정의 게시물을 사용하여 WordPress 웹 사이트를 개발 중입니다.자료 Wordpress : previous_post_link/next_post_link 알파벳순으로?

<!-- THE ARGS --> 
<?php global $query_string; 
$args = wp_parse_args($query_string); 
$args = array(
    'post_type' => 'custom_post', 
    'orderby' => 'title', 
    'order' => 'ASC', 
    'posts_per_page' => -1, 
    ); ?> 

<!-- THE LOOP --> 
<?php $wp_query = new WP_Query($args); ?> 
<?php while ($wp_query->have_posts()) : $wp_query->the_post(); ?> 
<?php endwhile; ?> 
<?php wp_reset_query(); ?> 

거기에는 환상적인 루프가 없습니다.

게시물을 열면 해당 게시물에서 일반적인 previous_post_link 및 next_post_link가 있으므로 게시물을 탐색 할 수 있습니다. 그러나 이것은 게시물의 연대순으로 이루어 지므로 물론 루프에서 사용한 것과 동일한 알파벳순으로 처리하려고합니다. 이 문제에 대한 도움은 매우 감사하겠습니다. 미리 감사드립니다.

답변

6

this plug-in 당신이 플러그인은 몇 년 동안 업데이트되지 않았 음을

<ul class="pager"> 
     <?php previous_post_link_plus(array('order_by' => 'post_title')); ?> 
     <?php next_post_link_plus(array('order_by' => 'post_title')); ?> 
</ul> 
+0

을 계획하는 경우 몇 가지 제한이있을 수 있습니다. 고마워, 친구. – Cthulhu

+0

이 플러그인은 2 년 후에 업데이트되지 않았지만 여전히 효과적입니다 !!! 누군가 그것을 다시 테스트해야 wp admin의 설치 가능한 옵션으로 되돌아 갈 수 있습니다. wp 사이트에서 다시 업로드해야했습니다. –

0

, 여전히 작동하는지 확실하지 : 예컨대, 계신 않는 것 같습니다. 경우에 따라 I came up with a solution이 function.php에 추가 될 수 있습니다. 희망이 도움이됩니다!

3

get_adjacent_post 함수의 필터를 사용하여이 작업을 수행 할 수 있습니다. 당신의 functions.php 파일에서

추가 : 당신이 경우

add_filter('get_previous_post_sort', 'mytheme_previous_post_orderby_name', 10, 1); 
add_filter('get_next_post_sort', 'mytheme_next_post_orderby_name', 10, 1); 

add_filter('get_previous_post_where', 'mytheme_previous_post_where_name', 10); 
add_filter('get_next_post_where', 'mytheme_next_post_where_name', 10); 

the_post_navigation(); 

remove_filter('get_previous_post_sort', 'mytheme_previous_post_orderby_name', 10); 
remove_filter('get_next_post_sort', 'mytheme_next_post_orderby_name', 10); 
remove_filter('get_previous_post_where', 'mytheme_previous_post_where_name', 10); 
remove_filter('get_next_post_where', 'mytheme_next_post_where_name', 10); 

: 당신이 이전/다음 게시물 기능을 연결 호출하기 전에

function mytheme_previous_post_orderby_name($orderby){ 
    return "ORDER BY p.post_title DESC LIMIT 1"; 
} 
function mytheme_previous_post_where_name(){ 
    global $post, $wpdb; 
    return $wpdb->prepare("WHERE p.post_title < %s AND p.post_type = %s AND (p.post_status = 'publish' OR p.post_status = 'private')", $post->post_title, $post->post_type); 
} 
function mytheme_next_post_orderby_name($orderby){ 
    return "ORDER BY p.post_title ASC LIMIT 1"; 
} 
function mytheme_next_post_where_name(){ 
    global $post, $wpdb; 
    return $wpdb->prepare("WHERE p.post_title > %s AND p.post_type = %s AND (p.post_status = 'publish' OR p.post_status = 'private')", $post->post_title, $post->post_type); 
} 

그런 다음 single.php 페이지에서 필터를 추가 특정 post_type을 확인하려는 경우 추가 필터 섹션 주위에 if를 추가 할 수 있습니다.

if($post->post_type == 'my_custom_post_type'){ 
    add_filter(...); 
    the_post_navigation(); 
    remove_filter(...); 
} 

, 또는 post_type 특정 single.php 파일을 사용할 수 있습니다!

나를 위해 큰 일을하지만 ... 같은 용어의 게시물이 결합에 우수한이다

+1

Danbrellis의 대답에 아포스트로피가 빠져 있습니다. 내 첫 번째 계정이므로 의견을 말할 수는 없으며 의견을 말할 담당자가 충분하지 않습니다. remove_filter ('get_previous_post_sort', mytheme_previous_post_orderby_name ', 10); 'remove_filter ('get_previous_post_sort', 'mytheme_previous_post_orderby_name', 10);'(그러나이 수정으로도이 작업을 수행 할 수 없습니다) – plumbinator

+0

배관공 - 고마워요. 가까이 가고 있니? 몇 가지 샘플 코드가 있다면 좀 봐줘서 기쁩니다. – danbrellis