WordPress小部件没有显示在前面


WordPress widget not displaying on the front

使用类API结构创建一个自定义小部件,该小部件不会在前端显示。收集到的数据存储在数据库中,并通过wp-admin进行更新。当通过自定义程序查看时,小部件会因不透明度而变灰,并在前端进行渲染。我看不出哪里出了问题:

function widget( $args, $instance ) {
    extract( $args );
    echo $args['before_widget'];
    $title = apply_filters( 'widget_title', $instance['title'] );
    $description = empty( $instance['description'] ) ? ' ' : $instance['description'];
    if( !empty( $title ) ) { echo $args['before_title'] . $title . $args['after_title']; }
    echo '<div class="cjd">';
    echo '<input type="text" class="email" name="cjd-email"/>';
    echo '<input type="button" class="subscribe-button" name="subscribe" value="'. _e( 'Add your email', 'cjd') .'" />';
    echo '</div>';
    echo $args['after_widget'];
}

代码调用小部件:

 function cjd_subscribe_widget() {
    $widget_ops = array( 
        'classname' => 'cjd-widget', 
        'description' => __( 'Adds a input form allowing newsletter subscription.', 'cjd' )
    );
    $this->WP_Widget( 'cjd_subscribe_widget', 'CJD: ' . __( 'Client Subscribe', 'cjd' ), $widget_ops );
}

小工具注册:

function cjd_register_widgets() {
register_widget( 'cjd_subscribe_widget' );
}
add_action( 'widgets_init', 'cjd_register_widgets' );

SOLVED:原来我把小部件放在了is_admin()函数调用中。当小部件在外面显示时。感谢@JH

我认为您需要先注册小部件,然后才能使用它。

class MyNewWidget extends WP_Widget {
function MyNewWidget() {
    // Instantiate the parent object
    parent::__construct( false, 'My New Widget Title' );
}
function widget( $args, $instance ) {
    // Widget output
}
function update( $new_instance, $old_instance ) {
    // Save widget options
}
function form( $instance ) {
    // Output admin widget options form
}
}
function myplugin_register_widgets() {
register_widget( 'MyNewWidget' );
}
add_action( 'widgets_init', 'myplugin_register_widgets' );

以及在functions.php文件中:

register_widget( $widget_class );

Wordpress源的函数参考

编辑

试着这样调用小部件:

<?php the_widget( $widget, $instance, $args ); ?>