引言
一言指的就是一句话,可以是动漫中的台词,也可以是网络上的各种小段子。 或是感动,或是开心,有或是单纯的回忆。来到这里,留下你所喜欢的那一句句话,与大家分享,这就是一言存在的目的。
效果演示
配置教程
配置原理
此方法是将一言集成到一个小工具中,方便进行使用。
配置方法
将下列代码添加进主题的 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
暂无评论内容