我有一个[基本网格]网格,它通过一些[事件日历]事件。现在,我希望在每个项目中显示事件开始日期,但当我在网格项目中使用相关元键作为参数源时,我将获得默认日期格式。问题是我需要以一种特定的方式格式化日期,我偶然发现了这个解决方案:
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发布日期(即网格运行的地方)。
我怎样才能让它显示事件项的日期?
任何帮助将非常感激,谢谢!
---------------------------//---------------------------
工作代码(感谢@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' );