ひらりんです。お久しぶりです。 今回はWordPressのカスタマイズ方法を目的別に書いてみようかと思います。

初級編から上級編まで。 ではいってみましょー!

もくじ

初級編

中級編

上級編

( ˘ω˘)スヤァ

初級編

まずは簡単な初級編から

wp_list_categories()の記事数を<a>タグに含める

カテゴリ一覧を表示するために、WordPressがデフォルトで用意している関数。 いくつか引数を渡すことができ、show_count=1を指定するとカテゴリに紐づく記事数を一緒に表示してくれます。 その際、通常だとカテゴリページへリンクする<a>タグに記事数は含まれません。 例えばこんな感じ:

これを

こうしたい場合、wp_list_categoriesフィルターにフックします。 functions.phpなどに下記を追記してみてください。

※よい子のみんなはちゃんとしたメソッド名にしましょう。

ここでポイントなのは、記事数が1000を超えるとカンマがつくということ。 なので正規表現が\d+とかになってると無視されちゃいます。

投稿画面のカテゴリから”新規追加”と”よく使うもの”を非表示

使わないなら、いらないよね。 いらないなら、消しちゃおう。 ということで:

※よい子のみんなは(ry

参考:WordPress管理画面カスタマイズあれこれ10選 | 株式会社LIG

( ˘ω˘)スヤァ

中級編

お次はちょろっとプログラミングな中級編

ログイン画面のURLを変更

対クライアントでWordPressを使ったWEBサイトを制作したりしていると、 セキュリティ面をいろいろ考慮しなければいけない点があったりすると思いますが、 そんなひとつに”ログイン画面のURLを変更する”なんてのがあります。

WordPressセキュリティあるあるなので、その手の素晴らしいプラグインで ボタンひとつでできたりしますが、大人の事情によりプラグインが導入できない場合など こんな方法がありますよという紹介がてら:

上記をfunctions.phpなどに書いておきつつ、 変更した名前でwp-config.phpと同階層にファイルを作成します。 ここであれば”naisyo.php”という名前ですね:

実際に変更するURLやハッシュ値などは適宜変更してください。 絶対にこのまま使わないでください。 絶対使うなよ? 絶対だぞ?

参考:ログインページを変える:WordPress私的マニュアル

複数のカスタムフィールドでソート

カスタムフィールドでのソートといえば”meta_key”と”orderby=meta_value”を使ったおなじみの形が有名ですが、 WordPress 4.2から複数のカスタムフィールドでソートできるようになりました。

上記のコードは”cf_item_is_pickup”というカスタムフィールドと、 “cf_item_is_new”というカスタムフィールド、更に記事の公開日によって 降順に並び替えが行われます。

ちなみに、WP_Queryの引数については下記がとっっっっっっっっっっても便利です!!!!!!

WP_Queryの使い方をPHPコードにまとめた便利なコード・スニペット

参考:WordPress 4.2 から可能になった、カスタムフィールドの複数ソート

( ˘ω˘)スヤァ

上級編

ここからは上級編!

投稿画面の親カテゴリのチェックボックスを非表示

簡単な方法としては初級編でやった管理画面にCSSを追加する感じで非表示にしてしまえばいいのですが、 ここではwalkerクラスを拡張する形で実装してみます。 同じような方法でリスト系の挙動を自由に変更できるので、覚えておくと◎

まずはfilterを定義しましょう:

ここではカテゴリチェックリストを表示するためのwalkerクラスを独自クラスへ変更しています。

次に独自クラスの実装:

Walker_Category_Checklistを継承しつつ、start_el()のみオーバーライドしています。 また、念のため冒頭で親クラスが見つからなければrequire_once()で読み込んでいます。

あとはfunctions.phpなどで独自クラスをGLOBAL変数に突っ込むだけ!

これで管理画面のカテゴリリストから親カテゴリのチェックボックスが消えると思います。 独自クラスの内容を書き換えれば他にもいろんなことができるのでお試しあれ。

独自パーマリンク設定の追加

WordPressといえばパーマリンクですが、案件によっては既存のルールから逸脱した独自パーマリンクが必用になるケースもありますよね。 例えばWordPressにAPIのエンドポイントを実装して、外部から特定の記事情報をjson形式で取得したい・・・なんて場合:

※下記コードはあくまでサンプルです。実際に使う場合はパラメータのサニタイズなどを行い、 SQLインジェクションなどを考慮して実装してください。

こんな感じで追加できます。 あくまでサンプルなのでご容赦くださいませ。APIという視点から見てもいろいろ足りないコードです。 また、パーマリンク周りはコアロジックに関わる部分ですので、十分理解してから実装するようにしましょう。

参考1:Rewrite API « WordPress Codex 参考2:Rewrite APIその2 WordPressでアプリを作る基本(WordPressプラグイン開発のバイブルのボツ原稿から) | Shinichi Nishikawa’s

Advanced Custom Fieldsのrelationshipフィールドを特定の条件で絞り込む

カスタムフィールドといえば同じみのプラグイン、Advanced Custom Field。 弊社で扱うWordPress制のサイトには100%といっても過言ではないほどの勢いで入ってます。とりあえず入れとけ的な。 そんなACFのカスタマイズをご紹介します。

ACFで使いできるカスタムフィールドはいくつか種類がありますが、 その中でrelationshipフィールドというものがあります。

こんなやつ

ここで候補にあがってくる記事や画像はACFの設定画面である程度制御することが可能ですが、 独自のルールを追加する場合はフィルターフックを用いて行います:

こんな感じで編集中の記事に設定されているカスタム分類に紐づく記事を 候補として絞り込むことができます。

※編集中の記事には予めカスタム分類が割り当てられており、かつ一旦保存されている必用があります。

ACFには要所々で処理を変更するためのフックが用意されているので、 仕組みさえ分かってしまえば、要件にあわせてカスタマイズすることもそこまで難しくないかと思います。

( ˘ω˘)スヤァ

あとがき

普段文章を書かないので、なかなかに時間がかかりました。 やってることは過去に自分が作ったソースコードやらからコピペしてるだけなんですけどね・・・

と、いうことで、 いかがでしたでしょうか? フィルターフックやアクションフック、ウィジェットAPIなどを使えば やりたかったあんなことやこんなことが意外と簡単に実装できたりするかもしれません。 まずはどんなフックやAPIがあるか調べてみるところから初めてみましょうーーー

エンジニア募集!

ソニックムーブではエンジニアを募集しております! PHPによるWEB制作に興味のある方は下記応募リンクから気軽にご応募くださいませ! 女子歓迎(`・ω・´)シャキーン

システムエンジニア募集中!

あわせて読みたい記事