WordPress MU 2.7 betaが公開[Permanent Link]
- 2009年1月23日 23時44分
- WordPress MU | misc.
- No Comments
まだ出ないのかなと思っていたWPMUの2.7ですが、ベータ版が公開されてダウンロード可能になっています。
もうそろそろ2.7も公開されそうです。
正式版が公開されたらアップデートして、簡単にレビューなんかもしてみようかなと思います。
Cut and Try
PrintPreview
Log
maaguu.com
WordPress, WordPress MU(μ) についての話題、プラグイン作成、カスタマイズ。
まだ出ないのかなと思っていたWPMUの2.7ですが、ベータ版が公開されてダウンロード可能になっています。
もうそろそろ2.7も公開されそうです。
正式版が公開されたらアップデートして、簡単にレビューなんかもしてみようかなと思います。
全ブログを含んだサイトマップ(全記事一覧)を作ろうと思います。基本はホームに表示している各ブログの新着記事と同様で、単純に表示件数を限定していないだけです。
新着記事表示は以下をご覧ください。
まずは、投稿欄に直接コーディングするため、runPHPプラグインを入れます。page.phpに直接コードを記述するのが手っ取り早いのですが、後に他にページを使うかもしれませんのでこのようにしてみました。
と、runPHPをインストールしてみましたが使えません。ではExec-PHPをと思い、インストールしましたが、これも上手く動きません(動くらしいのですが……)。
なので、プラグインを使えるようにするのはあっさりと諦め、他の方法で行くことにしました。
「ページ」は他にも使うことを想定すると(例えばプロフィールページとか)、page.phpには、サイトマップページが表示される場合に、サイトマップ表示用のコードが呼び出されるようにする必要があります。
今回は、ページのIDがサイトマップページのIDのときにコードが実行されるようにしてみます。
ページのIDは以下の記述で取得することができますので、まずはページを作成し、page.phpに以下のコードを記述して表示させてみます。
<?php echo $post->ID; ?>
95と表示されたとしますと、サイトマップのページIDは95です。
Conditional Tags « WordPress Codexによると、is_page()を使うとページの判別ができるらしいので、サイトマップ表示用のコードを以下で囲んでみます。
if (is_page('95')) :
[...]
endif;
以下コード全文です(簡略化しています)。
<?php
if (is_page('95')) :
for ($i = 0; $i < get_blog_count() - 1; $i++) :
$blog_list = get_last_updated();
$blog_list = $blog_list[$i]['blog_id'];
if ($blog_list != 1) :
$out_blogname = get_blog_option($blog_list, 'blogname');
$output_blogs = '<h3><a href="' .
get_blog_option($blog_list, 'siteurl') . '">' .
$out_blogname .
'</a></h3>';
echo $output_blogs;
$wpdb->set_blog_id($blog_list);
query_posts("showposts=10000&post_status=publish");
?>
<ul>
<?php if (have_posts()) : while(have_posts()) : the_post();?>
<li><a href="<?=$post->guid;?>"><?=$post->post_title;?></a></li>
<?php endwhile; endif; wp_reset_query(); endif;?>
</ul>
<?php
endfor;
endif;
?>
タブ化はまだ今度。
あ、と、今気づいたのですが、サイトマップなのに、ブログエントリーだけでページとかアーカイブが入ってなかったです(^^ゞ
以下の記事の方法では、各ブログ毎の新着記事が表示されます。
これをひとまとめに日付順にソートして表示したいなあ、と思って作ってみたのがこれです。
上記の記事をRSSフィードを取得して書くこともできますので、今回はその方法でばばーっと書いてみました。ホームページでhome.phpを使っているのでしたら、home.phpに以下ののコードを記述します。一応エラーもなく表示されているようです。
<?php
include_once(ABSPATH . WPINC . '/rss.php');
//フィードのURI
$rss_arr = array(
'http://log.maaguu.com/feed/',
'http://wp.maaguu.com/feed/',
'http://pp.maaguu.com/feed/'
);
//表示件数
$num = 10;
foreach($rss_arr as $uri)
{
$rss = fetch_rss($uri);
$title = $rss->channel['title'];
$link = $rss->channel['link'];
foreach($rss->items as $item)
{
$item_title = $item['title'];
$item_link = $item['link'];
$item_date = $item['pubdate'];
$out_item_date = date('Y年n月j日', strtotime($item_date));
$out_item = '<dt>
<a href="' . $item_link . '">' . $item_title . '</a>
</dt>
<dd style="font-size:77%;">
<a href="' . $link . '">' . $title . '</a>
</dd>
<dd style="font-size:77%;">' . $out_item_date . '</dd>';
$unix_time = date('U', strtotime($item_date));
$item_arr[$unix_time] = $out_item;
}
}
//ソート
krsort($item_arr);
//出力
echo '<h2>新着' . $num . '件</h2>';
echo '<dl>';
for(reset($item_arr); $key = key($item_arr); next($item_arr))
{
echo $item_arr[$key];
++$count;
if($count === $num)
{
break;
}
}
echo '</dl>';
?>
表示はこのようになります。
