Intereting Posts
Дать дочерние категории одинаковый класс (родительская категория-slug) как родительский в списке меню? Синхронизировать мои репозитории svn Как включить сообщение в тему? Как добавить пользовательский идентификатор к каждому URL-адресу сообщения в wordpress Проверка массива на идентификатор автора в цикле Сортировка сообщений последним измененным Как определить максимальную ширину для содержимого в редакторе сообщений на основе шаблона страницы? Есть ли способ предотвратить изменение Редактором моего HTML Использование нового фильтра posts_clauses в WordPress 3.1? Расширение плагина AZIndex для использования пользовательских типов сообщений и пользовательских таксономий Как создавать и работать с пользовательскими данными / таблицами (т. Е. Для произвольных данных)? Пользовательский тип сообщения Metabox – не сохраняет Количество конвейера не в порядке Предотвратить пользователя Admin для редактирования / просмотра супер администратора из списка пользователей Fwd: Уведомление об изменении электронной почты

Виджеты WordPress / плагин … не отображаются в моем виджете

Попытка создать мой первый плагин. Простой. В основном это то, что я хочу сделать, кроме самого виджета в Appearance -> Widgets не отображает мои поля. Интересно, может ли кто-нибудь указать мне в правильном направлении, чтобы мои поля появлялись?

function form($instance) { $title = esc_attr($instance['title']); ?> <p><label for="<?php echo $this->get_field_id('title'); ?>"> <?php _e('Title:'); ?> <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo $title; ?>" /></label></p> <?php } } 

Solutions Collecting From Web of "Виджеты WordPress / плагин … не отображаются в моем виджете"

С вашим кодом, указанным в OP, трудно точно сказать, где вы ошибаетесь. Одно замечание о том, что я могу, вы никогда не должны использовать create_function() , это поток безопасности, который может быть использован хакерами. Вы не должны полностью использовать это. Скорее используйте правильные закрытия, которые были введены в PHP 5.3.

Чтобы помочь вам, вот базовый скелет, который вы можете использовать для создания виджета. Только одно примечание, для этого требуется PHP 5.4 из-за использования нового синтаксиса коротких массивов ( [] )

 class Custom_Services extends WP_Widget { public function __construct() { parent::__construct( 'widget_custom_service', _x( 'Custom Service Widget', 'Custom Service Widget' ), [ 'description' => __( 'Displays information from a custom service.' ) ] ); $this->alt_option_name = 'widget_custom_service'; add_action( 'save_post', [$this, 'flush_widget_cache'] ); add_action( 'deleted_post', [$this, 'flush_widget_cache'] ); add_action( 'switch_theme', [$this, 'flush_widget_cache'] ); } public function widget( $args, $instance ) { $cache = []; if ( ! $this->is_preview() ) { $cache = wp_cache_get( 'widget_services', 'widget' ); } if ( ! is_array( $cache ) ) { $cache = []; } if ( ! isset( $args['widget_id'] ) ) { $args['widget_id'] = $this->id; } if ( isset( $cache[ $args['widget_id'] ] ) ) { echo $cache[ $args['widget_id'] ]; return; } ob_start(); $title = ( ! empty( $instance['title'] ) ) ? $instance['title'] : __( 'Category Posts' ); /** This filter is documented in wp-includes/default-widgets.php */ $title = apply_filters( 'widget_title', $title, $instance, $this->id_base ); // ADD YOUR CUSTOM PHP CODE HERE FOR EXECUTION TO DISPLAY ON FRONT END echo $args['after_widget']; if ( ! $this->is_preview() ) { $cache[ $args['widget_id'] ] = ob_get_flush(); wp_cache_set( 'widget_services', $cache, 'widget' ); } else { ob_end_flush(); } } public function update( $new_instance, $old_instance ) { $instance = $old_instance; $instance['title'] = strip_tags( $new_instance['title'] ); $this->flush_widget_cache(); $alloptions = wp_cache_get( 'alloptions', 'options' ); if ( isset($alloptions['widget_custom_service']) ) delete_option('widget_custom_service'); return $instance; } public function flush_widget_cache() { wp_cache_delete('widget_services', 'widget'); } public function form( $instance ) { $title = isset( $instance['title'] ) ? esc_attr( $instance['title'] ) : ''; ?> <p> <label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title:' ); ?></label> <input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo $title; ?>" /> </p> <?php } } add_action( 'widgets_init', function () { register_widget( 'Custom_Services' ); });