web-dev-qa-db-ja.com

現在のページでサイドバーがアクティブかどうかを確認

現在のページでサイドバーがアクティブになっているかどうかを確認することはできますか?

このような:

@edit

現在のページでこのサイドバーがアクティブになっていない場合でも、この関数はtrueを返します...

<?php if(is_active_sidebar('sidebar-1')) {
// sidebar-1 is active...
} ?>

しかし、サイドバーの名前を指定せずにサイドバーがアクティブになっているかどうかをチェックする必要があります。また、すべてのページではなく現在のページだけをチェックする必要があります。

<?php if(any_sidebar_active_on_this_page()) {
// has sidebar active on this specific page, do something...
} ?>
2
rafaelfndev

私はここでの問題は自国語の問題だと思います。

is_active_sidebarはページ固有ではありません - サイト全体でデータが含まれているかどうかを確認するだけです。

あなたは別の質問をしています。あなたは「このテンプレート参照とサイドバーを持っていますか、そしてそれらのサイドバーのどれかにそれらにデータがあるのですか?」と尋ねているように聞こえます。また、サイドバーの名前をまったく参照したくないと思われる場合もありますが、これは全面的に一般的な質問であることを望みます。

その最後の部分はこれを困難にし、潜在的にこれをアーキテクチャ上の問題に変えることができます - WordPressの問題ではありません。 WordPressをウェイターと考えてください - それはあなたの注文を受け取り、あなたに結果をもたらします。 「レストランでステーキを食べている人はいますか」といった質問をすることはできませんでした。それであなたのためにそこには何もありません。

あなたは https://codex.wordpress.org/Plugin_API/Action_Reference/dynamic_sidebar に結び付けることができます

それから、誰かがその中にデータを持っているサイドバーを呼び出すときはいつでもあなたは変数をセットするか、または関数を呼び出すことができます - これはあなたがそれらの瞬間に反応するのを可能にするでしょう。

2
foreach ( $GLOBALS['wp_registered_sidebars'] as $sidebar ) {    
    if(is_active_sidebar($sidebar['name'])) {
        // $sidebar['name'] is active...
    }
}

これは登録されたサイドバーのリストをループして、もしあればそれらが存在するかどうかをすべてのページロードでチェックします。

0
Sid