サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
アメリカ大統領選
komodo.arrow.jp
カスタムフィールドの入力を思い通りのレイアウトにしたいなら、プラグインではなく、カスタムフィールドの CRUD 関数を使います。 テキスト ■functions.php add_action('admin_menu', 'myplugin_add_custom_box'); add_action('save_post', 'myplugin_save_postdata'); function myplugin_add_custom_box () { add_meta_box( 'myplugin_sectionid', '送料関連', 'myplugin_inner_custom_box', 'post', 'advanced' ); } function myplugin_inner_custom_box() { global $post; echo '<input type="hidd
WordPress のタームでよく使うタグ・関数のまとめとサンプルです。カテゴリーや投稿タグにも同じような関数がありますが、ターム関連の関数の引数にはタクソノミーの指定が追加されています。タクソノミーに category や post_tag を指定すれば、カテゴリーや投稿タグでも使えます。 タームでよく使うタグ 詳細は Codex を参照してください。 タ グ 使 用 例 wp_list_categories タームリストを表示します。引数にタクソノミーを指定します。 ■ sidebar.php <div class="widget"> <h3 class="widgettitle">ジャンル</h3> <ul> <?php wp_list_categories('taxonomy=genre&title_li=');?> </ul> </div> ポストに付いているタームをリンク付き
カスタムフィールドは非常に便利ですが、すべてのサイトで万能なのか?残念ながら万能ではありません。ここではカスタムフィールドの弱点を述べておきます。 カスタムフィールドの問題点は次の2点です。 すべてのフィールドは LONGTEXT 型です。整数型も浮動小数点型も日付型も持っていません。したがって、適切に設計されたデータベースよりデータ領域が大きくなり、実行パフォーマンスも落ちます。 カスタムフィールドのテーブルは非常に柔軟性のある構造になっています。しかし、この柔軟性な構造のため、ひどい SQL を発行します。ポストに関連付けされているカスタムフィールドを参照すると、一つのカスタムフィールドにつき一つの JOIN(結合)が必要となります。5つのフィールドを参照しようとすると、5つの JOIN(結合)が必要になります。そして、JOIN は著しくパフォーマンスを低下させます。 参照:Pods
階層型のカスタム投稿タイプは、固定ページと同じ構造をしています。というより、階層型のポストで、’post_type’ が ‘page’ のものを固定ページと呼んでいるだけです。 固定ページのようなポストが必要なら、固定ページの一部としてコンテンツを作るのではなく、ポストがきちんと意味を持っている階層型のカスタム投稿タイプを作るべきです。 階層型カスタム投稿タイプの作成 ポストを階層型のカスタム投稿タイプにするには、register_post_type() で、 ‘hierarchical’ => true ‘supports’ => array( ・・ , ‘page-attributes’ ) ページ属性を加える とするだけです。プラグインを使って登録する場合でも、これらを設定する箇所が必ず存在します。 階層型カスタム投稿タイプと固定ページの構造は同じですが、両者に違いがあるのも事実
WordPress のカスタムフィールドでよく使うタグ・関数のまとめとサンプルです。 カスタムフィールドでよく使うタグ 詳細は Codex を参照してください。 関 数 使 用 例 the_meta 表示中のポストのカスタムフィールドを表示します。 <h5>このポストのカスタムフィールド</h5> <?php the_meta(); ?> <!-- 出力 --> <ul class='post-meta'> <li><span class='post-meta-key'>your_key:</span> your_value</li> </ul> 指定したポストの指定した ‘meta_key’ の値を返します。第3引数により、文字列で返すか配列で返すかを決定します。 <?php // 文字列で返す $meta_value = get_post_meta($post->ID,'meta_k
next_post_link() , previous_post_link() は、カスタム投稿タイプでも機能します。ただし、カスタム投稿タイプにカテゴリー(category)を付けていな限り ‘is_same_cat’ は意味がありません。また、カスタム投稿タイプの「次へ・前へ」は、タクソノミーや ‘menu_order’ に対応しないと使い物になりません。 Ambrosite Next/Previous Post Link Plus は、next_post_link() , previous_post_link() を機能強化したテンプレートタグを提供します。Next, Previous リンクを張るポストの条件も ‘in_same_cat’ だけではなく、’in_same_tax’. ‘in_same_meta’, ‘ex_cats’ など、カスタマイズ性が大幅にプラスされています。
タクソノミー(taxonomy)は、主にポストを分類するために使われます。’主に’と書いたのは、リンクなどポスト以外の分類にも使用されるからです。タクソノミーにはインストール時に既に登録されているカテゴリーや投稿タグ、サイト構築者が登録するカスタム分類があります。 タクソノミーの名前は、生物を分類することを目的とした生物学の一分野である分類学に由来します。というのはタテマエで、本当のところは Drupal のパクリです。 ※この他、投稿フォーマット、ナビゲーションメニューもビルトインの分類です。 タクソノミーの階層構造 タクソノミーには、カテゴリーのような階層型のタクソノミーと、投稿タグのようなフラット型のタクソノミーあります。 階層構造を持つタクソノミー タクソノミーを register_taxonomy() で登録するときに、 ‘hierarchical’ => true とします。こ
カテゴリー(category)と投稿タグ(post_tag)は、最初から投稿(post)に付いているビルトインタクソノミーです。 参照:タクソノミーとは カテゴリーと投稿タグの違い カテゴリーは、あらかじめ分類項目が決まっていて、サイト設計の段階からタームを決定できるタクソノミーです。一方、投稿タグは、投稿者が記事のキーワードをタギングしたり、カテゴリーを越えて串刺し的に投稿を分類したりするタクソノミーです。というのが一般的な見解でしょう。 カテゴリーと投稿タグの違いは、カテゴリーがチェックボックスで入力するのに対し、投稿タグは、カンマ区切りのテキストで入力するということです。ただ、「タクソノミーの定義」という見地からすると、カテゴリーと投稿タグの違いは、「階層型のタクソノミーかどうか」という一点に尽きます。 カテゴリーリストとタグクラウド サイドバーに表示する最も一般的なブログパーツに
WordPress でポストを抽出する方法は色々あり、どこで何を使うべきかで悩んでしまいます。何でこんなことになっているんだ!と文句を言いたくなるくらい話は込み入っています。 query_posts() query_posts() はメインループのポストを抽出するために用いられます。以下、日本語 Codex の記述です。 “query_posts() 関数はメインの WordPress ループだけを変更するためのものです。新たなループを作るためのものではありません。メインループの他にループが必要な場合は、get_posts() を使ってください。メインループの他で query_posts() を使用すると、メインループが不正な状態になり期待する結果が得られません。” “query_posts() 関数はページのメインクエリを上書きし、置き換えます。他の目的で使用しないでください。” “qu
固定ページのテンプレートは、テンプレートの中では最も簡単です。しかし、簡単なのはデフォルトのテンプレート page.php だけで、階層構造のある場合やポストの統括ページとしての固定ページのテンプレートは、そんなに簡単ではありません。 page.php と異なるデザインにする場合は、page-{id}.php や page-{slug}.php で特定の固定ページのテンプレートを作ります。また、複数の固定ページで共通するテンプレートを作る場合は、名前付きテンプレート-{pagename}.php にするとよいでしょう。例えば、親ページでは共通の page-parent.php を作り、子ページでは共通の page-child.php を作ります。 固定ページリスト 固定ページリストは、グローバルナビ、サイドバーのメニュー、サイトマップなどに使用できます。 ■ ■ wp_list_pages
タームに親子関係がある場合、望ましいのは子ターム間の「次へ・前へ」です。しかし、previous_post_link(), next_post_link() のパラメタ in_same_category は、同一の親カテゴリー間での「次へ・前へ」となり、意図したものにはなりません。これを実装するにはいくつかの方法が考えられます。投稿の次へ・前へで紹介したフィルターフック ‘get_previous_post_join’, ‘get_next_post_join’ でタームを調整する方法もその一つですが、この方法ちょっとメンドウです。 ここでは previous_post_link(), next_post_link() 及びプラグインは一切使わずに、PHP だけで同一ターム(同一カテゴリー)間の「次へ・前へ」を実装する方法を紹介します。この PHP コードをベースに タクソノミー(taxo
カスタムフィールドは、ポストに独自の情報を追加します。WordPress をブログとして使用する場合、カスタムフィールドは必ずしも必要ありませんが、CMS として使用する場合は必須と言ってもいいでしょう。 カスタムフィールドの必要性 例えば、企業サイトを作る場合、ニュース記事やブログに投稿を使い、製品情報にはカスタム投稿タイプを使うとします。このとき、製品情報が、タイトル(製品名)と内容(製品詳細)だけでは情報が十分ではありません。そこでカスタム投稿タイプである製品情報には、価格、サイズ、色などさまざまな情報をカスタムフィールドとして追加します。 別にカスタムフィールドなんか使わずに、内容欄に製品詳細、価格、サイズ、色を入力すれば良いではないかと思うかもしれません。しかし、そのような方式は必ずしも間違いではありませんが、”冴えたやり方”ではありません。次のような欠点があります。 データ入力
検索フォームと検索結果のテンプレートの話題です。 検索フォーム 標準的な検索フォーム ■ ■ searchform.php ■ <form method="get" id="searchform" action="<?php bloginfo('url'); ?>/"> <div> <input type="text" value="<?php the_search_query(); ?>" name="s" id="s" /> <input type="submit" id="searchsubmit" value="Search" /> </div> </form> 検索をカテゴリーで絞り込む まだ試していません。 ■ ■ searchform.php ■ <div id="search"> <form method="get" action="<?php bloginfo( 'url
よく使う wp-config.php の設定です。 公開場所の変更 サイトの公開場所が WordPress のインストールディレクトリと異なるときは、サイトの公開場所を変更するに従って WordPress を設定します。設定の間違いで管理画面に入れなくなった場合は、wp-config.php で WordPress アドレスとブログアドレスを設定し直すことで管理が面に入ります。 WordPress アドレス (URL) WP_SITEURL は、「WordPress アドレス (URL)」を定義できるオプションです。wp-config.php でこの値を設定すると、wp_options テーブルの option_value siteurl の値よりも優先され、管理パネル > 設定 > 一般設定画面の「WordPress アドレス (URL)」欄は無効となります。 例えば、”example.
いろいろな条件でのポストを抽出してみます。ここでは、割と単純な指定だけを扱います。より複雑なタクソノミーの指定は tax_query、より複雑なカスタムフィールドの指定は meta_query を使います。 まずは、これから 抽出したいポストの条件を WP_Query() の引数に指定すればよい。以後、全部 new WP_Query() で記述しますが、query_posts() でも get_posts() でも同じです。 抽出条件にカテゴリー ID を指定します。これが解れば半分解かったようなものです。 ■ ■ カテゴリーID が 3 の投稿 ■ $query = new WP_Query( 'cat=3' ); 投稿・カスタム投稿 ■ ■ 抽出条件にポストの情報を指定 ■ // ID が 7 の投稿 $query = new WP_Query( 'p=7' ); // スラッグが '
画像にタクソノミーを付ける方法を紹介します。ここでのタクソノミーは、ポストに付けたタクソノミーではなく、画像ポストに付たタクソノミーのことです。ポストにアップロードした添付画像かどうかは関係ありません。 【図を作成中(まちがって削除)】 ※ここでは画像を扱いますが、添付ファイル(attachment)でも同じです。 WordPress 3.5 以降では、ポスト編集画面とまったく同じ要領で、画像編集画面でタクソノミーを付けることができます。 PHP コードで画像にタクソノミーを付ける タクソノミーを付ける投稿タイプがメディア(attachment)というだけです。 画像にカテゴリーや投稿タグを付ける 画像にビルトインタクソノミーであるカテゴリーや投稿タグを付けます。 ■ ■ functions.php ■ add_action('init', 'add_category_to_attachm
※太字はデフォルト値。 tax_query のサンプル タクソノミーが一つの場合のサンプル ■ ■ テンプレート全般 ■ $args = array( 'tax_query' => array( array( 'taxonomy' => 'people', 'field' => 'slug', 'terms' => 'bob' ) ) ); $query = new WP_Query( $args ); // tax_query を使わないで書くと $args = array( 'people' => 'bob' ); $query = new WP_Query($args); タクソノミーが二つの場合のサンプル ■ ■ テンプレート全般 ■ $args = array( 'post_type' => 'movie', 'tax_query' => array( 'relation' =>
WP-Members の魅力は、いろいろなプラグインを組み合わせなくても、このプラグインだけで簡単に会員サイトが構築できることです。機能としては、以下のものがそろっています。 ユーザーのプロフィール(ユーザーメタ情報)を簡単に追加できます。 ログインフォーを固定ページに設置できる。 固定ページやポスト(投稿+カスタム投稿タイプ)の「全投稿」に対し閲覧制限できます。ただし、投稿は制限せずに、カスタム投稿タイプだけ制限するということはできません。 固定ページ・投稿・カスタム投稿タイプのコンテンツを個別に閲覧制限できます。 プラグイン Members Category を追加すると、「カテゴリー」を含む投稿に対して閲覧制限できます。 WP-Members での会員登録は、「購読者」としてユーザーを追加します。「購読者」なので書き込み権限とは無縁のプラグインです。 サンプル:会員登録サイト Plu
タクソノミーアーカイブは、タームリストで選択(クリック)したタームを含むポストの一覧です。ポストの並び順は、日付降順とは限りません。 タクソノミーアーカイブは、ブログの「カテゴリー一覧」としてでなく、企業サイトの「商品一覧」等に使われることが多い。このページでは、タクソノミーをジャンル(genre)として説明します。 タームリストは、カテゴリーリストと同じ wp_list_categories() を使います。そして、タクソノミーアーカイブは、カテゴリーや投稿タグと同じレベルのアーカイブで、テンプレートもカテゴリーアーカイブとほぼ同じ構造を持ちます。 タームリスト タームリストの表示には wp_list_categories() を使います。カテゴリーリストとの違いは、 ‘taxonomy’ => ‘genre’ のように対象となるタクソノミーを指定することです。これを指定しないと、’ca
管理者はロールに対して以下の操作を行うことができます。 新規ロールの追加 ロールの削除 ロールに権限を追加する ロールから権限を削除する 新しいロールを作っても、デフォルトのロール以外を無視するプラグインもあります。例えば、Capa Protect や Restrict Content は、新しいロールを認識しません。 ロールの追加と削除 ロールの追加・削除は、WP_Roses クラスのメソッドを使います。add_role() , remove_role() は、 $wp_roles->add_role() , $wp_roles->remove_role のラッパー(wrapper)です。 ■ ■ functions.php ■ <?php add_action( 'admin_init', 'add_new_role'); function add_new_role() { // R
カスタムフィールドの定義と表示 インストール時に作成されるカスタムフィールドのフィールドの定義のサンプルです。フィールドの詳細については、カスタムフィールドテンプレート設定ページのオプションリストを調べてください。 カスタムフィールド定義 [Plan] type = text size = 35 label = Where are you going to go? [Favorite Fruits] type = checkbox value = apple # orange # banana # grape default = orange # grape [Miles Walked] type = radio value = 0-9 # 10-19 # 20+ default = 10-19 clearButton = true [Temper Level] type = select
しょぼい WordPress 標準のカスタムフィールドの入力機能を何とかするプラグインです。この手のプラグインも山のように存在しますが、その中で、私のお気に入りがこの Advanced Custom Fields です。基本的なチェックボックスやセレクションでカスタムフィールドを入力できるだけでなく、アドオン機能で新しいフィールドタイプを追加することもできます。または、誰かが作ってくれたアドオンを使うこともできます。まさに、アドバンスドです。
WordPress 3.1 から、meta_query が WP_Query() の引数に追加されました。meta_query を使うと、従来不可能だった複数のカスタムフィールドの指定が可能になり、同時に、大幅に拡張された比較演算子や比較時の型を指定をできます。 meta_query により複数のカスタムフィールドが使えるようになったのですが、使いすぎには注意しましょう。詳しくは、カスタムフィールドの欠点を参照してください。 meta_query のパラメータ SQL を使ったことがあれば、「あーあれだな」とすぐに分かります。 パラメータ 意 味 設 定 値
Custom Field Suite は、Advanced Custom Fields からフォーク(※1)したプラグインで、安定性・ハイパフォーマンス・大きくなり過ぎないことを目標に作られました。Advanced Custom Fields ほど拡張性はありませんが、ウェブデザイナーやノンプラグラマーが使うには十分な機能を備えています。 Custom Field Suite は、Advanced Custom Fields では有料オプションとなっている Repeater に相当するフィールドタイプ Loop が無料で使えます。Repeater や Loop は、単一フィールドだけでなく複数フィールドの繰り返しができます。私が知っているカスタムフィールド系のプラグインで複数フィールドの繰り返しができるのは、Advanced Custom Fields と Custom Field Sui
子サイトの情報を親サイトで表示できるかどうか、以下のコードでを調べてみました。 ポスト及びその関連情報 項 目 結果 備 考 タイトル ◎ the_title() 投稿日 ◎ the_time() 投稿者 ◎ the [...]
カスタムフィールドを表示する基本的な関数は、 the_field( $field_name, $post_id ); echo get_field( $field_name, $post_id ); $field_name:フィールド名 $post_id:通常はポスト ID ですが、ポストID 以外の場合もあります の2つです。その他にも、Repeater(有料オプション)用の関数やショートコードも用意されています。 フィールドタイプ 解説 Text インデックスへ Text Field は、単一行のテキストを入力できます。URL や E-mail かをチェックするバリデーション機能はありません。 フィールド定義時のオプション フィールドの値に HTML を含むときの動作を指定できます。 ・無:HTML タグとして認識せず、文字列としてそのまま吐き出します。 ・HTML:HTML
カスタム投稿タイプ、カスタム分類、カスタムフィールドを使って WordPress を CMS として使ってみようというサイトです。このサイトは、次のような方々のお役には立てません。 HTML, CSS がわからない。 <?php を見た瞬間、拒否反応がでる。 Twenty Eleven をカスタマイズしたい。 子テーマでテーマを作成したい。 プラグインやウィジェットを作りたい。 WordPress(一般的にCMS)のユーザーには、「HTML なんか知らん。ブログがしたいだけだ!」、「プラグインなんて使わないぜ。全部 PHP だぜ!」と色々なレベルの人がいます。プログラミング言語のヒエラルキーをマネると、前者は「高級ユーザー」、後者は「低級ユーザー」ということになります。 さあ、胸を張って言いましょう。「俺は(私は)高級ユーザーだから HTML も CSS も知らん。ピーエッチピィー? 初め
WordPress 編 最新の投稿 2012-09-16 ロールによる書き込み制限―カスタム投稿・カスタム分類編 2012-09-15 カスタム投稿タイプの次へ・前へ 2012-09-14 固定ページをポストの統括ページにする 2012-09-12 Google 検索もどき 2012-09-10 Types MODX Evolution 編 最新の投稿 2012-08-31 phiRedirect 2012-08-31 Gmaps 2012-08-03 eForm 2012-07-29 Allow modx tags 2012-07-28 ドキュメント変数(リソースフィールド)
Advanced Custom Fields は、アドオンによりフィールドタイプを追加できます。現在、有料・無料のアドオンがボチボチ出て来ましたが、「カスタムフィールド絡みのプラグインは、Advanced Custom Fields のアドオンとして作成する」のが標準になる日が来るかもしれない。 有料アドオン 本家 Advanced Custom Fields の本家サイトで販売しています。中でも Repeater がすばらしい。 フィールドタイプ 解説 Repeater 繰り返しフィールドが使えるようになります。特筆すべきは、単一のフィールドタイプだけでなく、複数のフィールドタイプをまとめて繰り返すことができることです。 Flexible Content ポスト編集画面を、まっさらな状態からレイアウトするアドオン(のようだ)。 Gallery 素敵なギャラリーが作れます。 サードパーティ
次のページ
このページを最初にブックマークしてみませんか?
『CMS with Komodo Edit | 「簡単にできる」は「たいしたことはできない」と同じです。』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く