如何让我的自定义小工具在实时站点上显示?

时间:2020-05-25 作者:GreatDayDan

我创建了一个具有标签的小部件&;输入(&A);下拉列表。它在管理屏幕上显示并工作,但在实时站点上无法看到小部件,

我尝试了一些用于下拉列表、输入和;标签。我已经搜索了(很多)并尝试了我能找到的任何线索。

我发现的一个示例小部件只显示标题,而不显示文本输入或按钮。

请看我的代码,自己试试,告诉我我缺少了什么。

<?php

/*
 *Plugin Name: Events
  Description: This widget allows the user to select an Event name.
  Version: 0.512
  Author: Dan Statham
 */


function gdd_Events_load_widgets() {
    write_log(\'gdd _Events_load_widgets\');
}// gdd_Events_load_widgets

// Register the widget
function my_register_events_widget() {
    register_widget( \'gdd_Events_load_widgets\' );
} //  echo(\'registerd\');

/*function submit(){
   if(isset($_POST[\'submit\'])){
      $selected_val = $_POST[\'Color\'];  // Storing Selected Value In Variable
     echo "You have selected :" .$selected_val;  // Displaying Selected Value
}

}
 * 
 */
add_action( \'widgets_init\', \'my_register_events_widget\' );  


// The widget class
class gdd_Events_load_widgets extends WP_Widget {
    function gdd_Events_Widget() {
        /* Widget settings. */
        $widget_ops = array( \'classname\' => \'event\', 
                    \'description\' => __(\'Allow the user to select an Event name.\', \'event\') );

        /* Widget control settings. */
        $control_ops = array( \'width\' => 300, \'height\' => 500, \'id_base\' => \'gdd_Events_Widget\' );

        /* Create the widget. */
        $this->WP_Widget( \'Event\', __(\'Event Name\', \'event\'), $widget_ops, $control_ops );
    } // function gdd_Events_Widget
    // Main constructor
    function __construct() {
        parent::__construct(                
                // base ID of the widget
                \'gdd_Events_Widget\',
                // name of the widget
                __(\'Event Names\', \'events\'),
                // widget options
                array(
                    \'description\' => __(\'Select the Event name.\',
                            \'events\')
               )
        ); //parent __construct()
    }//function __construct()

    public function update($new_instance, $old_instance) {
        $instance = $old_instance;
        $instance[\'eventsdropdown\'] = strip_tags($new_instance[\'eventsdropdown\']);
        return $instance;
    }
// function update

    public function widget($args, $instance) {
        // kick things off
        extract($args);
    }//function widget

    // run a query if on a page
    public function gdd_Events_Register_Widget() {
        register_widget(\'gdd_Events_Widget\');
    }


public function form( $instance ) {
    // Check values
    if( $instance) {
    $title = esc_attr($instance[\'title\']);
    $textarea = $instance[\'textarea\'];
    $eventsdropdown = $instance[\'eventsdropdown\'];
    $eventviadd = $instance[\'EVENTviadd\'];

    } else {
    $title =\'Event Selector\';
    $textarea = \'\';
    $eventsdropdown=null;
    $eventviadd=null;
    }


    if ( isset( $instance[ \'eventsdropdown\' ] ) )
    $selectedvalue = $instance[ \'eventsdropdown\' ];
    else
    $selectedvalue = __( \'\', \'text-domain\' );

    global $event;
    global $events;       
    global $wpdb;  
    global $depth;

     $events = $wpdb->get_results("SELECT id, event, description FROM mo_events order by event",ARRAY_A);
     ?>

     <label id=\'"label1\' for="<?php echo $this->get_field_id(\'event\'); ?>">Select an Event</label> <br>
     <select class="dropdown" id="eventsdropdown" name="eventsdropdown" title="Events Dropdown">

    <?php  
     foreach ($events as $event) {?>
             <option value=" <?php echo $event[\'id\'] ?>"><?php echo $event[\'event\']; ?></option> 
    <?php
    }   ?>
    </select> 
    <br><br> 
<p>
    <label id= "label2" for="number-1-EVENT">event</label><br>
    <input type="text" name="EVENT" placeholder="Select an event or enter a new event" id="EVENTviadd">
 </p>
<p>
    <label id="label3" for="number-1-EVENT">event</l<p>
            <label id="label4" for="number-1-DESCRIPTION">Description</label><br>
    <textarea name="DESCRIPTION" placeholder="Describe the event" id="DESCRIPTION"></textarea>
</p>

<?php


  } // function form  `
}

1 个回复
最合适的回答,由SO网友:cjbj 整理而成

widget类对象包含四个具有强制名称的函数:

  1. __construct(), 创建widget对象form ($intance), 在admin中生成表单update ($new_instance, $old_instance), 将表单数据保存在admin中widget ($args, $instance), 它在前端显示小部件widget, 除extract 陈述没有任何回应。所以前端没有显示任何内容。

相关推荐

My widgets do not save

每次我保存我的小部件并离开页面时,我的小部件都会消失。侧边栏已完全清空,不会保存任何更改。控制台或PHP日志中没有任何错误。如果我将小部件直接复制并保存在数据库中widgets_text, 它们将被显示,但我仍然无法在侧边栏中添加或删除任何内容。这只发生在我的右侧边栏上,左侧边栏工作正常,但它们都以相同的方式注册。这是我注册侧边栏的方式:function my_widgets_init() { register_sidebar( array ( \'name\'