Wordpress get_category_by_slug возвращает false через ajax

Подскажите пожалуйста, не могу понять почему при ajax запросе get_category_by_slug возвращает false? Моя структура выглядит так, пишу плагин для ajax , при клике на пункт меню по классике должна загружаться статья, но там на строчке с get_category_by_slug возвращается false, хотя slug в него передается верный.

ajax.php

add_action('wp_ajax_get_cat', 'ajax_show_posts_in_cat');
add_action('wp_ajax_nopriv_get_cat', 'ajax_show_posts_in_cat');

function ajax_show_posts_in_cat() {
    $link = !empty($_POST['link']) ? esc_attr($_POST['link']) : false;
    $slug = $link ? wp_basename($link) : false;
    $cat  = get_category_by_slug($slug);
    
    if(!$cat) {
        die(var_dump($slug));
    }

    quert_posts( array(
        'posts_per_page' => get_option('posts_per_page'),
        'post_status'    => 'publish',
        'category_name'  => $cat->slug
    ));

    require plugin_dir_path(__FILE__) . 'tpl.php';

    wr_die();
}

add_action( 'wp_enqueue_scripts', 'my_assets' );
function my_assets() {
    //Подключаем js файл к плагину
    wp_enqueue_script('script', plugins_url('ajax-script.js', __FILE__ ),array('jquery'));
    // Добавляем на старницу объект для инициализации ajaxurl, в js файле после этого все обращения идут через myPlugin.
    wp_localize_script('script', 'myPlugin', array(
        'ajaxurl' => admin_url('admin-ajax.php'),    
        'name' => wp_get_current_user()->display_name
    ));
}

script.js

jQuery(document).ready(function($) {  
  
    // AJAX страницы
    // Тело контента
    const $bodyContent = $('.bodyContent');
    //Клик по пункту меню
    $('#primary-menu a').on('click', function(e) {
        e.preventDefault();
        //Выборка по ссылке
        const linkCat = $(this).attr('href');
        //забираем заголовок для вкладки
        const titleCat = $(this).text();
        //Указываем после клика новый заголовок вкалдки
        document.title = titleCat;
        //Размещаем в адресную строку содержимое ссылки
        history.pushState({page_title: titleCat}, titleCat, linkCat);
        ajaxCat(linkCat);
    
    });
    // Слушатель длял переключение страниц внутри браузера "Вперед/Назад"
    window.addEventListener('popstate', function(event) {
        this.document.title = event.state.page_title;
        ajaxCat(location.href);
    }, false);
    
    function ajaxCat (linkCat) {
        $bodyContent.animate({opacity: 0.5}, 300);
        jQuery.post( 
            myPlugin.ajaxurl, 
            {
                action: 'get_cat',
                link: linkCat
            }, 
            function( response ){
                $bodyContent
                    .html(response)
                    .animate({opacity: 1}, 300);
            }
        );
        
    }
    // END
});

$slug = $link ? wp_basename($link) : false; слаг возвращает верный, а вот на следующей строчки уже false. Заранее спасибо за помощь


Ответы (0 шт):