WordPress AJAX — Yoast ID основной категории в functions.php, используя $ _POST

Я работал над функцией AJAX «загрузить больше» для страницы архива категории WordPress, но она немного отличается, поскольку клиенту нужна только «Основная категория», как это установлено плагином Yoast SEO.

У меня он работает правильно при загрузке страницы, но когда пользователь нажимает кнопку «загрузить больше», страница загружает сообщения из всех категорий, а не только из основной категории. Он также загружает сообщения, которые не были назначены категории страницы.

Я использую эту функцию в functions.php, чтобы получить идентификатор категории:

//get cat ID
function getCurrentCatID(){

global $wp_query;
if(is_category()){
$cat_ID = get_query_var('cat');
}
return $cat_ID;
}

Переменная $current_category_ID найдено с помощью этого, в category.php:

$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 я затем использую следующее для вывода нового цикла на страницу, проблема в том, что я не могу снова получить идентификатор категории в качестве переменной.

// 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'];,

Когда я return переменная для functions.php я всегда получаю значение 0,

Любой совет по этому вопросу будет принята с благодарностью.

Благодарю.

2

Решение

Я нашел свой ответ в вашем вопросе.

как фильтровать посты только по основной категории: работа для меня

$args = array(
'meta_key' => '_yoast_wpseo_primary_category',
'meta_value' => $current_category_ID,
'posts_per_page' => 10
);

Спасибо 🙂

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]