워드프레스: 알파벳순으로 previor_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(); ?>
화려한건 없고 그냥 평범한 고리일 뿐입니다.
게시물을 열 때 해당 페이지에는 게시물을 탐색할 수 있도록 일반적인 이전_post_link와 next_post_link가 있습니다.하지만 이것은 게시물의 시간 순서에 의해 이루어지며, 나는 물론 루프에서 사용했던 것과 같은 알파벳 순서로 그렇게 하고 싶습니다.이 문제에 대해 어떤 도움이라도 주시면 대단히 감사하겠습니다.미리 감사드립니다!
이 플러그인은 사용자가 원하는 작업을 수행하는 것 같습니다. 예:
<ul class="pager">
<?php previous_post_link_plus( array('order_by' => 'post_title') ); ?>
<?php next_post_link_plus( array('order_by' => 'post_title') ); ?>
</ul>
의 필터를 사용하여 이 작업을 수행할 수 있습니다.get_adjacent_post
기능.
당신의 기능대로.php 파일 추가:
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 );
}
그럼 싱글로.이전/다음 게시물 링크 기능을 호출하기 전에 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);
특정 post_type을 확인하려면 필터 추가 섹션 주위에 if를 추가할 수 있습니다.
if($post->post_type == 'my_custom_post_type'){
add_filter(...);
the_post_navigation();
remove_filter(...);
}
또는 post_type 특정 싱글 php 파일을 사용할 수 있습니다!
이 방법은 제게 아주 효과적이었지만, 만약 당신이 이것을 같은 용어의 게시물과 결합할 계획이라면 약간의 제한이 있을 수 있습니다.
언급URL : https://stackoverflow.com/questions/9925035/wordpress-previous-post-link-next-post-link-by-alphabetical-order
'programing' 카테고리의 다른 글
Ajax Jquery 호출 시 리디렉션 (0) | 2023.10.26 |
---|---|
virtualenv(python3.4), pip install mysql 클라이언트 오류 (0) | 2023.10.26 |
모든 카테고리에서 랜덤으로 2개 레코드 선택 그룹 in MariaDB (0) | 2023.10.26 |
WooCommerce PayPal 게이트웨이에서 CORB(크로스 오리진 읽기 차단) 오류 가져오기 (0) | 2023.10.26 |
단일 레포 내에서 디렉토리당 .gitignore를 추가로 가질 수 있습니까? (0) | 2023.10.21 |