Intereting Posts
Получать сообщения с несколькими метазначениями Как добавить навигацию в нижнем колонтитуле, таком как StackExchange? Как публиковать страницу и сообщения с использованием одного шаблона Запрос SQL для обновления meta_value для одного meta_key для всех post_type = product Не удалось получить доступ к панели управления (только wp-admin). Крючок для редактирования Проблемы с пользовательскими таксономиями Split читает другую строку соединения Как переопределить файлы языков в wp-content / languages ​​/ themes с дочерней темой добавить файл jquery, если включена определенная страница wp_update_post meta вызывает 500 ошибок Условное приветственное сообщение с использованием текущей информации пользователя Как я могу оставить незарегистрированную регистрацию имени пользователя? Фильтрация содержимого пользовательского запроса Измененные изображения не работают – 404

the_widget () и идентификатор виджета

Предположим, у меня есть виджет, который отображает только его имя:

<p> <?php echo $args['widget_id'] ?> </p> 

Поэтому, когда я перетаскиваю свой виджет на любую боковую панель, он показывает:

 <p> myWidget-number </p> 

Проблема в том, что я хочу называть этот виджет коротким кодом:

  (...) ob_start(); the_widget(MyWidget); return ob_get_clean(); } add_shortcode('myWidget_short', 'myWidget_shortcode'); 

И когда я делаю [myWidget_short], он показывает только

 <p> </p> 

Любые идеи, как назвать идентификатор виджета с помощью короткого кода?

Я считаю, что @One Trick Pony был прав.

У виджетов короткого кода нет идентификатора, поэтому я нашел способ обойти.

Во-первых, я использовал функцию PHP rand:

 $var = rand(); 

Затем добавлен «var» в ID, поэтому он не сталкивается с другими кодами, вызывающими один и тот же виджетов (каждый из них имеет различное случайное число в конце идентификатора):

 <div id="myWidget-<?php echo $var?>;"></div> 

Я построил короткий код для вызова боковых панелей и короткий код для вызова виджетов в Total Widget Control . Боковые панели, которые довольно легко создать, просто вызывают dynamic_sidebar внутри ob_start ();

Однако вызов отдельных виджетов был довольно сложным. global $wp_registered_widgets Я думаю, что это глобальная переменная, содержащая полный экземпляр виджета. Вам нужно сначала создать свою собственную функцию, которая позволит вам захватить экземпляр виджета, а затем вам нужно вызвать функцию обратного вызова виджета, чтобы отобразить виджет.

Код, который вы пытаетесь использовать the_widget действительно требует, чтобы вы the_widget экземпляр виджета в качестве параметра. Он не способен искать сам виджет.