WordPressで「今どんなウィジェットが設定されているのか」を確認するには、以下の方法がラクです。
WordPressで今設定されているウィジェットを確認する方法
WordPressの管理画面にログインして左メニューにある「外観」→「ウィジェット」をクリックします。
下のようにウィジェットの設定画面に切り替わります。
「ウィジェットエリア」と書いてある場所に注目しましょう。
ウィジェットが設置されていますね。
- 検索
- 最近の投稿
- 最近のコメント
- アーカイブ
- カテゴリー
- メタ情報
計6つ、設置されています。
WordPressを初めてインストールして、Twenty Fifteenテーマを適用した直後の状態でトップページを開くと、下のように表示されていると思います。
トップページを開いてウィジェットの表示場所をチェックしよう
赤枠で囲ってある部分が、今ほど確認した6つのウィジェットが表示されているエリアですね~。
というわけで以上が前提で、ここからが本題です。
設置されているウィジェットのID名を取得したい場合ってどうする
最近、ウィジェットを設置した時に割り振られているID名を取得したいことがありました。
「ID名ってなんだ?」となる方もたくさんいると思います。例えば「検索ウィジェット」を設置すると、下のようなコードが出力されます。
<aside id="search-2" class="widget widget_search"><form role="...
コード内にある「search-2」がID名です。
で、このID名を取得したい場合は、「wp_get_sidebars_widgets」を使うと取得できることを知りました。
さっそくウィジェットのID名を取得しよう
試しに、先ほどと同じ条件でやってみましょう。
- WordPressをインストールした直後
- Twenty Fifteenテーマを適用した状態
この条件で「wp_get_sidebars_widgets」を使って下のようなPHPコードを書いて、ウィジェットの情報を取得します。
PHPコード
<?php var_dump(wp_get_sidebars_widgets()); ?>
出力結果
array(2) { ["wp_inactive_widgets"]=> array(0) { } ["sidebar-1"]=> array(6) { [0]=> string(8) "search-2" //検索 [1]=> string(14) "recent-posts-2" //最近の投稿 [2]=> string(17) "recent-comments-2" //最近のコメント [3]=> string(10) "archives-2" //アーカイブ [4]=> string(12) "categories-2" //カテゴリー [5]=> string(6) "meta-2" //メタ情報 } }
上の出力結果を見ると、配列で取得できていますね。
ウィジェットエリアのID名、ウィジェットID名がそれぞれ取得できる
「sidebar-1」は、ウィジェットエリアのID名です。ウィジェットのID名と混同しないように気をつけましょう。
・・・「sidebar-1」ってIDのウィジェットエリア内に、6つのウィジェットIDが入ってるという理屈がわかれば大丈夫だと思います。難しく考える必要はないです。
使用停止中のウィジェットIDも取得できる
「wp_inactive_widgets」には、使用停止中のウィジェットが入ります。上のコードの例だと、使用停止中のウィジェットは存在しない状態ですね。
じゃあここで、使用停止中のウィジェットに「固定ページ」を入れてみます。
で、もう一度「wp_get_sidebars_widgets」を使って表示。
出力結果
array(2) { ["wp_inactive_widgets"]=> array(1) { [0]=> string(7) "pages-2" } ・・・以下省略
すると上のコードのように「wp_inactive_widgets」に固定ページのID名が入っています。
おまけ:ウィジェットエリアのID名はここで決められています
先ほど出てきた「sidebar-1」というウィジェットエリアのID名ですが、Twenty Fifteenテーマの「functions.php」ファイルで指定されています。
function twentyfifteen_widgets_init() { register_sidebar( array( 'name' => __( 'Widget Area', 'twentyfifteen' ), 'id' => 'sidebar-1', 'description ・・・以下省略
「register_sidebar」を使ってウィジェットエリアを作成。その時にウィジェットエリアのID名「sidebar-1」を指定しているってことですね。
まとめ
今回ご紹介した設置済み・使用停止中の全てのウィジェットのID名を取得する「wp_get_sidebars_widgets」ですが、私の場合は表示しているウィジェットのID名を判別して、特定のウィジェットが表示されている場合は処理を付け加える、など行うために使いました。
以上、何かのご参考となりましたら幸いです。
このページを共有する