@midas34

Как добавить свою форму в виджет wordpress?

Подскажите, создал динамическую форму HTML (с классами, скриптами и ресурсами) и хочу её засунуть в собственный виджет для Wordpress, форма типа - кнопка, при клике выскакивает модульное окно, HTML файл формы думаю переделать в php в виде функции и вызова её, а вот с самим плагином не выходит, есть у кого коробка такого примера?
Попробовал в так:
Скрипты не работают, и встала проблема с ресурсами, плагин устанавливается, но при вызове картинки не найдены, подскажите варианты
<?php
/**
 * @package Genius
 * @version 0.1
 */
/*
Plugin Name: 
Plugin URI: 
Description: 
Author:
Version: 0.1
Author URI: 
*/

/* Виджет genius Widget */
class genius_example_widget extends WP_Widget {

    // Установка идентификатора, заголовка, имени класса и описания для виджета.
    public function __construct() {
        $widget_options = array(
            'classname' => 'genius_widget',
            'description' => 'Виджет выбора оправ и линз',
        );
        parent::__construct( 'genius_widget', 'genius Widget', $widget_options );
        // стили скрипты виджета, только если он активен
        if ( is_active_widget( false, false, $this->id_base ) || is_customize_preview() ) {
            add_action('wp_register_scripts', array( $this, 'add_genius_scripts' ));
            add_action('wp_head', array( $this, 'add_genius_style' ) );
        }
    }

    // Вывод виджета в области виджетов на сайте.
    public function widget( $args, $instance ) {

        $title = apply_filters( 'widget_title', $instance[ 'title' ] );
        $formlenses = include_once ('lenses_form.php');

        echo $args['before_widget'] . $args['before_title'] . $title . $args['after_title']; ?>
         <div> <?php formlenses();?> </div>
        <?php echo $args['after_widget'];
        var_dump($formlenses);
    }

    // Параметры виджета, отображаемые в области администрирования WordPress.
    public function form( $instance ) {
        $title = ! empty( $instance['title'] ) ? $instance['title'] : ''; ?>
        <p>
        <label for="<?php echo $this->get_field_id( 'title' ); ?>">Title:</label>
        <input type="text" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" value="<?php echo esc_attr( $title ); ?>" />
        </p><?php
    }

    // Обновление настроек виджета в админ-панели.
    public function update( $new_instance, $old_instance ) {
        $instance = $old_instance;
        $instance[ 'title' ] = strip_tags( $new_instance[ 'title' ] );
        return $instance;
    }

    // скрипт виджета
    function add_genius_scripts() {
        // фильтр чтобы можно было отключить скрипты
        if( ! apply_filters( 'show_genius_script', true, $this->id_base ) )
            return;

        wp_register_script( 'bgscript_document', plugins_url ('data/document.js', __FILE__) );
        wp_register_script( 'bgscript_data', plugins_url('files/lenses_form/data.js', __FILE__) );

        wp_register_script( 'bgscript_jquery', plugins_url('resources/scripts/jquery-3.2.1.min.js', __FILE__) );
        wp_register_script( 'bgscript_axQuery', plugins_url('resources/scripts/axure/axQuery.js', __FILE__) );


        var_dump();

    }

    // стили виджета
    function add_genius_style() {
        // фильтр чтобы можно было отключить стили
        if( ! apply_filters( 'show_genius_style', true, $this->id_base ) )
            return;

        wp_enqueue_style( 'bgstyle_rp_page', plugins_url('resources/css/axure_rp_page.css', __FILE__) );
        wp_enqueue_style( 'bgstyle_data', plugins_url('data/styles.css', __FILE__) );
        wp_enqueue_style( 'bgstyle_form', plugins_url('files/lenses_form/styles.css', __FILE__) );
    }

}

// Регистрация и активация виджета.
function genius_register_widget() {
    register_widget( 'genius_example_widget' );
}
add_action( 'widgets_init', 'genius_register_widget' );

// Репорт ошибок
/*
ini_set ('error_reporting', E_ALL);
ini_set ('display_errors', 1);
ini_set ('display_startup_errors', 1);
*/
  • Вопрос задан
  • 27 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы