将描述添加到自定义文本小工具,并显示5个最近的帖子标题

时间:2012-12-14 作者:Kevin Ullyott

我遇到了一个问题,我不知道在哪里添加描述,所以它会显示在小部件仪表板上。它只是一直显示标题。

还有一件事我想得到一些帮助,那就是添加功能来显示最近的5个帖子标题(所有类别),我也不知道怎么做。我将在下面发布我现在拥有的代码。任何输入都将极大地帮助我的网页设计教育。

    <?php
/*
Plugin Name: Kevins Textbox
Plugin URI: 
Description: A text widget created by Kevin Ullyott for practice in creating widgets
Author: Kevin Ullyott
Version: 1.0
Author URI: http://modmacro.com/
*/


class kevintext extends WP_Widget {

    public function __construct() {
        parent::WP_Widget(false, $name=\'Kevins Textbox\');
        array(\'description\' => __(\'A text widget created by Kevin Ullyott for practice in creating widgets\') );
    }


    public function widget( $args, $instance ) {


        extract( $args );

        $headline = $instance[\'headline\'];      
        $text = $instance[\'text\'];      



        echo $before_widget;

        echo $before_title;

        echo "<p class=\\"headline\\">$headline</p>";

        echo $after_title;

        echo "<p class=\\"text\\">$text</p>";

        echo $after_widget;


    }

    public function update( $new_instance, $old_instance ) {
        $instance = array();
        $instance[\'headline\'] = ( $new_instance[\'headline\'] );
        $instance[\'text\'] = ( $new_instance[\'text\'] );
        return $instance;
    }


    public function form( $instance ) {

        $headline = $instance[ \'headline\' ];
        $text = $instance[ \'text\' ];

        ?>
        <p>
        <label for="<?php echo $this->get_field_id( \'headline\' ); ?>"><?php _e( \'Headline:\' ); ?></label> 
        <input class="widefat" id="<?php echo $this->get_field_id( \'headline\' ); ?>" name="<?php echo $this->get_field_name( \'headline\' ); ?>" type="text" value="<?php echo esc_attr( $headline ); ?>" />
        </p>

        <p>
        <label for="<?php echo $this->get_field_id( \'text\' ); ?>"><?php _e( \'Text:\' ); ?></label> 
        <input class="widefat" id="<?php echo $this->get_field_id( \'text\' ); ?>" name="<?php echo $this->get_field_name( \'text\' ); ?>" type="text" value="<?php echo esc_attr( $text ); ?>" />
        </p>


        <?php 
    }
}

add_action( \'widgets_init\', create_function(\'\', \'return register_widget("kevintext");\') );


?>

2 个回复
SO网友:s_ha_dum

您没有正确传递描述。真的,你根本没有通过考试。

public function __construct() {
    parent::WP_Widget(false, $name=\'Kevins Textbox\');
    array(\'description\' => __(\'A text widget created by Kevin Ullyott for practice in creating widgets\') );
}
“description”行正在创建一个数组,但您没有对其进行任何操作。它只是独自漂浮在太空中。你需要把它传给WP_Widget. Follow the example in the Codex:

/**
 * Register widget with WordPress.
 */
public function __construct() {
    parent::__construct(
        \'foo_widget\', // Base ID
        \'Foo_Widget\', // Name
        array( \'description\' => __( \'A Foo Widget\', \'text_domain\' ), ) // Args
    );
}
查看如何将ID、名称和数组全部传递给父构造函数?将其与代码进行比较,其中数组位于WP_Widget.

使命感WP_Widget 和打电话差不多__construct-- the first passes everything to the second. WP_Widget 是一个PHP5之前的样式构造函数,如源代码中所述。

此外,此处无需为变量指定名称,$name=\'Kevins Textbox\'. 传递变量时不能“命名”like you can in Python.

所以,您需要的是:

public function __construct() {
    parent::WP_Widget(
    // or parent::__construct(
        false, 
        \'Kevins Textbox\',
        array(
            \'description\' => __(\'A text widget created by Kevin Ullyott for practice in creating widgets\') 
        )
    );
    ;
}
你需要WP_Queryget_posts 获取您的帖子。

$fiveposts = get_posts(array(\'numberposts\' => 5);
var_dump($fiveposts); // should show you what you have to work with.
希望这有帮助。

SO网友:Rahil Wazir

您可以这样设置小部件的描述:

创建\\uu构造函数。

然后为小部件选项创建变量,如Description, 类,小部件的id。

    function __construct() {
        $widget_ops = array(
                \'description\' => __(\'Your Widget description goes here\'),
                \'classname\' => \'your_widget_class\',
                \'id\' => \'your_widget_id\'
            );
        parent::__construct(\'your_widget_id_backend\', \'Your Widget Title\', $widget_ops);
    }
调用父类(WP\\u小部件)构造函数。

父::\\u构造传递3个参数。First 参数传递html小部件id,该id应显示在后端的小部件部分下。Second 参数传递小部件标题和Third 参数传递之前使用变量设置的选项数组$widget_ops.

获取您最近的帖子。你可以试试这个。

$loop = new WP_Query(\'showposts=5&order=DESC\');

while($loop->have_posts()) : $loop->the_post();
    the_title();
endwhile;
以上代码将输出5篇最近的帖子标题。

结束

相关推荐

Alternative to esc_textarea

我需要一个替代函数来使用meta框中的textareas,而不是esc\\u textarea。问题是,当我将这个函数与textarea一起使用时,它会删除换行符和段落。是否有其他功能可以保持换行符和段落。我尝试过Codex中的验证参考页,但没有找到函数。