メシのタネ

めしのたねになるIT情報配信サイト


絞込み機能を改造してWordPressを管理しやすくしてみた

,

  1. WordPress
  2. 絞込み機能を改造してWordPressを管理しやすくしてみた

wpppppppp

WordPressでWebサイトを運営してみると、案外絞込みが使い辛い事に気がつきました。絞込みっていってもデフォルトではこれ日付でしか絞込みできないんですよね。固定ページで親子関係持たせてたらやっぱ親子関係持った記事絞りこんだ方が、更新が効率的にできると思うんですよね。まぁ正直ろくな方法ではないものの、無理くり引っ付けたので、同じようなことで困ってる人は試してみてはいかがでしょうか。

まずは親ページのIDを取得する

まず親ページのIDをどんな手段使っても良いから記憶します。親ページのIDは固定ページ一覧出した時のリンクの「?post=n」って書いてあるとこのnがIDです。
page_hayai-1

例えば、概要が親ページだとしたらこんな感じで調べる事ができますよね。もちろん他の方法もありますが、手っ取り早いのがこの方法です。

固定ページ一覧に細工する

固定ページの一覧を管理画面から開くとURLが

https://hogehoge.com/wp-admin/edit.php?post_type=page
https://hogehoge.com/wp-admin/edit.php?post_type=page&parent_check=n //nに親のIDを入れる

こうすることで、親ページの一覧がでますねー。

parentlist-1

きゃーすてきー。

でもめんどいわー

ここで終わりでも良いんですけど、これだとアレ過ぎるので、もう少し便利にしてみましょう。
例えば、edit.phpの中にSelectつけて親ページで子ページ検索できる!みたいになったら嬉しいですよね。

ただ、それをやるには問題が立ちはだかりますね。

1、全親IDを取得しなければいけない
2、HTMLを一覧ページに書かなくてはいけない
3、クエリに親IDをぶちこまなければいけない

まぁおおまかに3つくらいの壁が立ちはだかるわけですけれども、これらを解消していきましょう。

親IDの取得

さっきやった方法で事足りる場合は良いのですけど、例えばページ数が多い場合に、一個一個親かどうか確認してID拾っていくのは非常に面倒くさいです。僕はやりたくないです。なのでさっき説明をはしょった、別の方法を使い、親ページのIDを取得していくことにします。

こんな感じでいかがでしょう。

HTMLを固定ページ一覧に追加する方法

これにはフックを使って、追加していきます。restrict_manage_postsってフックなんですけど、これはrestrict_manage_postsはフィルターのsubmitボタンの前に挿入されるらしいですが、edit.phpで一覧出してる時に絞込み検索ボタンの前に出る奴って覚える方が良さそうです。覚え方なんて人それぞれなので、あくまでお勧めするにとどめておきます。

そして、ここでなんと、selectタグにさっき記憶したIDを書き込んで行きます!

なんでやねん!!!ってなると思いますが、こうしないと、親ページ検索した後に、WP_Queryが上手く動作しなくなるので、僕は無理くりoptionのvalueに親IDをぶち込みました。WP_Queryを復活させる呪文知ってる人が居たら教えて下さい。

ほんでとりあえずはこうなります。

クエリに親IDをぶちこむ

今度はposts_whereっていうフィルタフックを使います。これでどうやらwhereの拡張ができるみたいです。とにかく親IDをぶちこんでやりましょう。

こんな感じでぶちこんでやればいいですね。これで無事機能追加されてると良いですよねー。

おまけ

投稿した後に、前の親ページ一覧に戻りたい場合は、edit_form_topってフック使えば、投稿ページにHTMLなりPHPなり仕込むことができます。自分なりの戻るボタンをぶちこんでやりましょう。


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

This site uses Akismet to reduce spam. Learn how your comment data is processed.

若い頃、「仕事中にハマったこと」や「誰かに共有したい技術的な気づき」をアウトプットしたくてブログを始めましたが、勢い任せでよく分からない記事を大量生産し、あえなく飽きて終了。

改めて今、キャリア15年分の経験や知識が、これからITエンジニアを目指す方や、同じような課題で悩んでいる現役エンジニアの「メシのタネ」になるような記事を残したいと思っています。
※過去の記事は見ると精神が崩壊するため、そっとしておいてください。

🛠 経歴という名の珍道中:
文系Fラン → 広告営業 → Web営業 → 通信営業 → Web進行 → 出版 → Web媒体運用 → ソフトウェアハウス → SES → フリーランス

専門教育も受けず、転職歴も多数。履歴書はまるで時系列の事故記録のようですが、試行錯誤を重ね、なんとかエンジニアとして食べています。

このブログでは、そんな「履歴書クラッシャー型エンジニア」が送る、
名古屋一敷居の低い、実務に役立つ技術ブログを目指します。

PHP
魔王と行く! / Interface / Polymorphism / Ontology 深淵ガイドNew!!
Laravel
Laravel 12、「コード 1 行も書き換えず未来へ」──静かな革命の手順書New!!
Laravel
LaravelのMiddlewareって意味あるの?仕組み・使いどころ・やらかしまで整理してみたNew!!
Laravel
ServiceProviderって何してるの?DIの背後で動いてるやつの正体New!!
Laravel
LaravelのサービスコンテナとDI、「書いてるだけで動く」コードの正体
Laravel
Laravelのアーキテクチャ、実は誰もわかってない説