タグ

ブックマーク / www.warna.info (17)

  • WordPressのTransients APIを用いて表示の高速化を図る – Simple Colors

    ポータル的なサイトの場合、トップページの情報掲載量が多く処理が重くなりがちですよね。こんなときの対策として、WP Super Cache や W3 Total Cache などのキャッシュプラグインを利用することも1つの手ではありますが、ランダムな表示箇所があったり、カウンターの表示があったり、ログイン処理があったりなどなど、すんなりとキャッシュでは解決できない場合も出てきたりします。 こんな場合は、Transients API を用いて取得結果のデータをキャッシュとして保持する方法があります。 Transients API は、通常 options テーブルにデータを保存しますが、オブジェクトキャッシュを利用している場合は、そちらを利用し高速に動作します。 また、有効期限を指定しない場合は、キャッシュの更新・破棄を行わない限り永久的なキャッシュとして動作します。(注:ただし、この手法は推

  • 投稿の個別ページのみパーマリンクを変更する方法 – Simple Colors

    WordPress で投稿のURLは、 /article/%postname%/ とか /blog/%post_id%/ にしたいけど、パーマリンク設定で article や blog といったディレクトリを入れてしまうと、カテゴリーやアーカイブの表示でも、このディレクトリが付いてしまってかっこ悪いですよね。 今回は、このちょっとしたモヤモヤを解消するべく、投稿の詳細表示の時のみ特定のディレクトリを追加する方法を紹介します。 投稿詳細ページのパーマリンクを変えるには、リンクを出力する時と、アクセスされた際に条件を判定するリライトルールの作成時の二箇所にフックをする必要があります。 前者は、pre_post_link と言うフィルターフックを利用します。このフィルターフックは、get_permalink 関数内に存在し、パーマリンク設定の内容をフィルタリングすることができます。ここで、ディレ

  • WordPressでフィード配信を完璧に止める方法 – Simple Colors

    案件によっては、フィードの内容から、逆に不要な情報が流れてしまい、読めないようにしてしまいたい場合もあります。 そのような場合に、フィードの配信を止めてしまう方法を紹介します。 htmlのソースからフィード関連のlink要素を削除する CODE 1 remove_filter( 'wp_head', 'feed_links', 2 ); remove_filter( 'wp_head', 'feed_links_extra', 3 ); head内のフィードURLを出力しているlink要素を削除するには、CODE 1でwp_head への2つのフックを停止させます。(feed_linksは、ブログ全てとコメントのフィード、feed_links_extraは、カテゴリーや投稿など条件に応じたフィードのlink要素を出力します。また、rsd_linkを削除している記事もありますが、これはxml

  • 順序をサポートしたカスタム投稿タイプのデフォルト表示順を変更してみる – Simple Colors

    カスタム投稿タイプを利用する際に、register post type の has_archiveパラメータを true とすると、投稿タイプのアーカイブ(一覧)表示を行うことができるようになります。 ただし、表示順については設定や入力にかかわらず公開日順になってしまうため、page-attributes をサポートして順序の入力を可能にしていても、表示に反映されることがありません。 今回は、この投稿タイプアーカイブの表示の際に、page-attributes がサポートされていれば、自動的に順序(menu_order)順に従って表示されるようにしてみましょう。 CODE 1では、記事を取得する直前の pre_get_posts にフックしてクエリーの条件を書き換える処理を行っています。ただし、条件指定がされていた場合は、上書きせずに指定値をそのまま利用するため、固定ページ同様に管理画面な

  • WordPress を扱う上で憶えておいて欲しい3つのesc #wacja2012 – Simple Colors

    わんばんこ。2012 WordPress アドベントカレンダーの3日目をむゆうさん( @anticyborg )と共に担当させていただきます。当は、アドベントよりおべんt(以下略 WordPress で実現系のコードを紹介する記事は、よく目にしますし、セキュリティに関する関心も高いようですが、意外に基的な所が抜け落ちているケースが多いように感じたので、テーマやプラグイン開発時に憶えておいて欲しい WordPress 関数、esc_html、esc_attr、esc_url について、つらつらと書いてみたいと思います。 この esc_ なんちゃらは、WordPress 2.8 から導入された関数で、それ以前のバージョンでは、wp_specialchars、attribute_escape、clean_urlと様々な名称であったものが、(おそらくは憶えやすいように)統一的な関数名に改名され

  • プロフィール画像をアップロードできるプラグイン Ps User Profile Image – Simple Colors

    前回の「WordPressのユーザー管理画面カスタマイズまとめ」で分かったことを元に、ユーザー編集画面からプロフィール画像をアップロード出来るプラグインを作ってみました。 ご覧のようにプラグインを有効化すると、ユーザーの編集画面にプロフィール画像の項目が追加され、画像をアップロードすることが出来るようになります。 まだ、設定画面などもありませんし、多言語もしていませんが、是非お試しください。 ダウンロード:Ps User Profile Image 仕様など ユーザーの管理画面からプロフィール画像をアップロードすることができます。 デフォルトでは、thumbnail、standard、bigの3種類の画像が生成されます。 サイズや種類を変更したい場合は、プラグインファイル ps-user-profile-image.php の14行目から始まる $default_image_size の配

  • WordPress の投稿スラッグを自動的に生成する – Simple Colors

    WordPress のパーマリンク構造に %postname% が含まれていて、うっかりパーマリンクの設定をし忘れると、ブラウザのアドレス欄に日語が表示されたり、 %e3%81%8a%e5%95%8f%e3%81%84%e5%90%88%e3%82%8f%e3%81%9b みたいな感じで、イミフな文字列がならんでしまったりしてあまり気持ちの良いものではありませんよね。 よく分かっているならまだしも、運営を任せていたりすると、そんなURLが大量に発生してげんなり・・・そんな状況もよくあり得ます。 先日フォーラムの 記事のスラッグ名を自動的に記事IDにしたい に回答した内容を一歩進めて、なるべく汎用的に使えるコードを書いてみました。 方針としては、 自分で設定したスラッグの場合は、変更しない 日語などマルチバイトの場合は、{投稿タイプ}-{記事ID}に強制的に変更 記事IDのみにしていない

  • WordCamp Tokyo 2011 講演資料「WordPress の動作原理詳説」 – Simple Colors

    アンカンファレンス補足資料 WordPress関数の記述箇所を検索できる便利サイト PHPXref 0.7: WordPress たしか、@kzextream さんに教えてもらった WordPress関数がどのファイルの何行目に書いてあるか検索できるサイト。 表示が完了したら、Ctrl+fなどのブラウザ検索で、WordPress関数名を検索。ヒットした関数名をクリックすると、下記のように関数が記述されているファイルと行数。それから、参照(利用されている)箇所を表示してくれる。 注意点は、(確か)最新版のソースコードを参照しているため、バージョンによって違うことがあり得る。 get_the_category の場合は、wp-includes/category-template.php の 65行目に記述されていて、link-template.php ほか9カ所で利用されていることが分かる。

    WordCamp Tokyo 2011 講演資料「WordPress の動作原理詳説」 – Simple Colors
  • 3.3の新しい関数 is_main_query を使おう – Simple Colors

    WordPressの3.3で、新しい関数 is_main_query が使えるようになりました。 WordPress をカスタマイズをガッツリ行う方には、是非知っておいていただきたいものです。 といっても、有用なのは関数ではなく、クラスメソッドの方ではありますが。。 表示カスタマイズ方法のおさらい 例えば、カテゴリーアーカイブだったら表示する件数を5件にしたい時や、年月アーカイブでは特定のカテゴリーを除きたい時などどうしていますか? 簡単にやるのであれば query_posts を使い、その条件で記事を取得する方法ですが、これは、データベースへのアクセスが増えるので、パフォーマンス的にはあまりおすすめできません。速くするためにCSSスプライトを使ったりするのに、これではちょっと末転倒な気もしますよね。 一番いいのは、WordPress が標準で表示する記事の条件を状況に応じて変更してあげ

  • WordPressで挿入する画像のsrcを相対リンクにする【発展版】 – Simple Colors

    一番最初に書いた記事「WordPressで挿入する画像のsrcを相対リンクにする」では、環境移行がしやすいよう、単に画像のドメイン部分をカットしていました。 ただし、これには1点問題があってRSSリーダーなどで表示する際に、ドメインが異なるため、画像が表示できていませんでした。 この問題に対応するため、以前のコードを元にドメイン部分をショートコード化し、表示する際に、運用中のドメインを追加するように改正してみようと思います。 ドメインを表示するためのショートコードは [domain] として、相対リンクのurlに付け足します。 CODE 1 function delete_host_from_attachment_url( $url ) { $regex = '/^http(s)?:\/\/[^\/\s]+(.*)$/'; if ( preg_match( $regex, $url, $m

  • WordPressで挿入する画像のsrcを相対リンクにする – Simple Colors

    WordPressで記事の中に画像を挿入するとき、通常ではhttp://www.example.com/wp-content/uploads/~ などといったように、ドメインを含んだアドレスがimgタグのsrcとして埋め込まれてしまいます。 例えば、ローカル環境や構築環境で作ったサイトを、番用のドメインで公開する場合、このドメイン部分をいちいち置換しなくてはなりません。 MySQLが分かる方であれば、一括置換すれば済む話ではありますが、データベースってなんじゃらほいという方はどうすればいいのか困りますよね。そこで、挿入される画像のsrcにドメイン部分が入らないようにする方法を紹介します。 利用しているテーマのfunctions.phpに下記コードを追加するだけ。 CODE 1 function delete_host_from_attachment_url( $url ) { $rege

  • WordPressの表示をログインユーザーに限定する – Simple Colors

    WordPressで制作したサイトを限定されたメンバーにだけ公開したい。 そんなケースも多々あるかと思います。 とにかく、全ての表示を会員限定にしたいのであれば、functions.phpに数行書き加えるだけでも、簡単な会員限定サイトを実現することが可能です。 下記のコードをテーマのfunctions.phpに追加すれば、ログインしておらず、なおかつログインページでない場合に、ログインページへのリダイレクトを行うようになります。 function require_login() { if ( ! is_user_logged_in() && strpos( basename( $_SERVER['REQUEST_URI'] ), 'wp-login.php' ) !== 0 ) { auth_redirect(); } } add_action( 'init', 'require_logi

  • WordPressで管理画面の表示言語を変えるプラグインを作ってみた – Simple Colors

    WordPressで表示する言語を指定するのは、wp-config.phpの WPLANG ですが、英語中国語のサイトを作成する際、この設定はどのようにしていますか? ja にして、テーマのlangは直書きにしてしまう or 管理画面は指定言語もしくは英語で我慢する、いずれかのパターンが多いと思いますが、他言語のサイトであっても、私のように外国語は苦手なので、管理画面は日語にしたいと思う方も沢山いるはず・・・ですよね?ね? 一応、Admin Languageというプラグインがあって、ユーザー毎に管理画面の表示言語を指定でき便利そうなのですが、WP Multibyte Patch と競合したり、日語リソースファイルを認識しなかったり、マルチサイト用の言語リソースを誤認識したりと、出来が今ひとつだったりします。 そんなこんなで、一般設定で管理画面の表示言語を指定できるようにするプラグイン

  • タクソノミーの使い勝手を劇的に向上させるWordPressプラグイン PS Taxonomy Expander – Simple Colors

    カテゴリーや投稿タグ、カスタムタクソノミーの使い勝手を、どどーーーーーーんと向上させてしまうプラグインPS Taxonomy Expanderを公開しちゃいます。 このプラグインは、単一機能ではなく、カテゴリーなどのタクソノミー全般に対し、実運用時のユーザビリティーを向上させる複数の機能から成り立っています。 機能一覧 1.カテゴリー・階層化タクソノミーの登録方式を変更可能に カテゴリーや階層化を有効にしたタクソノミーの選択方式を、タクソノミー毎に、複数選択(チェックボックス)または、単一選択(ラジオボタン)から選べるようにします。 サイトの構造や見栄えなどによっては、複数のカテゴリーを選択されると、表示上不整合が発生するケースもありますが、そういった場合でも、ユーザーの運用に頼るのではなく、タクソノミーの選択方式自体をラジオボタンに変更し、ヒューマンエラーを軽減させます。 2.タクソノミ

  • WordPressのユーザー管理画面カスタマイズまとめ – Simple Colors

    会員サイトや複数の編集者で運用されるようなサイトの場合、ユーザーのプロフィールなどを表示するケースが多いかと思います。 その際、デフォルトのWordPressのユーザーの項目では、物足りなかったり、逆に余計な項目が存在したりしてしまいます。 そこで、ユーザーの管理画面がどの程度カスタマイズ可能かをまとめてみました。 ※ 記事は、WordPressの3.1を元に記述しています。古いバージョンや今後のバージョンでは、適用できない場合もあり得ますのでご了承下さい。 カスタマイズが可能な箇所 ユーザーの管理画面で、項目の編集や追加が可能な箇所は、下記5箇所になっています。(関数内部のフックなどを利用すれば、まだ他にも可能かもしれません。) 1.管理画面配色下部 利用するフック admin_color_scheme_picker 利用方法 1)管理画面の配色欄内にフォームなどを追加 2)一旦、セル

  • WordPressの実行フローを視覚化してみる – Simple Colors

    WordPressはファイルが沢山あって、どこがどう動いているのか・・・ということはありませんか? index.phpからずっとソースを追っていけば分かってくるのですが、なかなかそんな時間も・・・という方向けに、実行フローを図案にしてみました。 どうでしょう? さすがに全部書くわけにもいかず、細部でさほど重要ではないと判断した部分などは割愛していたりします。分かりにくい部分があったらご指摘下さいね。

  • WordPressの新機能 複数タクソノミークエリーまとめ – Simple Colors

    先日、「WordPress 3.1 RC3 をみんなでテスト! 」に参加し、その際、複数カスタムタクソノミークエリー(en. Multiple Taxonomy Handling)のテストを担当させてもらいました。 ついでに、仕様などについても探ってましたので、まとめてみることにします。 複数タクソノミークエリーとは なるべく正確に言うと、query_posts または get_posts の引数に新たに設けられた tax_query により、カテゴリー、タグ、カスタムタクソノミー等による記事抽出条件を、複数かつ様々なパラメータで細かく設定できる機能。 tax_query の値は、抽出条件毎の配列と各条件の結合方法(パラメータ名:relation)で構成される。 こう書いても、分かりにくいと思いますので、もっとかみ砕いて、粉状にして言うと「これさえ憶えておけば、WordPressでの絞り込

  • 1