无法在短码中正确地将EndWhile放置在循环中

时间:2016-12-03 作者:Rosenbruger

我很难将endwhile放在一个快捷码中的正确位置,我是用来从自定义帖子类型中获取数据的。

我将ACF(高级自定义字段)用于自定义字段。

到目前为止,代码还不能完全正常工作,我怀疑这与没有“endwhile”、“endif”或“wp\\u reset\\u query()”有关(尽管我对php不熟悉)。

以下是我的短代码:

// Add Shortcode
function custom_shortcode() {

    // find todays date
    $date = date(\'Ymd\');

    // args
    $args = array(
        \'post_type\'     => \'events\',
        \'meta_key\'      => \'event_date\',
        \'meta_value\'    => \'$date\'
    );


    // query
    $the_query = new WP_Query( $args );

            // The Loop
            if ( $the_query->have_posts() ) {

                $out .= \'<ul>\';
                while ( $the_query->have_posts() ) {
                    $the_query->the_post();
                    $out .= "<div>";
                    $out .= get_field(\'event_name\') . "<br>";
                $out .=\'<img class="myimage" style="max-width:180px;" src=\'. get_field(\'event_image\') . ">" ;
                $out .= " <br>";
                $out .= \'<div class="date">\' . get_field(\'event_date\') . "</div>" . "<br>";
                $out .= \'<div class="time">\' . get_field(\'event_time\') . "</div>" ;
                $out .= get_field(\'buy_ticket_button\') . "<br>";
                $out .= "</div>";

                }


            }
           return $out;

}
add_shortcode( \'todaysevent\', \'custom_shortcode\' );

1 个回复
最合适的回答,由SO网友:Rosenbruger 整理而成

所以我花了大约5个小时试图弄明白为什么我的代码看起来很正常,但没有给我想要的行为。感谢优秀的评论员,我能够在没有指定event\\u日期的情况下显示当前帖子,但无法按日期获取帖子。

我开始跳出框框思考,了解到它显示的是“今天”的活动,但服务器的时区在另一个国家,所以对我来说,这是明天的活动。我指定了默认时区,它工作得很好!

下面是我用来获取自定义帖子类型“event”的快捷码,根据哪些帖子的自定义字段“event\\u date”值为todays date

// Add Shortcode
function custom_shortcode() {

date_default_timezone_set("America/New_York");

// find todays date
$today = date("Ymd");


  // args
    $args = array(
        \'post_type\'     => \'event\',
        \'meta_key\'      => \'event_date\',
        \'meta_value\'    => $today
    );



    // query
    $the_query = new WP_Query( $args );


            // The Loop
            if ( $the_query->have_posts() ) {

                $out .= \'<ul>\';
                while ( $the_query->have_posts() ) {
                    $the_query->the_post();
                    $out .= "<div>";
                    $out .= get_field(\'event_name\') . "<br>"; 
                    $out .=\'<img class="myimage" style="max-width:180px;" src="\'. get_field(\'event_image\') . \'">\' ;
                    $out .= " <br>";
                    $out .= \'<div class="date">\' . get_field(\'event_date\') . "</div>" . "<br>";
                    $out .= \'<div class="time">\' . get_field(\'event_time\') . "</div>" ;
                    $out .= get_field(\'buy_ticket_button\') . "<br>";
                    $out .= "</div>";

                }

            wp_reset_postdata();
            }

           return $out;

}
add_shortcode( \'todaysevent\', \'custom_shortcode\' );

相关推荐

SHORTCODE_ATTS()中的$ATTS参数是什么?

这个WordPress developers reference page for shortcode_atts() 国家:$atts(array)(必选)用户在shortcode标记中定义的属性。但我不理解这个定义。例如,在WP Frontend Profile 插件:$atts = shortcode_atts( [ \'role\' => \'\', ], $atts ); 据我所知,shortcode\