获取事件的开始日期,对其进行格式化,然后使用简码显示

Get start date of event, format it and then display it with a shortcode

我有一个 [essential grid] 网格,其中包含一些 [the events calendar] 事件。现在在每个项目中,我想显示事件开始日期,但是当我使用相关元键作为网格项目中的参数源时,我会恢复默认日期格式。事情是我需要以特定方式格式化该日期,我偶然发现了这个解决方案:

function tribe_start_date_shortcode() {
    global $post;
    return tribe_get_start_date( $post->ID, false, 'F j, Y' );
}

add_shortcode('tribe-start-date', 'tribe_start_date_shortcode');

现在,当我在我需要的地方使用简码时,日期确实格式化得很好,但问题是我得到的不是事件开始日期,而是当前的 WordPress post 日期(即网格是运行)。

如何让它显示活动项目的日期?

非常感谢任何帮助,谢谢!

------------------------//---------------- ----------

工作代码(感谢@Howard E):

// Get post id through the shortcode and return formatted date
function tribe_start_date_shortcode( $atts ) {
    $atts = shortcode_atts(array('event' => ''), $atts, 'tribe-start-date');
    return tribe_get_start_date( absint( $atts['event'] ), false, 'F j, Y' );
}

// Wordpress shortcode register
add_shortcode('tribe-start-date', 'tribe_start_date_shortcode');

// Place the above in your theme's functions.php

// Actual shortcode to be placed within the Essential Grid Item Skin relevant layer
[tribe-start-date event=%post_id%]

您可以将事件 ID 传递给简码。全局 $post 不会在短代码函数内检索 post 对象。

像这样使用简码

[tribe-start-date event=123]

function tribe_start_date_shortcode( $atts ) {
    $atts = shortcode_atts(
        array(
            'event' => '',
        ),
        $atts,
        'tribe-start-date',
    );
    return tribe_get_start_date( absint( $atts['event'] ), false, 'F j, Y' );
}
add_shortcode( 'tribe-start-date', 'tribe_start_date_shortcode' );