Wordpressで記事一覧表示

Wordpressで特定のページテンプレートに記事一覧表示する場合、get_postsを使っていたのだが、
2.5系から(?)か、get_postsで取得するとcomments_popup_linkでコメントがとってこれなくなってた。

Wordpress2.4系で記事一覧取得

 <?php if (have_posts()) : ?>
 <?php $posts = get_posts(‘numberposts=5’); ?>
 <?php foreach($posts as $post) : setup_postdata($post); ?>
  <?php the_title(); ?><br />
  <?php the_content(‘ 続きを読む…&raquo; ‘); ?><br />
  <?php comments_popup_link(__(‘Comments (0)’), __(‘Comments (1)’), __(‘Comments (%)’)); ?>
 <?php endforeach; ?>
<?php endif; ?>

この方法だと、コメントが取得できない。なのでquery_postsでの代替方法をメモしておく。

Wordpress2.5以降で記事一覧取得

<?php if (have_posts()) : ?>
<?php query_posts(‘showposts=5’); ?>
<?php while(have_posts()):the_post(); ?>
<?php the_title(); ?><br />
<?php the_content(‘ 続きを読む…&raquo; ‘); ?><br />
<?php comments_popup_link(__(‘Comments (0)’), __(‘Comments (1)’), __(‘Comments (%)’)); ?>
<?php endwhile; ?>
<?php endif; ?>

※可読性をもたせるため、<?php *** ?> を連発させてます。

めでたしめでたし。

wordpressのSSLページ対応

wordpressは単にブログ用途だけじゃなくって、CMSとしてもある程度のレベルなら十分満足できるOSSだと思う。とくに2.5系?からはウィジェット機能もついてだいぶ自由度も増してきていると思う。

ただ・・・SSL対応が面倒???WP管理画面上でSSL設定とかない。「問合せフォーム」ページをSSL化したい!とかいった場合、どうやっているんだろか?SSL用にheaderやfooterテンプレートでも用意しているんだろか?でもそれはそれでナンセンスな気もする。

ということで、bloginfo(‘template_url’) とかを使わず 独自変数で絶対パスを指定することにした。

まずは・・・HTTPアクセスかHTTPSアクセスかPORT(443)から判定する関数を書く。

functions.php

function make_urls(){

$urls['template_url'] = get_bloginfo('template_url');
$urls['stylesheet_url'] = get_bloginfo('stylesheet_url');
$urls['rss2_url']     = get_bloginfo('rss2_url');
if($_SERVER['SERVER_PORT']==443){
foreach ($urls as $k => $v) {
$urls[$k] = ereg_replace("http","https",$v);
}
}
return $urls;

}

header.phpの一行目に以下を追加

<?php
$urls = make_urls();
?>

後は、既定のテンプレートタグを使わずに、以下の様しておく。

bloginfo('template_url') → echo $urls['template_url']
bloginfo('stylesheet_url') → echo $urls['stylesheet_url']
bloginfo('rss2_url') → echo $urls['rss2_url']

こうしておけば、https:// アクセスがあった場合は、絶対パスをhttp→httpsにするのでわざわざ別のSSL用テンプレートを用意する必要はないはず。
なんかもっといい方法があるのかもしれないが、そんなに時間かけてもしょうがないかなということで・・・
むしろ、他の方法をぜひ教えてほしい。