Пользовательский шорткод, извлекаемый из пользовательского типа / категории сообщений - PullRequest
0 голосов
/ 30 мая 2019

Я создал пользовательский тип поста под названием «истории» с категориями. Есть 5 категорий, одна из которых «Fostering».

Я хочу добавить на страницу все пользовательские «истории» с категорией «фостер», у меня это сейчас есть в functions.php

function register_shortcodes() {
    add_shortcode( 'stories', 'stories_function' );
}
add_action( 'init', 'register_shortcodes' );

function stories_function($atts) {
    global $wp_query,
        $post;

    $atts = shortcode_atts( array(
        'cat' => ''
    ), $atts );

    $loop = new WP_Query( array(
        'posts_per_page'    => 3,
        'post_type'         => 'stories',
        'orderby'           => 'rand',
        'order'             => 'ASC',
        'tax_query'         => array( array(
            'taxonomy'  => 'category',
            'field'     => 'slug',
            'terms'     => array( sanitize_title( $atts['cat'] ) )
        ) )
    ) );

    if( ! $loop->have_posts() ) {
        return false;
    }

    while( $loop->have_posts() ) {
        $loop->the_post();
        echo the_title();
        echo the_content();
    }

    wp_reset_postdata();
}

и шорткод, который я использую, это [Stories category = "fostering»], но ничего не извлекается, у меня есть фиктивные данные в этом пользовательском типе записи с примененной категорией «Fostering».

enter image description here

1 Ответ

1 голос
/ 30 мая 2019

Попробуйте этот код, поскольку вы пропустили пропуск cat => Fostering и убедитесь, что Fostering является слагом категории, иначе передайте правильный слаг этой категории

function register_shortcodes() {
    add_shortcode( 'stories', 'stories_function' );
}
add_action( 'init', 'register_shortcodes' );

function stories_function($atts) {
    global $wp_query,
        $post;

    $atts = shortcode_atts( array(
        'cat' => 'fostering'
    ), $atts );

    $loop = new WP_Query( array(
        'posts_per_page'    => 3,
        'post_type'         => 'stories',
        'orderby'           => 'rand',
        'order'             => 'ASC',
        'tax_query'         => array( array(
            'taxonomy'  => 'story_category',
            'field'     => 'slug',
            'terms'     => array( sanitize_title( $atts['cat'] ) )
        ) )
    ) );

    if( ! $loop->have_posts() ) {
        return false;
    }

    while( $loop->have_posts() ) {
        $loop->the_post();
        echo the_title();
        echo the_content();
    }

    wp_reset_postdata();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...