最近別のブログサイトをMTOSからWord Pressに移行しました。
Word Pressには各種他ブログシステムからの移行パスが用意されているので、かんたんなのですが、元々の各アーカイブのURLを変更せずにきっちり移行するにはそれなりに手間がかかりそうなので、まだしばらくこの「ひじきねっと」はMTOSで運用します。
で、別のブログサイトは完全に個人的な日記であるため特に検索エンジンに登録させてもいませんので、サクっと現時点の最新版であるWord Press 2.5.1に移行しました。
本エントリは移行手順とかは載っていません。移行後のWord Pressを自分勝手に改造した際の記録です。
私の日記サイトは読者は4人くらいなので、頂くコメントも数日に1個程度です。なので、トップページや月別アーカイブでも常に頂いたコメントは表示させたいと思います。
アーカイブを表示するthemeテンプレートのindex.phpはトップページ、個別、月別全て共通で呼ばれますが、そこからWord Press本体のcomments_template()を呼んでいますが、comments_template()は自分がどの画面から呼ばれたかの判定を行い、必要に応じてコメント表示処理をスキップ(return)しています。
こちらの判定処理をコメントアウトする事により、全てのページの記事にコメント表示がぶら下がります。
【wp-includes/comment-template.php】
function comments_template( $file = '/comments.php' ) {
global $wp_query, $withcomments, $post, $wpdb,
$id, $comment, $user_login, $user_ID, $user_identity;
// if ( ! (is_single() || is_page() || $withcomments) )
// return;
$req = get_option('require_name_email');
$commenter = wp_get_current_commenter();
extract($commenter, EXTR_SKIP); |
ただし、これだけですと月別一覧など複数の記事にコメントを新規に入力するフィールドが表示されてしまい、非常にうっとうしいので入力フォームだけは実際の個別アーカイブ画面だけ表示させます。
comments_template()はこのコメント一覧及び入力フィールドのデザインは、themesテンプレートのcomments.phpを実行しますので、こちらを更に修正します。
具体的には中の処理で「コメント表示処理」と「入力フィールド表示処理」の間にスキップ処理を追加します。
こちらのテンプレートは使用するテーマによって異なると思いますので、参考程度に。
【wp-content/themes/*/comments.php】
<!-- You can start editing here. -->
<?php if ($comments) : ?>
<ol class="commentlist">
<?php foreach ($comments as $comment) : ?>
【省略】
?>
<?php endforeach; /* end for each comment */ ?>
</ol>
<?php else : ?>
<?php if ('open' == $post-> comment_status) : ?>
<?php else : // comments are closed ?>
<p class="nocomments">Comments are closed.</p>
<?php endif; ?>
<?php endif; ?>
// 【追加】
<?php if ( ! (is_single() || is_page() || $withcomments) )
return; ?>
<?php if ('open' == $post-> comment_status) : ?>
<h3 id="respond">コメントしてね</h3>
<?php if ( get_option('comment_registration') && !$user_ID ) : ?>
|
トップページは日付の新しい順で表示したいのですが、月別アーカイブに関しては古い順で表示した方が日記サイトとしては都合が良いのでいろいろ調べたのですが、、、。
一応以下の修正で実現できたのですが、正直深いところをパチりすぎという感じがします。きっともっとシンプルに引数とかで設定できるのだろうと思いますが、今回初めてPHPをさわったので脳みそがついてこれません(笑)
【wp-includes/query.php】
function &get_posts() {
global $wpdb, $user_ID;
【省略】
if ( $q['year'] ){
$where .= " AND YEAR($wpdb->posts.post_date)='" . $q['year'] . "'";
$q['order'] = 'ASC';
} |
たくさん指摘していただけると勉強になります。
投稿者 yotan : 2008年6月10日 14:09| トラックバック(0)※コメント内にURLを書くとSPAM扱いとなります。2ch風に表記はOKです


