ジャンル別」カテゴリーアーカイブ

WordPress でサムネイルがある記事だけ表示する方法

「WordPress でサムネイルが存在する記事だけ一覧で表示したい」という相談を受けました。

普通に考えると以下のように has_post_thumbnail() を使って条件分岐すれば良さそうですが、これだと1ページに表示される記事数がバラバラになってしまいます。
また、ページネーションも上手く行きません。
(サムネイルが無い記事もページネーションの対象になってしまい、空白ページができてしまう)

<?php if(have_posts()): while(have_posts()): the_post(); ?>
<?php if ( has_post_thumbnail() ) {?>
--内容--
<?php } ?>
<?php endwhile; endif; ?>

こんな時は posts_where フィルターフックを使って、投稿を取得する際の条件文を変更してやりましょう。
続きを読む

Commenters Info

Commenters Info 0.6.6 リリース

Commenters Infoコメントを投稿してくれた人の情報をアイコンで視覚化したり、統計情報を表示したりすることのできる WordPress プラグイン Commenters Info の Ver.0.6.6 をリリースしました。
WordPress > Commenters Info « WordPress Plugins

今回の修正は、以下の2つ

  • Windows Phone からの投稿も判別するようにしました。
  • ブラウザ判別用のコードをちょっぴり書き直しました。

Windows Phone から投稿すると、赤い Windows ロゴが表示されますよ。
続きを読む

WordCamp Kobe

最近の WordPress 関係の話題

WordPress 関連の興味深いプラグインやら、イベントやらなにやら。
と言っても、私の周辺での話題ですが。

続きを読む

WordPress に OAuth プロバイダを実装する

WordPress に OAuth プロバイダ機能を追加するプラグインを作ってます。
とりあえずβ版ができたので、こちらで紹介しておきます。

現在、このプラグインでできることは。

  • アプリケーションの登録 (Consumer キーの取得)
  • Access トークンの発行
  • 発行された Consumer キー, Access トークンを使用して接続後に実行するメソッドを登録する
  • 発行された Consumer キー, Access トークンを使用して接続し、登録されたメソッドを実行して JSON データを返す

になります。

ダウンロード: WordPress > OAuth Provider « WordPress Plugins
一応 OAuth version 1.0 に対応しているので、既存の OAuth クライアントライブラリから制御できるはず。
以下、使い方。
続きを読む

Nginx ドキュメントの和訳

ハイパフォーマンスHTTPサーバ Nginx入門ありがたいことにたいさんが、Nginx のドキュメントを次々と和訳してくれています。
「ある程度量がまとまったら nginx の中の方に連絡をとって nginx サイトに入れてもらいたいと考えて」いるとのこと。
私も、技術用語とか言い回しのチェックをさせていただきました。

現在、和訳終わった分については以下の URL で参照できます。

Nginx + lsyncd で WordPress を負荷分散させる

ハイパフォーマンスHTTPサーバ Nginx入門最近、め組ことデジタルキューブさんと、一緒に仕事をやらせてもらってます。
今の所は、主に WordPress サイトの高速化とかやってるんですけど、その中で WordPress サイトを複数台のサーバで負荷分散させて高速化させる案件があったので、その時の作業内容をシェア。
最近はさくらの VPS とか、低価格の VPS が出てきてるので、個人でも手を出せる領域かもしれませんね。
今回は2台のサーバを使って PHP の処理を負荷分散しました。

構成は、こんな感じです。

  • プライマリサーバ ( vps1.example.com : 192.168.0.1 )
     

    • Nginx, Load Balancer、PHP FastCGI のアプリケーションサーバ
    • lsyncd (リアルタイム rsync を実現するためのサービス)
  • セカンダリサーバ ( vps2.example.com : 192.168.0.2 )
     

    • Nginx, PHP FastCGI のアプリケーションサーバ
    • MySQL
    • rsyncd

※ 説明のため IP アドレスはローカルアドレスに設定していますが、実際にはグローバルアドレスを使用しています。
ブラウザからの要求は、すべてプライマリサーバ ( vps1.example.com ) が受け取り、PHP の処理を二台のサーバに分散させます。
もちろん、処理が重くなってきたら、3台目、4台目 と追加していくことが可能です。
続きを読む

Blackbird Pie の吐き出す HTML を修正する

WordPress に簡単に Twitter のツイートを表示する Twitter Blackbird Pie というプラグインがあります。
このプラグイン、ショートコードで簡単にツイートを表示できて便利なんですが、吐き出す HTML がちょっとアレな感じです。

Blackbird Pie は、こんな感じの HTML を吐き出します。

<!-- tweet id : 87798635173130240 -->
<style type="text/css">
	#bbpBox_87798635173130240 a { text-decoration:none; color:#0084B4; }
	#bbpBox_87798635173130240 a:hover { text-decoration:underline; }
</style>
<div id="bbpBox_87798635173130240" class="bbpBox" style="padding: 20px; margin: 5px 0pt; background-color: rgb(192, 222, 237); background-image: url(&quot;http://a3.twimg.com/profile_background_images/53527310/gundam.jpg&quot;);">
	<div style="background: none repeat scroll 0% 0% rgb(255, 255, 255); padding: 10px; margin: 0pt; min-height: 48px; color: rgb(51, 51, 51); border-radius: 5px 5px 5px 5px;">
		<span style="width: 100%; font-size: 18px; line-height: 22px;">Blackbird Pie の WordPress プラグインが吐き出す HTML が、ちょっとアレなので修正した。後でブログに書く。
		<div class="bbp-actions" style="font-size: 12px; width: 100%; padding: 5px 0pt; margin: 0pt 0pt 10px; border-bottom: 1px solid rgb(230, 230, 230);">
			<img src="http://example.com/wp-content/plugins/twitter-blackbird-pie/images/bird.png" align="middle"/><a title="tweeted on 2011年7月4日 17:23" href="http://twitter.com/#%21/wokamoto/status/87798635173130240" target="_blank">2011年7月4日 17:23</a> via <a href="http://ubersocial.com" rel="nofollow" target="blank">UberSocial for BlackBerry</a><a href="https://twitter.com/intent/tweet?in_reply_to=87798635173130240" class="bbp-action bbp-reply-action" title="Reply"><span><em style="margin-left: 1em;"></em><strong>Reply</strong></span></a><a href="https://twitter.com/intent/retweet?tweet_id=87798635173130240" class="bbp-action bbp-retweet-action" title="Retweet"><span><em style="margin-left: 1em;"></em><strong>Retweet</strong></span></a><a href="https://twitter.com/intent/favorite?tweet_id=87798635173130240" class="bbp-action bbp-favorite-action" title="Favorite"><span><em style="margin-left: 1em;"></em><strong>Favorite</strong></span></a></div><div style="float: left; padding: 0pt; margin: 0pt;">
			<a href="http://twitter.com/intent/user?screen_name=wokamoto"><img style="width: 48px; height: 48px; padding-right: 7px; border: medium none; background: none repeat scroll 0% 0% transparent; margin: 0pt;" src="http://a2.twimg.com/profile_images/1357232956/wo_glasses_normal.png"/></a>
		</div>
		<div style="float: left; padding: 0pt; margin: 0pt;"><a style="font-weight: bold;" href="http://twitter.com/intent/user?screen_name=wokamoto">@wokamoto</a><div style="margin: 0pt; padding-top: 2px;">wokamoto</div></div>
		<div style="clear: both;"></div>
	</span></div>
</div>
<!-- end of tweet -->

注意: 構造が分かり易いように改行・インデント入れてます。

何がよろしくないかと言うと2〜5行目なんですが、ハレンチにも <head> 外に <style> タグを吐き出しちゃってます。
まぁ、個別のツイートでリンクの色とか変えたいと思うと、これしか方法が無いと思っちゃったのはしょうがないんですが
続きを読む

どうしても同梱のjQueryが呼び出されてしまいます。今回、ContactForm7がWP同梱のものより上位のjQueryで動くか試そうと思ったところ、こういうことになってしまい…

WordPress 同梱の jQuery 以外を使う方法

どうしても同梱のjQueryが呼び出されてしまいます。今回、ContactForm7がWP同梱のものより上位のjQueryで動くか試そうと思ったところ、こういうことになってしまいTwitter で @mokeco_ さんから「WP関連で質問があります。jQueryをWP同梱のものではなく、google等から引っ張ってきたいと思い、wokamotoさんのサイト http://bit.ly/iiBu1R や http://bit.ly/dYfu1e などを参考にしましたが、どうしても同梱のjQueryが呼び出されてしまいます。今回、ContactForm7がWP同梱のものより上位のjQueryで動くか試そうと思ったところ、こういうことになってしまいお手数ですが解決法を教えていただけると幸いです。宜しくお願いします。」という質問があったので、それに対する回答。

WordPress には、wp_enqueue_script という仕組みがあり jQuery 等の JavaScript ライブラリを簡単に読み込ませることができます。
ただし、同梱されている jQuery 以外の他の jQuery (例えば Google Libraries API 上の jQuery) を読み込ませようとする場合、これらのデフォルトライブラリは wp_register_script() ですでに登録されているため、一度 wp_deregister_script() してから wp_enqueue_script() してやる必要があります。
# デフォルトで読み込まれる JavaScript ライブラリとそのバージョンは wp-includes/script-loader.php 辺りを眺めればわかるので、興味の有る方はソースを眺めてみてください。
続きを読む

プラグインリスト

WordPress Plugin 作者に覚えておいて欲しいこと

プラグインリストWordPress を日本語環境で使用している時、インストールされている WordPress プラグインをダッシュボードで見ると、プラグインの説明のところが日本語表記・英語表記が混在してることがあります。
この説明欄に表示されるのは、プラグインの主たる PHP ファイルの先頭に含まれた標準プラグイン情報ヘッダーの「Description:」という行に書かれた情報です。
プラグインの作成 – WordPress Codex 日本語版

この「Description」行に日本語書いておけば日本語で説明が表示されるんですが、それだと他言語の環境で使ってもらえないプラグインが出来上がってしまいます。
ところで WordPress では gettext を使用して他言語対応しています。
これは、標準プラグイン情報ヘッダーでは適用できないのでしょうか?
続きを読む

WordPress Editor

WordPress のエディタから、不要なメディアボタンを削除する

WordPress EditorWordPress を、マルチサイト版で利用している場合、エディタ上部に表示されているメディアボタンの表示・非表示はオプションで設定できます。
しかし、シングルサイト版で使用している場合は、これらを制御することはできません。
シングルサイト版でも、制御することは不可能なんでしょうか?

実は media_buttons アクションフックを使用することで、実現可能です。
続きを読む