WordPress maaguu (^^; com 北海道札幌でホームページ制作を楽しむ

WordPress, WordPress MU(μ) についての話題、プラグイン作成、カスタマイズ。

WordPress MUで全てのブログを統合したサイトマップを作る #1

全ブログを含んだサイトマップ(全記事一覧)を作ろうと思います。基本はホームに表示している各ブログの新着記事と同様で、単純に表示件数を限定していないだけです。

新着記事表示は以下をご覧ください。

指針
ページの投稿欄に直接コーディングする
PHPコードはエスケープされますので、プラグインを使おうと思います。
タブによるインターフェイスにする
ページが縦に長大になってしまいそうなので、タブで表現しようと思います。

まずは、投稿欄に直接コーディングするため、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;
?>

タブ化はまだ今度。

あ、と、今気づいたのですが、サイトマップなのに、ブログエントリーだけでページとかアーカイブが入ってなかったです(^^ゞ

ポイントを現金でキャッシュバック

コメントを残す


※入力必須

※入力必須
Email to maaguu:info@mx.maaguu.com Powered by WordPress MU Clicky Web Analytics