自定义小工具为 WordPress 添加一言

引言

一言指的就是一句话,可以是动漫中的台词,也可以是网络上的各种小段子。 或是感动,或是开心,有或是单纯的回忆。来到这里,留下你所喜欢的那一句句话,与大家分享,这就是一言存在的目的。

效果演示

图片[1]-自定义小工具为 WordPress 添加一言-日有所思博客

配置教程

配置原理

此方法是将一言集成到一个小工具中,方便进行使用。

图片[2]-自定义小工具为 WordPress 添加一言-日有所思博客

配置方法

将下列代码添加进主题的 functions.php 文件中或创建一个插件文件并添加到 WordPress 插件目录中,然后在 WordPress 后台的“外观” -> “小工具”中进行配置。

[c-alert type=”warning”]在使用前请先备份好文件,配置自定义小工具可能会存在风险![/c-alert]

[loginshow]

class Hitokoto_Widget extends WP_Widget {

    // 构造方法
    public function __construct() {
        parent::__construct(
            'hitokoto_widget', // Base ID
            '一言', // Name
            array('description' => __('显示一言的自定义小工具', 'text_domain'),) // Args
        );
    }

    // 小工具输出
    public function widget($args, $instance) {
        // 提取用户定义的标题
        $title = !empty($instance['title']) ? $instance['title'] : __('一言', 'text_domain');
        
        // 在小工具前后输出的 HTML
        echo $args['before_widget'];

        // 显示标题
        if (!empty($title)) {
            echo $args['before_title'] . esc_html($title) . $args['after_title'];
        }

        // 显示一言
        echo $this->get_hitokoto();

        // 小工具结尾
        echo $args['after_widget'];
    }

    // 小工具设置表单
    public function form($instance) {
        // 获取标题
        $title = !empty($instance['title']) ? $instance['title'] : __('一言', 'text_domain');
        ?>
        <p>
            <label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('标题:', 'text_domain'); ?></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>
        <?php
    }

    // 保存小工具设置
    public function update($new_instance, $old_instance) {
        $instance = array();
        $instance['title'] = (!empty($new_instance['title'])) ? sanitize_text_field($new_instance['title']) : '';

        return $instance;
    }

    // 获取一言的函数
    private function get_hitokoto() {
        $url = 'https://v1.hitokoto.cn/';
        $response = wp_remote_get($url);

        if (!is_wp_error($response) && 200 == wp_remote_retrieve_response_code($response)) {
            $data = json_decode(wp_remote_retrieve_body($response), true);
            // 将一言和其出处拼接在一起返回
            return '<p>' . esc_html($data['hitokoto']) . ' —— ' . esc_html($data['from']) . '</p>';
        }

        return '<p>无法获取一言</p>';
    }
}

// 注册小工具
function register_hitokoto_widget() {
    register_widget('Hitokoto_Widget');
}
add_action('widgets_init', 'register_hitokoto_widget');

[/loginshow]

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容