我一直在为一个WordPress类别存档页面开发一个AJAX“加载更多”功能,虽然因为客户端只想要Yoast SEO插件设置的“主要类别”,但这个功能略有不同。
我在页面加载时正常工作但是当用户点击“加载更多”按钮时,页面会加载所有类别的帖子,而不仅仅是主要类别。它还会加载尚未分配到页面类别的帖子。
我在functions.php中使用此函数来获取类别ID:
//get cat ID
function getCurrentCatID(){
global $wp_query;
if(is_category()){
$cat_ID = get_query_var('cat');
}
return $cat_ID;
}
在category.php中找到变量$current_category_ID
:
$current_category_ID = getCurrentCatID();
我在category.php上使用以下内容来获取页面加载的前10个帖子:
$args = array(
'meta_key' => '_yoast_wpseo_primary_category',
'meta_value' => $current_category_ID,
'posts_per_page' => 10
);
$query = new WP_Query($args);
//output loop
在functions.php中,我使用以下内容向页面输出一个新循环,问题是我似乎无法再将类别ID作为变量获取。
// prepare our arguments for the query
$args = unserialize( stripslashes( $_POST['query'] ) );
$args['paged'] = $_POST['page'] + 1; // we need next page to be loaded
$args['post_status'] = 'publish';
$args['meta_key'] = '_yoast_wpseo_primary_category';
$args['meta_value'] = $cat_ID; //requires variable to be dynamic, hardcoding it works fine
$args['posts_per_page'] = 10;
query_posts( $args );
// new loop
我在第二个函数中使用$_POST['query']
或$cat_ID = $_POST['query']; $cat_ID = $_GET['page_id'];
尝试了各种方法(太多无法回忆)。
当我$cat_ID = $_GET['page_id'];
变量到functions.php时,我总是得到值return
。
对此有任何建议将不胜感激。
感谢。
答案 0 :(得分:0)
我在你的问题中找到了答案。
如何按主要类别过滤帖子:为我工作
$args = array(
'meta_key' => '_yoast_wpseo_primary_category',
'meta_value' => $current_category_ID,
'posts_per_page' => 10
);
谢谢:)