Intereting Posts
используя $ wpdb для получения персонализированного типа сообщения с термином Вызов короткого кода внутри другого обратного вызова Shortcodes wp_list_widget_controls () undefined Как правильно заставить https и www на многопользовательском Подробная информация о wp_localize_script установить новую ссылку как permalink Список пользовательской таксономии, основанный на количестве сообщений и категории Получение настраиваемых полей с помощью $ wpdb-> get_results Условия для пользователей и посетителей Можно ли использовать URL-адрес wp-plugins (Must Use Plugins) для использования в functions.php? Включить несколько идентификаторов страниц в цикле Если хакер заглянул во все php-файл, может ли он навредить мне? Как скрыть определенные теги от the_tags ()? Как продлить один плагин, который я пишу другим, я пишу, используя классы? Является ли их способ разбивать теги на wordpress в моем случае, я хочу разбивать на фрагменты 1 тега, как показано ниже

Как добавить дополнительное поле во всех доступных WordPress виджетах?

Я продолжаю поиск того, как добавить дополнительное поле для каждого доступного виджета WordPress, что-то вроде Subtitle после Title виджета.

Есть ли способ подключить каждый доступный виджет?

Solutions Collecting From Web of "Как добавить дополнительное поле во всех доступных WordPress виджетах?"

Я знаю, что плагин Widget Logic делает именно это.

Рассекая его код, выдержка ниже выведет текстовое поле во всех виджетах.

добавление textarea во все доступные виджеты

Но учтите, что:

  • это просто доказательство концепции, а управления «save field» нет
  • наилучшим решением, вероятно, является создание вилки плагина и удаление ненужных функций и добавление собственных
  • код плагина не совсем прост в чтении
 if ( is_admin() ) { add_action( 'sidebar_admin_setup', 'widget_logic_expand_control' ); } // CALLED VIA 'sidebar_admin_setup' ACTION // adds in the admin control per widget, but also processes import/export function widget_logic_expand_control() { global $wp_registered_widgets, $wp_registered_widget_controls, $wl_options; // ADD EXTRA WIDGET LOGIC FIELD TO EACH WIDGET CONTROL // pop the widget id on the params array (as it's not in the main params so not provided to the callback) foreach ( $wp_registered_widgets as $id => $widget ) { // controll-less widgets need an empty function so the callback function is called. if (!$wp_registered_widget_controls[$id]) wp_register_widget_control($id,$widget['name'], 'widget_logic_empty_control'); $wp_registered_widget_controls[$id]['callback_wl_redirect'] = $wp_registered_widget_controls[$id]['callback']; $wp_registered_widget_controls[$id]['callback'] = 'widget_logic_extra_control'; array_push( $wp_registered_widget_controls[$id]['params'], $id ); } } // added to widget functionality in 'widget_logic_expand_control' (above) function widget_logic_empty_control() {} // added to widget functionality in 'widget_logic_expand_control' (above) function widget_logic_extra_control() { global $wp_registered_widget_controls, $wl_options; $params = func_get_args(); $id = array_pop($params); // go to the original control function $callback = $wp_registered_widget_controls[$id]['callback_wl_redirect']; if ( is_callable($callback) ) call_user_func_array($callback, $params); $value = !empty( $wl_options[$id] ) ? htmlspecialchars( stripslashes( $wl_options[$id ] ),ENT_QUOTES ) : ''; // dealing with multiple widgets - get the number. if -1 this is the 'template' for the admin interface $number=$params[0]['number']; if ($number==-1) { $number="%i%"; $value=""; } $id_disp=$id; if ( isset($number) ) $id_disp = $wp_registered_widget_controls[$id]['id_base'].'-'.$number; // output our extra widget logic field echo "<p><label for='".$id_disp."-widget_logic'>My logic <textarea class='widefat' type='text' name='".$id_disp."-widget_logic' id='".$id_disp."-widget_logic' >".$value."</textarea></label></p>"; }