Wordpress插件活动日历 - 列出一年的所有活动

时间:2015-03-04 16:13:13

标签: php wordpress list plugins

我一直在努力(我是一个新手)如何让事件日历打印出指定年份内所有事件的列表。我在网上大量研究了这种需求,我对这个问题的信息有限感到惊讶。这个清单真的很简单。它只需要是一个链接标题,将用户发送到实际的事件页面。

我的方法是在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.

}
}

我有两个问题。

  1. 当我有超过80枚标记时,为什么循环只显示九个标题 2014年?
  2. 如何使每一行成为日历事件实际事件的链接 页?我试图运用它而没有运气。
  3. 感谢您提供任何帮助。

1 个答案:

答案 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);