Как проверить, включен ли searchform.php в качестве виджета?

Я хотел бы добавить что-то вроде этого в searchform.php:

<?php if($widget){ ?> //load serach form for sidebar... <?php }else{ ?> //load different search form for page content (404 page) <?php } ?> 

Как я могу подготовить переменную $widget ? Или, может быть, я должен использовать другой метод? Как фильтр? Или получить шаблонную часть?

Solutions Collecting From Web of "Как проверить, включен ли searchform.php в качестве виджета?"

Проверьте, включена ли форму поиска?

Функция get_search_form() (которая должна использоваться) использует locate_template('searchform.php'); для отображения формы поиска.

Позднее возвращается (как вы можете видеть из его источника)

имя файла шаблона, если оно расположено

Поэтому, если вы просто хотите поймать путь по умолчанию, тогда вам нужно просто проверить

 'searchform.php' === locate_template( 'searchform.php' ) AND print 'Search form displayed!'; 

Вы можете подумать о сотне других сценариев о том, как включить форму поиска, но вы их никогда не поймаете.

Реальная проблема (и у меня нет для этого решения) заключается в том, что это проверяет существование, а не если оно включено через виджет. Таким образом, выше только предназначено для работы внутри (пользовательского) виджета.

Визуальный виджет

Если вы хотите отобразить виджет (в отсутствие других) с помощью PHP-кода в своем шаблоне, перейдите по the_widget() с the_widget() кодом the_widget() .

Проверьте боковые панели

Чтобы проверить боковые панели, вы можете просто проверить $GLOBALS['wp_registered_sidebars'] .

Проверьте свои виджеты

Core также имеет возможность проверять зарегистрированные виджеты: wp_get_sidebars_widgets() , которые вы можете использовать для проверки существования виджета.

Мне удалось сделать это с помощью get_template_part(); – вам просто нужны searchform.php и searchform-different.php.