php - WordPress按类别自定义帖子分页
问题描述
我使用“CPT(自定义帖子类型)ajax 分页”wordpress 插件在我的任何页面中显示分页。它完美地工作,显示我在页面上放置分页短代码的所有帖子。我遇到了一些麻烦,我创建了一个页面来在页面中显示分类明智的帖子。'CPT(custom post type) ajax pagination' 插件有一个选项,但它不工作。[cptapagination custom_post_type='yourposttype' cptataxname='taxonamyname' cptacatname='categoryname' post_limit='5']
. 我正在尝试自定义代码,但它不起作用。请帮我解决这个问题。请检查以下代码
function cptapagination_callback() {
global $wpdb, $post;
$cptaNumber = absint($_POST['number']);
$cptaLimit = absint($_POST['limit']);
$cptaType = sanitize_text_field($_POST['post']);
$cptaCatName = sanitize_text_field($_POST['cptacatname']);
$cptataxname = sanitize_text_field($_POST['category']);
if( $cptaNumber == "1" ){
$cptaOffsetValue = "0";
if( $cptataxname ) {
$args = array('posts_per_page' => $cptaLimit,'post_type' => $cptaType,$cptataxname=>$cptaCatName,'post_status' => 'publish');
}else{
$args = array('posts_per_page' => $cptaLimit,'post_type' => $cptaType,'post_status' => 'publish');
}
}else{
$cptaOffsetValue = ($cptaNumber-1)*$cptaLimit;
if( $cptataxname ) {
$args = array('posts_per_page' => $cptaLimit,'post_type' => $cptaType,$cptataxname=>$cptaCatName,'offset' => $cptaOffsetValue,'post_status' => 'publish');
}else{
$args = array('posts_per_page' => $cptaLimit,'post_type' => $cptaType,'offset' => $cptaOffsetValue,'post_status' => 'publish');
}
}
$cptaQuery = new WP_Query( $args );
if( $cptaQuery->have_posts() ){
while( $cptaQuery->have_posts() ){ $cptaQuery->the_post();
echo "<div class='cpta-Section'>
<a href=".get_the_permalink()." class='btn-cptapagi'><h1>".get_the_title()."</h1></a>
</div>";
} wp_reset_postdata();
}
if($cptataxname!=""){
$cpta_args = array('posts_per_page' => -1,'post_type' => $cptaType,$cptataxname=>$cptaCatName,'post_status' => 'publish');
}else{
$cpta_args = array('posts_per_page' => -1,'post_type' => $cptaType,'post_status' => 'publish');
}
$cpta_Query = new WP_Query( $cpta_args );
$cpta_Count = count($cpta_Query->posts);
$cpta_Paginationlist = ceil($cpta_Count/$cptaLimit);
$last = ceil( $cpta_Paginationlist );
if( $cptaNumber>1 ){ $cptaprev = $cptaNumber-1; }
if( $cptaNumber < $last ){ $cptanext = $cptaNumber+1; }
$adjacents = "2";
$setPagination = "";
if( $cpta_Paginationlist > 0 ){
$setPagination .="<ul class='list-cptapagination'>";
$setPagination .="<li class='pagitext'><a href='javascript:void(0);' onclick='javascript:cptaajaxPagination($cptaprev,$cptaLimit)'>Prev</a></li>";
if ( $cpta_Paginationlist < 7 + ($adjacents * 2) ){
for( $cpta=1; $cpta<=$cpta_Paginationlist; $cpta++){
if( $cptaNumber == $cpta ){ $active="active"; }else{ $active=""; }
$setPagination .="<li><a href='javascript:void(0);' id='post' class='$active' data-posttype='$cptaType' data-taxname='$cptataxname' data-cattype='$cptaCatName' onclick='cptaajaxPagination($cpta,$cptaLimit);'>$cpta</a></li>";
}
} else if ( $cpta_Paginationlist > 5 + ($adjacents * 2) ){
if( $cptaNumber < 1 + ($adjacents * 2) ){
for( $cpta=1; $cpta <=4 + ($adjacents * 2); $cpta++){
if( $cptaNumber == $cpta ){ $active="active"; }else{ $active=""; }
$setPagination .="<li><a href='javascript:void(0);' id='post' class='$active' data-posttype='$cptaType' data-taxname='$cptataxname' data-cattype='$cptaCatName' onclick='cptaajaxPagination($cpta,$cptaLimit);'>$cpta</a></li>";
}
$setPagination .="<li class='pagitext dots'>...</li>";
$setPagination .="<li class='pagitext'><a href='javascript:void(0);' onclick='javascript:cptaajaxPagination($last,$cptaLimit)'>".$last."</a></li>";
} elseif( $cpta_Paginationlist - ($adjacents * 2) > $cptaNumber && $cptaNumber > ($adjacents * 2)) {
$setPagination .="<li><a href='javascript:void(0);' id='post' class='$active' data-posttype='$cptaType' data-taxname='$cptataxname' data-cattype='$cptaCatName' onclick='cptaajaxPagination(1,$cptaLimit);'>1</a></li>";
$setPagination .="<li class='pagitext dots'>...</li>";
for( $cpta=$cptaNumber - $adjacents; $cpta<=$cptaNumber + $adjacents; $cpta++){
if( $cptaNumber == $cpta ){ $active="active"; }else{ $active=""; }
$setPagination .="<li><a href='javascript:void(0);' id='post' class='$active' data-posttype='$cptaType' data-taxname='$cptataxname' data-cattype='$cptaCatName' onclick='cptaajaxPagination($cpta,$cptaLimit);'>$cpta</a></li>";
}
$setPagination .="<li class='pagitext dots'>...</li>";
$setPagination .="<li class='pagitext'><a href='javascript:void(0);' onclick='javascript:cptaajaxPagination($last,$cptaLimit)'>".$last."</a></li>";
} else {
$setPagination .="<li><a href='javascript:void(0);' id='post' class='$active' data-posttype='$cptaType' data-taxname='$cptataxname' data-cattype='$cptaCatName' onclick='cptaajaxPagination(1,$cptaLimit);'>1</a></li>";
$setPagination .="<li class='pagitext dots'>...</li>";
for ($cpta = $last - (2 + ($adjacents * 2)); $cpta <= $last; $cpta++){
if( $cptaNumber == $cpta ){ $active="active"; }else{ $active=""; }
$setPagination .="<li><a href='javascript:void(0);' id='post' class='$active' data-posttype='$cptaType' data-taxname='$cptataxname' data-cattype='$cptaCatName' onclick='cptaajaxPagination($cpta,$cptaLimit);'>$cpta</a></li>";
}
}
} else {
for( $cpta=1; $cpta<=$cpta_Paginationlist; $cpta++){
if( $cptaNumber == $cpta ){ $active="active"; }else{ $active=""; }
$setPagination .="<li><a href='javascript:void(0);' id='post' class='$active' data-posttype='$cptaType' data-taxname='$cptataxname' data-cattype='$cptaCatName' onclick='cptaajaxPagination($cpta,$cptaLimit);'>$cpta</a></li>";
}
}
$setPagination .="<li class='pagitext'><a href='javascript:void(0);' onclick='javascript:cptaajaxPagination($cptanext,$cptaLimit)'>Next</a></li>";
$setPagination .="</ul>";
}
echo $setPagination;
wp_die();
}
function cptapagination_default($atts) {
global $wpdb;
$atts = shortcode_atts( array('custom_post_type' => '','cptataxname'=>'','cptacatname'=>'','post_limit' => ''),$atts,'cptapagination');
if($atts['custom_post_type'] !="" ){
$cptaType = sanitize_text_field($atts['custom_post_type']);
}else{
$cptaType ="post";
}
if($atts['cptacatname'] !="" ){
$cptaCatName = sanitize_text_field($atts['cptacatname']);
}else{
$cptaCatName ="uncategorized";
}
if( $atts['post_limit'] !="" ){
$cptaLimit= absint($atts['post_limit']);
}else{
$cptaLimit=5;
}
if($atts['cptataxname']!=""){
$cptataxname = sanitize_text_field($atts['cptataxname']);
$args = array('posts_per_page' => $cptaLimit,'post_type' => $cptaType,$cptataxname=>$cptaCatName,'post_status' => 'publish');
}else{
$args = array('posts_per_page' => $cptaLimit,'post_type' => $cptaType,'post_status' => 'publish');
}
$cptaQuery = new WP_Query( $args );
echo "<div id='cptapagination-content'>";
if( $cptaQuery->have_posts() ){
while( $cptaQuery->have_posts() ){ $cptaQuery->the_post();
echo "<div class='cpta-Section'>
<a href=".get_the_permalink()." class='btn-cptapagi'>
<h1>".get_the_title()."</h1>
</a>
</div>";
} wp_reset_postdata();
}
if($cptataxname!=""){
$cpta_args = array('posts_per_page' => -1,'post_type' => $cptaType,$cptataxname=>$cptaCatName,'post_status' => 'publish');
}else{
$cpta_args = array('posts_per_page' => -1,'post_type' => $cptaType,'post_status' => 'publish');
}
$cpta_Query = new WP_Query( $cpta_args );
$cpta_Count = count($cpta_Query->posts);
$cpta_Paginationlist = ceil($cpta_Count/$cptaLimit);
$last = ceil( $cpta_Paginationlist );
$adjacents = "2";
$setPagination = "";
if( $cpta_Paginationlist > 0 ){
$setPagination .="<ul class='list-cptapagination'>";
$setPagination .="<li class='pagitext'><a href='javascript:void(0);' onclick='javascript:cptaajaxPagination(1,$cptaLimit)'>Prev</a></li>";
if ( $cpta_Paginationlist < 7 + ($adjacents * 2) ){
for( $cpta=1; $cpta<=$cpta_Paginationlist; $cpta++){
if( $cpta == 0 || $cpta == 1 ){ $active="active"; }else{ $active=""; }
$setPagination .="<li><a href='javascript:void(0);' id='post' class='$active' data-posttype='$cptaType' data-taxname='$cptataxname' data-cattype='$cptaCatName' onclick='cptaajaxPagination($cpta,$cptaLimit);'>$cpta</a></li>";
}
} else if ( $cpta_Paginationlist > 5 + ($adjacents * 2) ){
for( $cpta=1; $cpta <= 4 + ($adjacents * 2); $cpta++){
if( $cpta == 0 || $cpta == 1 ){ $active="active"; }else{ $active=""; }
$setPagination .="<li><a href='javascript:void(0);' id='post' class='$active' data-posttype='$cptaType' data-taxname='$cptataxname' data-cattype='$cptaCatName' onclick='cptaajaxPagination($cpta,$cptaLimit);'>$cpta</a></li>";
}
$setPagination .="<li class='pagitext dots'>...</li>";
$setPagination .="<li class='pagitext'><a href='javascript:void(0);' onclick='javascript:cptaajaxPagination($last,$cptaLimit)'>".$last."</a></li>";
} else {
for( $cpta=1; $cpta<=$cpta_Paginationlist; $cpta++){
if( $cpta == 0 || $cpta == 1 ){ $active="active"; }else{ $active=""; }
$setPagination .="<li><a href='javascript:void(0);' id='post' class='$active' data-posttype='$cptaType' data-taxname='$cptataxname' data-cattype='$cptaCatName' onclick='cptaajaxPagination($cpta,$cptaLimit);'>$cpta</a></li>";
}
}
$setPagination .="<li class='pagitext'><a href='javascript:void(0);' onclick='javascript:cptaajaxPagination(2,$cptaLimit)'>Next</a></li>";
$setPagination .="</ul>";
}
echo $setPagination;
echo "</div>";
}
add_shortcode( 'cptapagination', 'cptapagination_default' );
解决方案
推荐阅读
- git - `git log --pretty=format` 可以通过正则表达式转换输出吗?
- jquery - 关于 jQuery 值更改的警报
- android - android + tflite:直接从 GPU 内存中获取相机直播图像到 tflite 模型(更快)
- javascript - 在部分 jira 中执行 AJS
- javascript - 获取数据后尝试渲染组件时出现跨域错误
- android - Kotlin File.readtext() 调用使 Android 应用程序崩溃
- sockets - 如果我一直在套接字中写入并且有时在我的后端读取会发生什么
- angular - 如何将枚举值绑定到 ng-select 标记?
- android - 将 wav 文件拆分为 Android 应用程序的多个文件
- unity3d - UnityEngine.Networking.NetworkTransport:发送错误连接