サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
デスク環境を整える
www.warna.info
WordPressでスマートフォンなどのデバイス対応をする際、WPtouchやWP Mobile Detectorなどなどのプラグインを使ってスマートフォン用にテーマを切り替えている方も多いと思います。 今回は、そんなWordPressでデバイスによってテーマの切り替えを行っている方向けに、ちょっとしたおすすめTipsを紹介しておこうと思います。 先月、googleのウェブマスター向け公式ブログで「Google がお勧めするスマートフォンに最適化されたウェブサイトの構築方法」という記事が掲載されましたが、この中の「デバイスごとに最適化した HTM」の項目内で あなたのサイトが動的な配信をされている場合、ユーザーエージェントごとにコンテンツを変えている事をキャッシュサーバや Google のアルゴリズム伝えるために Vary HTTP ヘッダを使用することを強くお勧めします。また、Googl
body_classで出力されるclassに最上位のルートのページのスラッグを含むclass名が追加されるようになります。子ページ全部で同じcssを利用できるので、特定のツリーだけ配色を変更したいときなど便利にですよね。さらに、汎用化しているので固定ページだけじゃなくて、階層サポートしたのカスタム投稿タイプでも利用できます。 class名は、{投稿タイプスラッグ}-category-{ページのスラッグ}という命名規則にしてますが、このあたりはお好みで。 $post_type . '-category-' . $post->post_name の部分を変えてくださいな。 function add_page_root_body_class( $classes ) { if ( is_singular() ) { $post_type = get_query_var( 'post_type' )
WordPressの日付別アーカイブのtitleタグが「2012 3月 15」みたいに中途半端な表示になっているのが気になったので調整してみることにしました。 こんな感じのやつね。 修正前 <title> 2012 2月 28</title> こんな感じで、うまく行くはず。。。 function jp_date_archive_wp_title( $title ) { $title = trim( $title ); if ( is_date() ) { $replaces = array( '/([1-9]{1}[0-9]{3})/' => '$1年', '/ ([0-9]{1,2}) /' => ' $1日 ', '/ ([0-9]{1,2})$/' => ' $1日', '/[\s]+/' => ' ' ); $title = preg_replace( array_keys( $r
3月16日に執筆者の1人として関わっていた WordPress の学習書籍「速習デザイン WordPress 3.x」が発売されます。この本には、私以外にも、星野さん( @khoshino )と豊田さん( @Mighty_Works )が執筆者として名を連ねていて、それぞれの長所を書籍に反映できているのではないかと思います。 価格 : ¥2,814 出版社: 技術評論社 (2012/3/16) 大型本: 272ページ CMS・ブログサイト構築の世界的標準といえるWordPress。オープンソースながら企業サイトや商用サイトにも広く利用されており、CMS利用が欠かせない今後のWeb制作において開発者にとっては対応必須のツールといえます。商用に使える実用的なCMSサイトが作成できるように、WordPressの基礎をインストールの初歩から理解するための入門テキストです。お店サイト作例をもとに実際
新着情報などにNewマークを表示させたいなどの要望はよくあることですね。 今回は、表示する記事が新着や更新かどうかの判別用コードを紹介します。 なるべく汎用的となるように書いたので、ちょっとコードが長いですが、ご容赦ください。 いつものように CODE 1 を利用するテーマの functions.php にぺたりと追加してもらえれば、新着や更新の条件判別ができるようになります。利用方法は、コードの後で。 CODE 1 /** * post_classの出力するclassに、新着であれば、new-post、更新であれば、modified-postを追加する。 * * @param array $classes Array of default classes. * @param array|string $class array or string space separated class
ある日、Twitterで @poyosi さんがこんな事をつぶやいていて 実は内心「40も50も入れるかフツー?」などと思っていたのはおくびにも出さず聞いていると、夜中にもかかわらず各所から反応があって 意外にニーズがあるのかもと考えを改め、そんなわけで、ちょっぴり興味を持って取り組んでみることにしました。 メモの入力と表示ですが、あまり小さかったりすると入力も表示もユーザビリティーが悪くなりますし、ただでさえプラグインの説明表示の表示文字数が多くなり窮屈な感じになりそうだったのでカラムを増やすのは得策ではないと考えました。 そんなときに、ちょうど有り難かったのがプラグインの行表示を行った後に存在する after_plugin_row というフックです。プラグインの更新があった場合、 の様なメッセージが表示されますが、この表示もほぼ同じ箇所のフックを利用しているはずです。 というわけで、プ
WordPressの3.3で、新しい関数 is_main_query が使えるようになりました。 WordPress をカスタマイズをガッツリ行う方には、是非知っておいていただきたいものです。 といっても、有用なのは関数ではなく、クラスメソッドの方ではありますが。。 表示カスタマイズ方法のおさらい 例えば、カテゴリーアーカイブだったら表示する件数を5件にしたい時や、年月アーカイブでは特定のカテゴリーを除きたい時などどうしていますか? 簡単にやるのであれば query_posts を使い、その条件で記事を取得する方法ですが、これは、データベースへのアクセスが増えるので、パフォーマンス的にはあまりおすすめできません。速くするためにCSSスプライトを使ったりするのに、これではちょっと本末転倒な気もしますよね。 一番いいのは、WordPress が標準で表示する記事の条件を状況に応じて変更してあげ
WordPressの3.3もリリースされましたね。 3.3でのアップデートではメディアアップローダーの変更が一番の目玉かとは思いますが、目に見えないところでの改善も多数存在しています。今回は、その中の1つであるパーマリンクのパフォーマンス改善について、調べてみたのでまとめておきたいと思います。 ちょっと、小難しい内容も含んでいますが、概略だけでも掴んでおくことは大事なので、是非ご一読を。 3.3の新機能あれこれについては、おでさんの「WordPress 3.3 の新機能をおさらいしよう、そうしよう」にうまいことまとめられていますので、そちらを参照のほどを。 3.2までのパーマリンク WordPressのパーマリンクでは、現在11種類の構成タグが利用できるようになっていますが、そのうち %postname%、%category%、%tag%、%author% の4種は、「パフォーマンス上の理
WordPressのナビゲーションメニューは、管理画面上からドラッグ&ドロップで設定できて便利なのですが、非公開設定となっている投稿や固定ページなどが含まれている場合でも、表示の調整は行ってくれず全てが表示されてしまいます。このため、閲覧権限がないユーザーが非公開記事のメニューをクリックした場合「リンク切れか?」と思われてしまうことになります。 これでは、ユーザーエクスペリエンスもだだ下がりになってしまうので、メニューの記事が非公開の場合、自動的に表示されないようにしてみましょう。 ナビゲーションメニューには、wp_nav_menu_objects という、登録されたメニューをフィルタリングできるフックが存在しています。 今回は、ここで メニューが投稿タイプかどうかをチェック メニューの記事が非公開で、なおかつユーザーの閲覧権限がない場合、メニューを削除し、削除済みリストにメニューのIDを
@rie05 さんからのバトンを受けて、WordPress Advent Calendar 2011 の4番バッターを担当させていただきます。 Advent Calendarとはなんぞや??と思われる方もいらっしゃるかと思いますが、それは、先のお三方が十二分に説明いただいているので、さっくりと割愛。 たいさん、みやさん、りえさんと、ハードルを上げまくってくれたので、後の方を思ってここら辺で下げる役割をば。。。 私の紹介する内容ですが、WordCamp Tokyo 2011 のアンケート集計を担当させていただいているので、技術的内容含めて、その舞台裏など紹介してみたいと思います。 WordCamp Tokyo 2011は、11/27に800名を超える参加者を開催されましたが、アンケートを集計する役目に手を挙げてしまっていたので、私の WordCamp はまだ終わらない! 受付スタッフに集めて
あんまり検証してないよ。 function get_the_category_orderby_id( $categories ) { usort( $categories, '_usort_terms_by_ID'); return $categories; } add_filter( 'get_the_categories', 'get_the_category_orderby_id' );
アンカンファレンス補足資料 WordPress関数の記述箇所を検索できる便利サイト PHPXref 0.7: WordPress たしか、@kzextream さんに教えてもらった WordPress関数がどのファイルの何行目に書いてあるか検索できるサイト。 表示が完了したら、Ctrl+fなどのブラウザ検索で、WordPress関数名を検索。ヒットした関数名をクリックすると、下記のように関数が記述されているファイルと行数。それから、参照(利用されている)箇所を表示してくれる。 注意点は、(確か)最新版のソースコードを参照しているため、バージョンによって違うことがあり得る。 get_the_category の場合は、wp-includes/category-template.php の 65行目に記述されていて、link-template.php ほか9カ所で利用されていることが分かる。
フォーラムのタクソノミーのターム別記事一覧表示にて回答した内容です。 ごく稀なケースで、あまり汎用的なものではないと思いますが、なんかの参考になれば幸いです。 質問の概要はというと、「階層構造を表現しつつ、カスタム分類での絞り込みを行った一覧表示を実現したい」というもの。 階層構造の表現しつつ一覧表示するには、wp_list_pages を利用するのが最も簡単で、私自身もサイトマップのプラグイン(横着者)やサブナビのウィジェット(横着者)で大変お世話になっています。 ただ、wp_list_pagesにどのようにパラメータを指定しても、そのままでは絞り込みはできません。 では、どうにも出来ないのかというと、そうではなく、wp_list_pages 内部で記事の取得を行っている get_pages にフックし、分類でのフィルタリングを行うことで、パラメータ指定での絞り込みが実現できるようになる
WordPressのナビゲーションメニューで出力されるソースにスラッグを追加してみました。 命名規則は、カテゴリーと固定ページなどで同じスラッグを使っても問題とならないよう、投稿タイプやタクソノミーのスラッグも含めて、menu-item-category-news(newsというカテゴリーのメニューの場合)となるようにしています。 function add_slug_nav_menu_css_class( $classes, $item ) { switch ( $item->type ) { case 'post_type' : $post = get_post( $item->object_id ); if ( $post ) { $classes[] = esc_attr( 'menu-item-' . $item->object . '-' . $post->post_name )
カスタム投稿タイプを利用する際に、register post type の has_archiveパラメータを true とすると、投稿タイプのアーカイブ(一覧)表示を行うことができるようになります。 ただし、表示順については設定や入力にかかわらず公開日順になってしまうため、page-attributes をサポートして順序の入力を可能にしていても、表示に反映されることがありません。 今回は、この投稿タイプアーカイブの表示の際に、page-attributes がサポートされていれば、自動的に順序(menu_order)順に従って表示されるようにしてみましょう。 CODE 1では、記事を取得する直前の pre_get_posts にフックしてクエリーの条件を書き換える処理を行っています。ただし、条件指定がされていた場合は、上書きせずに指定値をそのまま利用するため、固定ページ同様に管理画面な
WordPressで投稿記事が属するカテゴリーを取得する get_the_category は、属するカテゴリーをカテゴリーの名前順で取得してきます。これは、カテゴリーだけでなく、投稿タグの get_the_tags やカスタム分類での get_the_terms でも同様です。 しかしながら、利用シーンによっては名前以外の順序で取得したい場合もあるのではないでしょうか。今回は、この取得順序を指定できる方法を紹介してみたいと思います。 やり方はいろいろあって、 get_the_terms のフックを利用する方法 wp_get_object_terms 関数で orderby パラメータを指定する方法 などもありますが、今回は単純ながらデフォルト取得結果を特定の値で再ソートする方法を採りたいと思います。 というのも、1では引数が自由に取れず特定のカスタマイズしか出来ないこと、2では使う毎にデ
リンクにリンクカテゴリーがあるように、ユーザーにもユーザーカテゴリーを作ることも可能なのでは?と思い、ユーザー用にカスタム分類(ユーザーカテゴリー)を適用させるプラグイン「User Categories」を作成してみました。 普通のプラグイン同様、プラグインメニューから User Categories を有効化すると、ユーザーメニューに新しく「ユーザーカテゴリー」というメニューが追加されます。 ユーザーカテゴリーは、カテゴリー同様にカテゴリーで親子関係を持つことが可能で、ツリー構造を持った組織構造を再現することも可能となっています。 ユーザーカテゴリーにカテゴリーを追加すると、「ユーザーの編集」「プロフィール」編集画面に登録したカテゴリーのチェックボックスが追加表示されるので、適宜チェックしユーザー情報の更新ってください。 ユーザーがどのユーザーカテゴリーに属しているかを取得するには、カス
一番最初に書いた記事「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でwp_get_archivesを使って年別のリストを表示させると、右図のように数字だけの表示になってしまい、なんとなく物足りない感じになってしまいます。 これは、なにも日本語化がうまくいっていないのではなく、そもそも翻訳のための機能を通っていないため、英語圏そのままの表示にしかならないためです。 ただ、やっぱり日本人としては「nnnn年」のような表示にしたいところではないでしょうか。 wp_get_archives のフックは、表示する項目ごとに get_archives_link というフィルターフックを通るので、このフックを用いて「年」を追加します。 フックの引数として、wp_get_archivesの引数があれば、条件に応じた正規表現を用いることができるのですが、ここでは、単にフィルターの対象となるHTMLのソースしか取れないため、
WordPressのhead要素にmeta要素の keywords と description を追加するプラグイン Meta Manager を公開します。 まだまだ、試験公開段階なので「こうして欲しい」「こういう機能があったらいい」などのご意見やご要望がありましたら、どしどしコメントしてください。 概要 head要素内にメタキーワード、メタディスクリプションを出力します。 出力サンプル <meta name="keywords" content="WordPress,ワードプレス,WordPress,PHP,web,アニメ,F1,セミナー" /> <meta name="description" content="Simple Colorsは、WordPressエキスパートのjim912によるカスタマイズテクニックを紹介するブログです。" /> 利用方法 Meta Manager を有
カテゴリーページでキーワードなどの項目を任意に設定したいと思い、ちょっとチャレンジしてみました。 ただし、カテゴリーや投稿タグなどを管理している term、term_taxonomy テーブルには、投稿に対するカスタムフィールドのようなものが存在せず、項目を追加した場合にどこにデータを保存するかが問題になってきます。 では、どのような方法があるかというと optionsテーブルに配列として保存する termsテーブルにフィールドを追加する カスタムフィールドの内容を保存するpostmetaテーブルのようなテーブルを追加する の3つが考えられます。これらの手法について 1.は、テーブル構造を変更することなく簡易に実装ができますが、検索性はほぼ0です。 2.は、多少の変更で get_category など従来の関数で情報の取得が可能で、検索性も良好ですが、項目毎にフィールドが必要になるため、自
@junirock78 さんが、ツイッターでカスタム投稿タイプも含めた新着情報を表示する方法を質問されていたので、おせっかいかとは思いつつ話の輪に加わってみました。 方法としては、テンプレートで query_posts または get_posts などを使って取得する方法が一般的だとは思いますが、これだとデータベースへの問い合わせが新たに発生してしまいます。 トップページでの表示であれば、もともと最新の投稿を取得してきていますから、これにカスタム投稿タイプを含めるようにしてしまえば、新たなデータベースへの問い合わせもなく、パフォーマンス的にも良くなりますね。 では、どうすれば良いかというと、データベースへの問い合わせが発生する直前に、トップページだったら(最新の投稿を表示している = is_home() がtrue)、リクエストの条件にカスタム投稿タイプの指定を追加してあげれば、あとは W
ポータル的なサイトの場合、トップページの情報掲載量が多く処理が重くなりがちですよね。こんなときの対策として、WP Super Cache や W3 Total Cache などのキャッシュプラグインを利用することも1つの手ではありますが、ランダムな表示箇所があったり、カウンターの表示があったり、ログイン処理があったりなどなど、すんなりとキャッシュでは解決できない場合も出てきたりします。 こんな場合は、Transients API を用いて取得結果のデータをキャッシュとして保持する方法があります。 Transients API は、通常 options テーブルにデータを保存しますが、オブジェクトキャッシュを利用している場合は、そちらを利用し高速に動作します。 また、有効期限を指定しない場合は、キャッシュの更新・破棄を行わない限り永久的なキャッシュとして動作します。(注:ただし、この手法は推
WordPressのアーカイブリスト(wp_get_archives)は、wp_list_pagesなどと違い、リストに現在ページを示すclassなどが入りません。 また、ドロップダウンリストとして表示した場合でも、デフォルト選択状態になっておらず、ちょっとばかり不便ですね。 これを修正するには、get_archives_linkというフックポイントにフックして、htmlのソースを書き換える必要があります。 やり方としては、WordPressのカレンダーのthにclassを追加するコード(日本語限定)とほぼ同じで、 フックして引数で得られるHTMLのソースを正規表現でパースし、リンクのURLを取得 表示しているURLと正規表現で得られたリンクのURLがマッチすれば、class or selected属性の追加したコードで置換 という流れになります。 CODE 1は、実際にテーマのfunct
WordPressの固定ページは、ページ属性の順序によってソートされるようになっているのは知られていますが、この項目が固定ページの一覧に表示されていたら、新規追加の際にいくつにすれば良いか分かりやすいですよね? 今回は、そんな固定ページの使い勝手を良くしてくれるコードを紹介します。 ちょっと長いですが、CODE 1 をテーマの functions.php に追加してもらえれば、 この通り。 固定ページに順序の項目が追加されます。項目名が青字になっていることからも分かるように、順序でソートできるようにもしていますし、page-attributes をサポートしたカスタム投稿タイプでは自動的に追加されるようにしましたので、汎用的に使えるのではないでしょうか。 是非、ためしてみてくださいね。 CODE 1 function check_post_type_support_page_attr()
Twenty Ten、Twenty Elevenでヘッダー画像を表示させないようにするには、header.phpを編集する方法や、CSSでdisplay: noneの指定を追加する方法もありますが、functions.phpの1行書き足すだけで、あっさり非表示にもできる方法があるのをご存じでしょうか。 functions.phpに CODE 1 を追加するだけで、サンプルの通りにヘッダー画像が表示されなくなります。 CODE 1 add_filter( 'theme_mod_header_image', create_function( '', 'return "remove-header";' ) ); 意外にシンプルでキレイでしょ。 ヘッダー画像を利用しない子テーマを作る場合には、header.phpを修正する必要もないし、お手軽でよいのではないでしょうか。
フッターにある「Copyright © YYYY ・・・ 」のYYYYにあたる年号を自動的に表示する方法として、CODE 1を紹介していることがあります。 CODE 1 <?php echo date( 'Y' ); ?> ただ、WordPressの2.9以降では、内部の時刻計算をGMT(Greenwich Mean Time:国際標準時)で行っているため、CODE 1 では日本との時差分9時間ずれてしまうことになるって知ってましたか? まあ、微々たる差とは言え、やっぱりピタリと切り替えたいと思うのが人情というものではないでしょうか。そんな繊細な貴君に使ってもらいたいのが、CODE 2 CODE 2 <?php echo date_i18n( 'Y' ); ?> date_i18n 関数の第2引数、第3引数を省略すると、自動的に現地時間の現在時刻を返すようになるので、時差の心配をしたり、計
WordPressのプラグインにはネットワークでのみ有効にできるようにする方法があるのをご存じでしたか? 方法は簡単、プラグインをプラグインとして認識させるためには、ファイルの冒頭に書式に従ったコメントを記述する必要がありますが、このコメントに Network パラメータに true を指定するだけです。 /* Plugin Name: Site Wides Plugin URI: https://www.warna.info/archives/1634/ Description: マルチサイト専用プラグインテスト Author: jim912 Version: 0.1 License: GPLv2 or later Author URI: https://www.warna.info/ Network: true */ プラグインページを表示してみると、 左がサイト管理のプラグインリスト
書いたよ。 if ( is_admin() ) { function add_puu( $translated ) { $translated .= 'ぷー'; return $translated; } add_filter( 'gettext', 'add_puu' ); add_filter( 'gettext_with_context', 'add_puu' ); add_filter( 'ngettext', 'add_puu' ); add_filter( 'ngettext_with_context', 'add_puu' ); } ほらね。 わがまま言いおって if ( is_admin() ) { function add_puu( $translated ) { $translated = rtrim( $translated, ' 。' ); $translated
次のページ
このページを最初にブックマークしてみませんか?
『Simple Colors – WordPressを中心に、F1とか読書とか写真とか』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く