如何创建前端具有提交表单的小部件

时间:2011-01-25 作者:Elitmiar

如何创建前端有提交表单的小部件?原因是我正在自学插件开发,在将小部件添加到侧栏后,我正在努力学习如何在前端显示表单。

迄今为止我的代码

function widget ($args,$instance) {
    extract( $args );

    /* Our variables from the widget settings. */
    $title = apply_filters(\'widget_title\', $instance[\'title\'] );
    $name = $instance[\'name\'];
    $number = $instance[\'number\'];
    $message = $instance[\'message\'];

    /* Before widget (defined by themes). */
    echo $before_widget;

    /* Display the widget title if one was input (before and after defined by themes). */
    if ( $title )
            echo $before_title . $title . $after_title;


    ?>
    <p>
                <label for="<?php echo $this->get_field_id( \'title\' ); ?>"><?php _e(\'Title:\', \'hybrid\'); ?></label>
                <input id="<?php echo $this->get_field_id( \'title\' ); ?>" name="<?php echo $this->get_field_name( \'title\' ); ?>" value="<?php echo $instance[\'title\']; ?>" />
        </p>

        <p>
                <label for="<?php echo $this->get_field_id( \'name\' ); ?>"><?php _e(\'Your Name:\', \'name\'); ?></label>
                <input id="<?php echo $this->get_field_id( \'name\' ); ?>" name="<?php echo $this->get_field_name( \'name\' ); ?>" value="<?php echo $instance[\'name\']; ?>" />
        </p>

        <!-- Your Name: Text Input -->
        <p>
                <label for="<?php echo $this->get_field_id( \'number\' ); ?>"><?php _e(\'Your Cellphone Number:\', \'number\'); ?></label>
                <input id="<?php echo $this->get_field_id( \'number\' ); ?>" name="<?php echo $this->get_field_name( \'number\' ); ?>" value="<?php echo $instance[\'number\']; ?>"  />
        </p>

        <p>
                <label for="<?php echo $this->get_field_id( \'message\' ); ?>"><?php _e(\'Your Message:\', \'message\'); ?></label>
                <textarea id="<?php echo $this->get_field_id( \'message\' ); ?>" name="<?php echo $this->get_field_name( \'message\' ); ?>"><?php echo $instance[\'message\']; ?></textarea>
        </p>
    <?php

    /* After widget (defined by themes). */
    echo $after_widget;
 }

2 个回复
SO网友:kaiser

这应该是:

<?php
/**
 * @Package:        ___
 * @Subpackage:     ___
 * @Author:         ___
 */

class WidgetExample extends WP_Widget {
    function init() {
        parent::WP_Widget( false, $name = \'Our Test Widget\' );
    }

    function form( $instance ) {
        // outputs the options form on admin
    }

    function update( $new_instance, $old_instance ) {
        // processes widget options to be saved
        return $new_instance;
    }

    function widget( $args, $instance ) {
        // outputs the content of the widget
        // ADD YOUR FRONT-END FORM HERE
    }
}
register_widget( \'WidgetExample\' );

SO网友:Jan Fabry

我看到了在小部件中处理前端表单提交的三种主要方法:

通过POST提交并重新加载整个页面的常规表单。易于理解,易于创建,但不是很好的用户体验a high-level overview of Ajax in WordPress, 也许这是一个好的开始

结束

相关推荐

Why use widgets?

我对使用WordPress很陌生,我想知道使用小部件的好处是什么?看here 这听起来像是为那些不是程序员的人准备的,他们想在他们的网站上添加插件。对吗?或者小部件是否在某种程度上使站点更加健壮?