我一直在努力(我是一个新手)如何让事件日历打印出指定年份内所有事件的列表。我在网上大量研究了这种需求,我对这个问题的信息有限感到惊讶。这个清单真的很简单。它只需要是一个链接标题,将用户发送到实际的事件页面。
我的方法是在functions.php中创建一个自定义[shortcode],这样我就可以将列表放在我需要的任何WordPress页面或帖子上。
自定义短代码PHP如下。
add_shortcode('yearList', 'yearList');
function sayHello()
{
echo '<h1>Hello World</h1>';
}
我将它添加到Genesis子主题根目录下的functions.php文件中。文本回应得很好,因此这部分很好。
在研究了Modern Tribe的论坛后,我遇到了一个有用的页面,它回顾了tribe_get_events函数。 Here's the page for those wondering。
无论如何,这个页面中的代码让我很接近,所以我知道我在正确的轨道上。 我在创建的短代码函数中使用的PHP如下所示。
// Setting up custom function called yearList
add_shortcode('yearList', 'yearList');
function yearList()
{
// Ensure the global $post variable is in scope
global $post;
// Retrieve all events desired year. Only eight printed out of 80.
$events = tribe_get_events( array(
'eventDisplay' => 'custom',
'start_date' => '2014-01-01 00:01',
'end_date' => '2014-12-31 23:59'
) );
// Loop through the events: set up each one as
// the current post then use template tags to
// display the title and content
foreach ( $events as $post ) {
setup_postdata( $post );
// prints the title for each event.
echo '<br><br>';
// WRONG WRONG - This is below is what's throwing me.
echo '<a href="<?php echo tribe_get_event_link() ?>" title="<?php the_title() ?>"></a>';
//the_title();
// echo tribe_get_start_date(); This shows the start date and time after the event title I slept this for now.
}
}
我有两个问题。
感谢您提供任何帮助。
答案 0 :(得分:2)
对于第一个问题,请尝试在posts_per_page => -1
语句中添加$events = tribe_get_events( array( ... );
。默认限制必须在某处设置为9个帖子。如果这不起作用,请尝试用大号替换-1
。
对于输出问题,您无法在php中echo
echo
。试试这个:
$ev_link = tribe_get_event_link();
$ev_title = get_the_title();
printf('<a href="%1$s" title="%2$s">%2$s</a>', $ev_link, $ev_title);