我试图从我的网站上做一个分页链接.
架构:
Serie | (category)
|_ Temporada 1 (taxonomy: temporada)
|_ Episodio 1 (posts 1 - meta_key: numeroepisodio)
|_ Episodio 2 (posts 2 - meta_key: numeroepisodio)
|_ Episodio 3 (posts 3 - meta_key: numeroepisodio)
|_ Episodio 4 (posts 4 - meta_key: numeroepisodio)
|_ ...
|_ Temporada 2 (taxonomy: temporada)
|_ Episodio 1 (posts 1 - meta_key: numeroepisodio)
|_ Episodio 2 (posts 2 - meta_key: numeroepisodio)
|_ Episodio 3 (posts 3 - meta_key: numeroepisodio)
|_ Episodio 4 (posts 4 - meta_key: numeroepisodio)
|_ ...
Another Serie 1
|_ ...
Another Serie 2
|_ ...
问题:
当我创建帖子时,分页是按日期排序的.
可以帮助我通过meta_key在同一分类中仅对当前类别进行此订单吗?
码:
<?php
$prev_post = get_adjacent_post( true, '', true );
$next_post = get_adjacent_post( true, '', false );
if ( !is_a( $next_post , 'WP_Post' ) ) {
$query_args = array (
'post_type' => 'post',
'posts_per_page' => -1,
'meta_key' => 'numeroepisodio',
'orderby' => 'meta_value meta_value_num',
'order' => 'DESC',
'paged' => $paged,
'tax_query' => array(
array( 'taxonomy' => 'categry'),
array( 'taxonomy' => 'temporada')
)
);
$oldest = get_posts($query_args);
$next_post = $oldest[0];
}
if ( !is_a( $prev_post , 'WP_Post' ) ) {
$latest = get_posts($query_args);
$prev_post = $latest[0];
}
?>
<?php if ( is_a( $prev_post , 'WP_Post' ) ) : ?>
<a href="<?php echo get_permalink( $prev_post->ID ); ?>"><div id="temporadas-dropdown"><i class="fa fa-caret-left"></i> ANTERIOR</div></a>
<?php endif; ?>
<?php if ( is_a( $next_post , 'WP_Post' ) ) : ?>
<a href="<?php echo get_permalink( $next_post->ID ); ?>"><div id="temporadas-dropdown">SIGUIENTE <i class="fa fa-caret-right"></i></div></a>
<?php endif; ?>
这是一个实例:http://series.enlatino.net/ver-online/silicon-valley/
非常感谢您的建议!
解决方法:
我找到了这个:
<?php
/** Plugin Name: (#73190) Alter adjacent post link sort order */
function wpse73190_adjacent_post_sort( $orderby )
{
return "ORDER BY p.menu_order DESC LIMIT 1";
}
add_filter( 'get_previous_post_sort', 'wpse73190_adjacent_post_sort' );
add_filter( 'get_next_post_sort', 'wpse73190_adjacent_post_sort' );
从wordpress.stackexchange.com开始 – 这将更好地解释它,所以检查出来…接受的答案,但基本上你可以用该过滤器改变查询,并且有不同的过滤器 – 在哪里,加入,排序前一个和下一个.
完全不同的答案:
我不是真的喜欢手动操作,但这可能有效 – 我没有测试它,我对分类法和wordpress DB的完全理解有点缺乏.
function get_adjacent_episode($post, $prev_or_next) {
global $wpdb;
$prev_or_next = ($prev_or_next === 'previous') ? 'DESC' : 'ASC';
$operator = ($prev_or_next === 'previous') ? '<' : '>';
$cur_episode = get_post_meta($post->ID, 'numeroepisodio', true);
$query = sprintf("select p.ID from $wpdb->posts p
inner join $wpdb->postmeta m
on p.ID = m.post_id
inner join $wpdb->terms_relationships r
on p.ID = r.object_id
where r.term_taxonomy_id = (select term_taxonomy_id from $wpdb->term_taxonomy where taxonomy = '%s' limit 1)
and p.post_type = 'post' and m.meta_key = '%s' and m.meta_value %s %s
order by m.meta_key %s limit 1", 'temporada', 'numeroepisodio', $operator, $cur_episode, $prev_or_next);
$adjacent_post = $wpdb->get_results($query);
return $adjacent_post;
}
叫它:
$next_post = get_adjacent_episode($post,’next’);
$prev_post = get_adjacent_episode($post,’previous’);
请注意,查询只选择了p.ID,因此您只能访问$next_post-> ID,但您可以展开此选项以捕获更多结果(如果需要).
标签:wordpress,php,pagination 来源: https://codeday.me/bug/20190708/1399656.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。