中秋福利:WordPress简码教程(小白也能学会)

《中秋福利:WordPress简码教程(小白也能学会)》由珠海SEO骆辉校seo博客于2016年09月15日整理发布

WordPress默认提供了几个小部件。其中之一是“文本”窗口小插件件,正如它的名字一样,让你的文本添加到一个小插件。你可以用它来添加任何HTML代码。

这意味着,你还可以在这个小插件中插入JavaScript代码,所以这是非常强大的。但是,如果你需要更多的,像一个PHP脚本来访问存储在服务器的一些数据,这个widget默认是做不到的。

它类似于一个功能。这就是为什么,我们能够使用简码做任何我们想要的。要做到这一点,我们可以使用widget_text过滤器。该过滤器被称为允许在“文本”窗口小部件的内容的修改。这里我们将用它来 访问WordPress在这个小部件来分析简码。

在WordPress的简码实现得益于解析功能。它接受一个必需的参数,分析文本,并返回解析文本。这意味着,我们可以直接使用此功能作为一个回调函数的过滤器。do_shortcode()widget_text

下面的代码可以在一个插件文件或中使用你的主题文件。functions.php

<?php
add_filter('widget_text', 'do_shortcode');
?>

而我们就大功告成了。现在,您在“文本”窗口小部件键入任何现有的简码会被解析。

简码

创建一个新的Widget简码

另外,我们还可以创建自己的小部件。作为默认的“文本”窗口小部件完美的作品,我们可以简单地适应从下面(中找到它的代码文件)。值得注意的是,我们应该创造我们自己的插件,不用修改核心WordPress的文件。/wp-includes/default-widgets.php

<?php
class WP_Widget_Text extends WP_Widget {

    public function __construct() {
        $widget_ops = array('classname' => 'widget_text', 'description' => __('Arbitrary text or HTML.'));
        $control_ops = array('width' => 400, 'height' => 350);
        parent::__construct('text', __('Text'), $widget_ops, $control_ops);
    }

    /**
     * @param array $args
     * @param array $instance
     */
    public function widget( $args, $instance ) {
        /** This filter is documented in wp-includes/default-widgets.php */
        $title = apply_filters( 'widget_title', empty( $instance['title'] ) ? '' : $instance['title'], $instance, $this->id_base );

        /**
         * Filter the content of the Text widget.
         *
         * @since 2.3.0
         *
         * @param string    $widget_text The widget content.
         * @param WP_Widget $instance    WP_Widget instance.
         */
        $text = apply_filters( 'widget_text', empty( $instance['text'] ) ? '' : $instance['text'], $instance );
        echo $args['before_widget'];
        if ( ! empty( $title ) ) {
            echo $args['before_title'] . $title . $args['after_title'];
        } ?>
            <div class="textwidget"><?php echo !empty( $instance['filter'] ) ? wpautop( $text ) : $text; ?></div>
        <?php
        echo $args['after_widget'];
    }

    /**
     * @param array $new_instance
     * @param array $old_instance
     * @return array
     */
    public function update( $new_instance, $old_instance ) {
        $instance = $old_instance;
        $instance['title'] = strip_tags($new_instance['title']);
        if ( current_user_can('unfiltered_html') )
            $instance['text'] =  $new_instance['text'];
        else
            $instance['text'] = stripslashes( wp_filter_post_kses( addslashes($new_instance['text']) ) ); // wp_filter_post_kses() expects slashed
        $instance['filter'] = ! empty( $new_instance['filter'] );
        return $instance;
    }

    /**
     * @param array $instance
     */
    public function form( $instance ) {
        $instance = wp_parse_args( (array) $instance, array( 'title' => '', 'text' => '' ) );
        $title = strip_tags($instance['title']);
        $text = esc_textarea($instance['text']);
?>
        <p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label>
        <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo esc_attr($title); ?>" /></p>

        <p><label for="<?php echo $this->get_field_id( 'text' ); ?>"><?php _e( 'Content:' ); ?></label>
        <textarea class="widefat" rows="16" cols="20" id="<?php echo $this->get_field_id('text'); ?>" name="<?php echo $this->get_field_name('text'); ?>"><?php echo $text; ?></textarea></p>

        <p><input id="<?php echo $this->get_field_id('filter'); ?>" name="<?php echo $this->get_field_name('filter'); ?>" type="checkbox" <?php checked(isset($instance['filter']) ? $instance['filter'] : 0); ?> />&nbsp;<label for="<?php echo $this->get_field_id('filter'); ?>"><?php _e('Automatically add paragraphs'); ?></label></p>
<?php
    }
}
?>

我们没有很多细节在这里改变。改变的第一件事是类的名称。我选择了它命名WP_Widget_Shortcodes,但随意选择想要的任何名称。由于这一类的构造函数设置有关小部件本身的一些信息,我们还需要对其进行修改。

<?php
public function __construct() {
    $widget_ops = array('classname' => 'widget_shortcodes', 'description' => __('Arbitrary text or HTML with shortcodes.'));
    $control_ops = array('width' => 400, 'height' => 350);
    parent::__construct('shortcodes', __('Shortcodes'), $widget_ops, $control_ops);
}
?>

另外要改变的是在描述到WordPress如何显示小工具的方法。我们改变的内容,其中包含要显示的文本变量。我们去掉调过滤器,和我们的应用功能,此内容。widget()$textwidget_textdo_shortcode()

<?php
$text = empty( $instance['text'] ) ? '' : do_shortcode($instance['text']);
?>

然后,我们需要注册我们的小部件,以便能够将其添加像任何其他部件。这样就可以实现得益于widgets_init触发一次动作的WordPress注册默认部件。

<?php
add_action('widgets_init', function() {
    register_widget('WP_Widget_Shortcodes');
});
?>

现在,可以找到我们的可用小部件的列表控件。你可以把它添加到任何兼容的区域,它会解释你使用任何简吗。

结束语

使用简码这个小工具是不是很简单,但是你必须要小心。其实,不是每一个简码会契合了显示部件的地方。如果简码具有一个固定的宽度,这可以是一个问题。

请注意,我们在默认的“文本”窗口小部件使用的变化是微乎其微的。如果你想自定义你的widget你可以改变任何东西。您可以检索我们的例子中创建插件可供下载,我们使用的过滤器和小部件在这里,如果你想进一步实验。

来源:珠海seo网站优化骆辉校博客 欢迎分享

原文地址:http://www.luohuixiao.com/wangzhanjianshe/224.html

转载请注明出处:珠海seo网站优化 » 中秋福利:WordPress简码教程(小白也能学会)

赞 (3)
分享到:更多 ()

评论 0