すみません。今はこのように書いています。これをテンプレートとして、表示したいページで読み込んでいます。
パーマリンクの設定を /%year%/%category%/%postname%/ としているから、
これでは無理なのでしょうか。
<?php
/*
Template Name: Category_Event
*/
get_header(); ?>
<div id="main">
<?php
global $wpdb;
$query = "
SELECT count(*)
FROM $wpdb->postmeta AS pm, $wpdb->posts p
WHERE p.ID = pm.post_id
AND pm.meta_key = '_EventStartDate'
AND pm.meta_value <= CURRENT_TIMESTAMP( 0 )
ORDER BY pm.meta_value DESC
";
// sql実行
$reccnt = $wpdb->get_var($wpdb->prepare($query));
//取り出す最大レコード数
$lim = 5;
//最初と最後のページ番号を定義
$first = 1;
$last = ceil($reccnt / $lim);
//表示するページ位置を取得
$p = intval($_GET['p']);
if ($p < $first) {
$p = $first;
}
elseif ($p > $last) {
$p = $last;
}
//表示するレコード位置を取得
$st = ($p - 1) * $lim;
//前後のページ移動数と表示数
$page = 3;
//前後$pageページ移動した際のページ番号を取得
$prev = $p - $page;
$next = $p + $page;
//前後1ページ移動した際のページ番号を取得
$prev1 = $p - 1;
$next1 = $p + 1;
//SELECTコマンドを実行して、$stレコード目から$lim件の各データを取得し、大きい順に並べる
$query = "SELECT pm.meta_value,p.post_title,p.ID"
. " FROM wp_postmeta AS pm, wp_posts p"
. " WHERE p.ID = pm.post_id"
. " AND pm.meta_key = '_EventStartDate'"
. " AND pm.meta_value <= CURRENT_TIMESTAMP( 0 )"
. " ORDER BY pm.meta_value DESC"
. " LIMIT $st, $lim"
;
$posts_per_page = 5;
// sql実行
$terms = $wpdb->get_results($query);
// sqlのデータを処理
foreach ($terms as $value){
?>
<?php echo the_event_start_date($value->ID); ?> <a href="<?php echo get_permalink($value->ID); ?>"><?php echo $value->post_title; ?></a>
<?php echo get_the_post_thumbnail($value->ID, 'thumbnail'); ?>
<?php
}
//ページ移動リンクの組み立て
//1ページ前のページ
if ($p > 1) {
echo "<font size='1'><a href='./?p=$prev1'>></a></font> ";
}
//各ページ番号への移動リンクを表示
for ($cnt = $p - $page; $cnt <= $last; $cnt++) {
if ($cnt < 1) {
$cnt = 1;
}
$pageno = "<font size='1'><a href='./?p=$cnt'>$cnt</a></font> ";
//表示番号を指定数に区切る
//ページ番号と現在のページが同一の場合は
//リンク無しにする
if ($cnt <= $p + $page) {
if ($cnt == $p) {
$pageno = "<font size='1'>$p</font> ";
}
echo $pageno;
}
}
//
//1ページ後のページ
if (($next1 - 1) * $lim < $reccnt) {
echo "<font size='1'><a href='./?p=$next1'>></a></font> ";
}
echo "<br>";
//最初のページへ移動
if ($p > 1) {
echo "<font size='1'><a href='./?p=$first'>最初</a></font> ";
}
//前の$pageページへ移動
if ($p > $page) {
// << を $page"."ページ戻る にする事もできる
echo "<font size='1'><a href='./?p=$prev'><<</a></font> ";
}
//次の$pageページへ移動
if (($next - 1) * $lim < $reccnt) {
// >> を $page"."ページ進む にする事もできる
echo "<font size='1'><a href='./?p=$next'>>></a></font> ";
}
//最後のページへ移動
if ($p < $last) {
echo "<font size='1'><a href='./?p=$last'>最後</a></font> ";
}
?>
</div><!-- End: main -->
<?php get_footer(); ?>
思いあまってこちらにも投稿してしまいまして、LVP8さんが助けて下さいました。
http://ja.forums.wordpress.org/topic/5416?replies=8#post-22475
こちらの内容で実現できました。
<?php
/*
Template Name: Category_Event
*/
get_header(); ?>
<div id="main">
<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$posts_per_page = (get_query_var('posts_per_page')) ? get_query_var('posts_per_page') : get_option('posts_per_page');
$currentTime = date('Y-m-d H:i:s', time()+32400);
query_posts(array(
'posts_per_page' => $posts_per_page,
'meta_key' => '_EventStartDate',
'meta_compare' => '<=',
'meta_value' => $currentTime,
'orderby' => 'meta_value',
'order' => 'DESC',
'paged' => $paged
));
while ( have_posts() ) : the_post();
?>
<?php echo get_post_meta($post->ID, '_EventStartDate', true); ?>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
<?php echo get_the_post_thumbnail($post->ID, 'thumbnail'); ?>
<?php endwhile; ?>
</div>
<?php
if(function_exists('wp_pagenavi')) { wp_pagenavi(); }
wp_reset_query();
?>
<?php get_footer(); ?>
最近、このプラグインを使い始めてここにたどり着きました。
argsに「 ‘post_type’=>array(TribeEvents::POSTTYPE),」がないと動かないという点以外は動きました〜。いいですね、これ。
ついでに、Shortcode Exec PHP プラグインを使って、これをショートコードにできるようにしてみました。
– http://kitaney.jp/~kitani/tools/wordpress/code_with_shortcode_exec_php_plugin_ja.html#7
にソース載せておきます。