タグ

ブックマーク / wpxtreme.jp (7)

  • WordPress のURLクエリストリングにカスタムフィールドを指定して絞り込み検索する

    例として、スタッフ紹介ページに[部署][性別]のカスタムフィールドがある場合、で話をしますね。 投稿タイプ:staff カスタムフィールド:division, gender な感じの記事にカスタムフィールドの条件をつけて検索してみましょう。 PHP での絞り込みなら 詳しくは Codex を参照してくださいですが、query_posts() や get_posts() など、PHP コードでなら以下のように書けますね。 query_posts( array( 'post_type' => 'staff', 'meta_key' => 'division', 'meta_value' => 'sales', /* 他のパラメータは省略 */ ) ); メタクエリーを使えば、複数の条件を組み合わせることができます。 query_posts( array( 'meta_query' => arr

    WordPress のURLクエリストリングにカスタムフィールドを指定して絞り込み検索する
  • WordPressテーマのfunctions.phpをクラス化する

    プラグインを作成するとき、まるっとクラス化することで 関数名のコンフリクトの心配やら、ちまちまプレフィックスをつける面倒から解放されます。じゃぁテーマの functions.php でも同じことができるんではないか 。子テーマとか考えると function_exists() での判定やら、親テーマと同じプレフィックス付きの長い関数名やら、なんちゅう読み難いんじゃー、といった諸々から解放されてもっと幸せになれるんではないか。そんな思いからテーマ(のfunctions.php)をクラス化する方法を考えてみました。何十個も twentyeleven_ とか書くのシンドイ。 #prefix ってプリフィクスじゃないのね。。。 親テーマ Web 制作会社なら(そうでなくても)自社ルールに則って構築されたテーマのひな形が存在すると思います。無い場合は、この際だから作ってしまいましょう!いつまでもまんま

    WordPressテーマのfunctions.phpをクラス化する
  • 新規ページのメタボックスのデフォルト値を自動で指定する

    ページには属性メタボックスがあり、[親][テンプレート][順序]をそれぞれ指定することができます。例えばクライアントでページを追加できるようにした場合、それらを「クライアント追加分」としてグルーピングしておくと便利だとか、決まったレイアウトで表示したい(=テンプレートを指定)という流れになりがちです。そしてできれば、それをクライアント様にわざわざ入力していただくのもアレだし、入力ミスがあるととてもメンドウな事になりますから、デフォルトで任意の値に設定しておきたいとなるわけです。そんなときは、新規ページ作成時にメタボックス表示前のアクションをフックしてデフォルト値をいじってしまえば OK 。 例えば、新規ページの属性メタボックスの[親][テンプレート]のデフォルト値を任意に設定する(フォーラムネタ)なら、functions.php に以下を追加すれば OK。 function my_meta

    新規ページのメタボックスのデフォルト値を自動で指定する
  • query_posts, get_posts で複数の order 指定に対応する

    元ネタは公式フォーラムのカスタムフィールドでソートした後に、日付の降順にしたいです。query_posts(), get_posts() で記事を取得する時に複数の項目でソートしたい、ことはよくあります。WordPress では orderby に半角スペース区切りで並び替えのキーとなる複数の項目を指定することができますが、昇順降順の order パラメータには ASC, DESC のどちらか1つしか指定できない仕様になっています。バグなハズはない。きっと深いワケがあるハズ。とはいえ、項目ごとに並び順を指定する方が需要は多いハズなのでやってみましょう! ※ order も複数指定できるよ、って話を以前どこかで見た気がするけど仕様変更されたのかしら。 コアのソースを見てみよう query_posts() や素の get_posts() は WP3.2.1 wp-includes/query.

    query_posts, get_posts で複数の order 指定に対応する
  • WordPress ループ&クエリーのモヤモヤを解消しよう!

    12月25日まで毎日ブログをつないでいく WordPress Advent Calendar、12日目担当 福山カズヒデ (@kzxtreme) です、こんにちは。aka aus Cothodyntomo(@aka_aus_pd)さんの「錆びたブログをまた動かすときに必要な事柄」からバトンをいただきました! WordPress 都市伝説のひとつ「query_posts() は危険」のデマは、地道な「wp_reset_query() を使おうキャンペーン」によりかなり沈静化しましたが、それでもなお「get_posts() 以外は信用ならん」「WP_Query 最強!」と各派閥がシノギを削る争いを繰り広げています。ラブ&ピースなクリスマスを迎えるために、WordPress の最も基的な機能でありながら最も正しく理解されていないこの最大のモヤモヤを、今日ここでスッキリと解消してしまいましょう!

    WordPress ループ&クエリーのモヤモヤを解消しよう!
  • WordPress で「全◯件中◯件〜◯件目を表示」を表示する

    検索結果や各種アーカイブなどの記事一覧でページネーションする場合によくある表示「全◯件中◯件〜◯件目を表示しています」の決定版をお届けします。件数取得のために改めて get_posts() 的なことをしないので WordPress に優しい作りです。また posts_per_page = -1 のときに $wp_query->found_posts が 0 になる不具合にも対応済です。 ただし、不正なページ指定による Not Found 時やハナから have_posts() が false な場合に何らかの表示が必要な場合は、別途対応してください。 ちょっと長いですが テーマフォルダの functions.php に以下を追加します。 function my_result_count() { global $wp_query; $paged = get_query_var( 'paged

    WordPress で「全◯件中◯件〜◯件目を表示」を表示する
  • WordPressでイベントカレンダー  |  wpxtreme

    get_calendar を利用する get_calendar() は以前は 取得/出力を選択できましたが WordPress 2.9.1 では有無を言わさず出力するようになっています。 wp-includes/general-template.php 956行目〜 get_calendar()(抜粋) : ob_start(); : $output = ob_get_contents(); ob_end_clean(); echo $output; : なんで仕様変えちゃうんだよこれじゃ手が出せねぇじゃねぇかよですね。でも安心してください。WordPress が自由気ままに生きても所詮は PHP という世界の中です。PHP が「んじゃぁこうすりゃじゃん」というさらに自由な設計なので echo されててもオソルルに足りません。 自由過ぎるゆえに PHP なんてメタメタやんけかもですが、エレ

    WordPressでイベントカレンダー  |  wpxtreme
  • 1