如何按可变日期取自定义邮寄类型?

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

我正在为一位DJ设计一个网站,这个网站的主要功能之一就是组织他即将举行的活动。

我使用一些js创建了一个显示未来7天的表,最左边的框总是以这种格式显示今天的日期:“星期四12月1日”

我想获取所有“事件”(来自我制作的自定义帖子类型),并将它们放在表中正确的位置。

理想情况下,我可以为表中的每个div(每个工作日)使用一个短代码来获取当天的事件。

以下是我到目前为止一直在尝试获取今天的“事件”的内容——它可以分块工作,但一起失败。它还显示了一个我删除的事件-我注意到如果我删除$the\\u query->the\\u post();它将显示当前事件,但也会无限循环。我试图只显示今天的活动也没有用,它显示不出任何内容,而这包括在内(虽然我觉得我很接近?)

// Add Shortcode
function custom_shortcode() {

    $today = getdate();
    $query = new WP_Query( \'year=\' . $today[\'year\'] . \'&monthnum=\' . $today[\'mon\'] . \'&day=\' . $today[\'mday\'] );
        // The Query
        $the_query = new WP_Query($args = array(
                \'post_type\' => \'events\',
                \'post_status\' => \'publish\',
                \'meta_query\' => array(
            array(
                \'key\'     => \'event_time\',
                \'value\'   => \'$today\',
                )
            )

            ) );

        // The Loop
        if ( $the_query->have_posts() ) {
            echo \'<ul>\';
            while ( $the_query->have_posts() ) {
                $the_query->the_post();
                echo "<div>";
                echo get_field(\'event_name\') , "<br>";
            echo \'<img class="myimage" style="max-width:180px;" src=\',get_field(\'event_image\') , ">" ;
            echo " <br>";
            echo \'<div class="time">\' , get_field(\'event_date_time\') , "</div>" , "<br>";
            echo get_field(\'buy_ticket_button\') , "<br>";
            echo "</div>";

            }


        }



}
add_shortcode( \'geteventname\', \'custom_shortcode\' );
编辑:我已经用Return替换了echo,非常感谢您的见解。

1 个回复
SO网友:Rarst

首先,我假设您将事件日期正确地存储在自定义字段中。本机WP发布后的日期实际上并不适用于将来的事件,因为将来的日期用于调度功能并使帖子非公开。

从那以后,只需将适当的get_posts()/WP_Query 检索集合。

现代WP版本非常精致meta queries, 包括对MySQL的日期和日期时间格式的支持(尽管我强烈建议在内部将时间存储为unix时间戳)。

相关推荐

如何在Functions.php中链接style.css

我是WordPress的新手;我刚开始学习WordPress。我想把风格联系起来。函数中的css。php,但我无法解决这里可能存在的问题。谁能给我指出正确的方向吗?指数php<?php get_header(); ?> <?php if ( have_posts() ) { while ( have_posts() ) { the_post();