タグ別アーカイブ: WordPress

#WordPress カスタム投稿タイプとカスタム分類(タクソノミー)の使いかた、ざっとまとめ

WordPress3.0で企業サイト構築中なので色々わかったことをメモして行きます。

カスタム投稿タイプ、カスタム分類を使うにはプラグインが便利

カスタム投稿タイプカスタム分類(タクソノミー)をWordPressに追加するにはfunctions.phpにアクションフィルタを書いてもいいのだが(8割くらい書いちゃってから気づいたのだが)、すでに良いプラグインがいくつかあるのでプラグインを使うのが便利。

なかでもCMS Pressはデフォルトでパーマリンク構造を設定できるのでおすすめ。

追加した投稿タイプの新着を表示

WP_Queryを使う。Codexのカスタム投稿タイプページに実例がある。

追加した分類(タクソノミー)でソートした新着を表示

WP_Queryを使う。Codexのカスタム分類ページに実例がある。

IDやスラッグから追加した分類(タクソノミー)の情報を取得

get_term_by()関数を使えばOK。

その他、随時追加して行きます。

#WordPress マルチサイトネットワーク内の各ブログから最新の投稿1件を取得し時系列で並べる方法

2011.8.28:別サイトにて修正版をアップしました。

 

WordPress3.0以降で標準で使える様になった、複数のブログをひとつのWordPressで管理できるネットワーク機能。ネットワーク内のブログの新着記事は普通トップページに表示したいと思うので、表題の機能は需要がありそうだからテンプレートタグがあってもいいのになぁと思うのですが、見つからなかったので自作。いや、ほんとに探したらあるのかもしれないけど!

方針

functions.phpに、ネットワーク内の全ブログから最新1件の投稿を取得し、時系列で並び替える関数を用意する。表示はお好みで。

関数(functions.phpに入れるととりあえず使えます)

// $startを1以上にすると最新のn件を飛ばして取得できます
// $numで取得する件数を指定。
function get_recentposts_from_network( $start = 0, $num = 10 ) {
 $recent_posts = get_site_option("network_recentposts");

 // データが残っていない場合、60秒以上経過している場合はアップデートする
 if( is_array( $recent_posts ) ) {
 if( ( $recent_posts['time'] + 60 ) < time() ) { // cache for 60 seconds.
 $update = true;
 }
 } else {
 $update = true;
 }

 if( $update == true ) {
 unset( $recent_posts );
 // 全ブログのIDを取得
 $blogs = get_blog_list( 0,'all' );

 if( is_array( $blogs ) ) {
 reset( $blogs );
 // 各ブログの最新1件を取得する
 foreach( $blogs as $blog ) {
 switch_to_blog( $blog['blog_id'] );
 $posts = get_posts( 'numberposts=1' );
 if( $posts ) {
 foreach( $posts as $post ) {
 $recent_posts[$blog['blog_id']] = $post->post_date;
 $post_list[$blog['blog_id']] = $post;
 } // endforeach
 unset( $posts );
 } // endif ( $posts )
 restore_current_blog();
 } // endforeach
 // 投稿日時で並べ替える
 arsort( $recent_posts );
 reset( $recent_posts );
 foreach( (array) $recent_posts as $key => $details ) {
 $t[$key] = $post_list[$key];
 } // endforeach
 unset($recent_posts);
 $recent_posts = $t;
 update_site_option( "network_recentposts", $recent_posts );
 } //endif ( is_Array( $blogs ) )
 } // endif ( $update == true )

 if( $recent_posts )
 return array_slice( $recent_posts, $start, $num, true );

 return array();
}

続きを読む #WordPress マルチサイトネットワーク内の各ブログから最新の投稿1件を取得し時系列で並べる方法

#WordPress が突然更新できなくなった!(犯人はリビジョンでした)

WordPressで企業サイトを構築したクライアントから連絡。
「特定のページが突然更新できなくなった!」とのこと。

確認してみると、本当に特定のページだけが更新できません。
管理画面から編集リンクを押しても、PHPのダウンロードメッセージが表示されます(Firefoxで確認)。

PHPのエラーも表示されないので、これはサーバー側の問題だなぁと推測。
phpMyAdminで確認すると、問題のページの編集リビジョンが大量にたまっていたので、どうやらこれが問題でメモリ不足を起こしていたようです。
phpMyAdminからリビジョンを適当に削除して無事復活!

通常ブログとして運用する際は一つのページや投稿を何回も繰り返し編集することは無いかもしれませんが、企業サイトでは更新頻度の高いページがあったりしますので、保存されるリビジョンに制限を設けられるプラグインは導入必須かもしれませんね!

この用途のプラグインとしてはRevision Controlがおすすめ。リビジョン機能のオン・オフだけでなく、何世代まで残すかと言った細かい設定が可能。ページごとにも設定を細かく変更できますので、このページだけは多めに残したい!と言った要望にも対応できます 😀

WordPressの引越し(phpMyAdminでドメイン名を一括置換する)

WordPressを引越ししたり、確認用ドメインやIPアドレスから公開用のドメインに変更したい時、phpMyAdminがあればMySQLに格納されている旧ドメインを一括で新ドメインに変更できる。そのためのSQL文を毎度忘れるのでメモ。

UPDATE wp_options SET option_value=REPLACE(option_value,"旧ドメイン","新ドメイン");
UPDATE wp_posts SET post_content=REPLACE(post_content,"旧ドメイン","新ドメイン");
UPDATE wp_posts SET guid=REPLACE(guid,"旧ドメイン","新ドメイン");

とりあえず、これでうまく行ってると思う…

SQL文は全く分かってないので、保証はしません。
この書き方だとヤバくね?という場合、ご指摘いただければありがたいです :mrgreen:

2010.9.3追記

3.0から導入のwp_nav_menuを使用している場合wp_postmetaテーブルにもURLが入ることがあるので下記も追加してください。

UPDATE wp_postmeta SET meta_value=REPLACE(meta_value,"旧ドメイン","新ドメイン");

「最もダウンロードされるWordPressのプラグイン10」から抜粋

10 Most Downloaded WordPress Plugins of All Timeという記事から、WordPressのプラグインをピックアップしてご紹介します。

1位: All in One SEO Pack

当ブログはまだインストールしていませんが、受託のWordPress案件にはほぼ100%インストールしていると言って良いんじゃないかな…。titleタグとmetaタグ(description・keyword)の調整はもちろん、タグをkeywordに自動で使ってくれたり、自動でdescriptionを作ってくれたり(日本語対応が不安だが…)という機能が嬉しい。頻繁にアップデートされています。

2位: Akismet

ご存知、強力スパムブロック。説明の必要は無いかな。当ブログでインストール方法をちょこっと解説しています。

3位: Google XML Sitemaps

検索エンジンに正しくサイトを認知のに使う、XML サイトマップを自動で生成するプラグインです。SEO目的で使う機会が多いです。XMLサイトマップを手動で作ることも可能ですが、やはりサイトを更新した際、自動で反映されてほしいもの。GoogleやYahoo!、Bingに更新を通知する機能もあり、WordPress外のURLもサイトマップに含められるという優れモノ。完全日本語対応なのも嬉しいですね。

と、ここまでが3強と言ったところでしょうか。5位のContact Form7もよく使いますが、ここからは気になったプラグインを抜粋して紹介します。

続きを読む 「最もダウンロードされるWordPressのプラグイン10」から抜粋