WordPress事件短代码不显示消息时,没有帖子可用

xxb16uws  于 2023-03-01  发布在  WordPress
关注(0)|答案(1)|浏览(119)

我创建了一个短代码,它显示了一个名为“事件”的自定义帖子类型中的任何帖子。
一切都运行良好,但我希望它显示一条消息,如果没有职位是可用的。我已经尝试了一些东西试图纳入,但它只是导致一个错误。
我尝试了这个(见下文),但它没有显示消息“* 没有事件列出在这个时候...”只是一个空白页。
关于使用什么样的正确代码有什么建议吗?

add_shortcode('events', 'Events');
    function events($atts){

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

    $categories  = explode(',' , $atts['category']);

$args = array(
        'post_type'     => 'event',
        'post_status'   => 'publish',
        'meta_key'      => 'event_date',
        'orderby'       => 'meta_value_num',
        'order'         => 'ASC',
        'posts_per_page'=> -1,
        'tax_query'     => array( array(
                            'taxonomy'  => 'category',
                            'field'    => 'slug',
                            'operator' => 'AND',
                            'terms'     => $categories
                        ) )
    );

ob_start();

$my_query = new WP_Query( $args );
if( $my_query->have_posts() ) {
    ?>

        <?php
        while ($my_query->have_posts()) : $my_query->the_post(); ?>

        <div><?php the_title(); ?></div>
        <div><?php the_content(); ?></div>

        
    <?php endwhile; ?>
    <p>* no events listed at this time...</p>
    <?php wp_reset_query(); ?>

    <?php 
}

$retVal = ob_get_contents();
ob_end_clean();

return $retVal;
    }
pftdvrlh

pftdvrlh1#

我已经检查了你的代码是不正确的。
请使用以下代码。

<?php

add_shortcode( 'events', 'callback_function_name' );

function callback_function_name( $atts, $shrt_content = null ) {

    // Shortcode Parameter
    $atts = shortcode_atts(array(
        'category' => ''
    ), $atts, 'events');

    $categories  = ! empty( $atts['category'] ) ? explode( ',' , $atts['category'] ) : '';

    extract( $atts );

    // Query args
    $query_args = array(
            'post_type'         => 'event',
            'post_status'       => 'publish',
            'meta_key'          => 'event_date',
            'orderby'           => 'meta_value_num',
            'order'             => 'ASC',
            'posts_per_page'    => -1,
            'tax_query'         => array( array(
                                    'taxonomy'  => 'category',
                                    'field'     => 'slug',
                                    'operator'  => 'AND',
                                    'terms'     => $categories
                                ) )
        );

    // WP Query for Events
    $post_query = new WP_Query( $query_args );

    ob_start();

    // If post is there
    if ( $post_query->have_posts() ) {

        while ( $post_query->have_posts() ) : $post_query->the_post(); ?>

            <div><?php the_title(); ?></div>
            <div><?php the_content(); ?></div>

        <?php endwhile;

    } else { ?>

        <p>* no events listed at this time...</p>

    <?php }

    wp_reset_postdata(); // Reset WP Query

    $content .= ob_get_clean();
    return $content;
}

相关问题