Live 2D

Live2D看板娘上线啦

很高兴,插件经过了审核,并可以在wordpress插件库中上线。

可以通过搜索Live 2D、萌等关键词进行搜索和安装。

后期我准备把对话功能加入插件中,主要是和AI对话,目前还在考虑对话样式的问题。

其实我还有考虑如何更容易的制作模型,不知道做一个模型的平台是否靠谱,先研究一下原作者的代码。

Live 2D

看板娘改造完成了

fghrsh.net弄来的看板娘被改造到了WordPress插件中,这中间遇到不少坑。

首先是我不会PHP的问题,大部分都是在网上查的,我一直以为弱类型语言比较随意,其实也是需要进行数据类型的强转的。这个主要是在WordPress的register_setting函数中,有一个sanitize回调函数,这个回调函数主要是获得传值并进行数据清理,在看板娘中有如下代码:

if (!live2d_settings.showToolMenu) $('.waifu-tool').hide();
if (!live2d_settings.canCloseLive2d) $('.waifu-tool .fui-cross').hide();
if (!live2d_settings.canSwitchModel) $('.waifu-tool .fui-eye').hide();
if (!live2d_settings.canSwitchTextures) $('.waifu-tool .fui-user').hide();
if (!live2d_settings.canSwitchHitokoto) $('.waifu-tool .fui-chat').hide();
if (!live2d_settings.canTakeScreenshot) $('.waifu-tool .fui-photo').hide();
if (!live2d_settings.canTurnToHomePage) $('.waifu-tool .fui-home').hide();
if (!live2d_settings.canTurnToAboutPage) $('.waifu-tool .fui-info-circle').hide();

这里的设置接收的是一个Boolean类型,在JSON序列化之后这个对象中的每一个属性都变成了String 类型,无法进行判断。所以还是不能偷懒,最后强制转换为Boolean类型就可以使用了。

之前还想偷懒不进行register_activation_hook钩子的设定,后来发现可能会带来不少麻烦事,所以还是选择在安装插件的时候直接向options表中写入数据,并在register_uninstall_hook卸载插件钩子的时候将增加的字段删除,保证WP的数据库不会保留太多的垃圾数据。

去除了一个鼠标事件.waifu #live2d可以避免鼠标每次经过看板娘的时候他就混乱的说各种话。

因为在界面中动态增加array真的太麻烦了,所以没有做某个事件的多语言随机。

最后,设置图:

闲聊

WordPress插件开发:为add_settings_field 添加多个input

我在做插件的时候,发现有一些数组型的插件设置,想保存到同一个字段中,但是在国内找了一些文章,没有描述如何活用add_settings_field 。

我这次就尝试如何给一个add_settings_field中放置多个input,

add_settings_field(
    'hour_tips', // id
    '每个小时的提示', // title
    array( $this, 'hour_tips_callback' ), // callback
    'live-2d-advanced-admin', // page
    'live_2d_advanced_setting_section' // section
);

在这里,使用hour_tips_callback 作为此控件的回调方法

public function hour_tips_callback() {
    printf(
        '<input class="regular-text" style="width: 100px" type="text" name="live_2d_advanced_option_name[hour_tips][0][0]" id="hour_tips_1" value="%s"> 时 
         <input class="regular-text" type="text" name="live_2d_advanced_option_name[hour_tips][0][1]" id="hour_tips_2" value="%s"><br />',
        isset( $this->live_2d_advanced_options['hour_tips'][0][0] ) ? esc_attr( $this->live_2d_advanced_options['hour_tips'][0][0]) : '',
        isset( $this->live_2d_advanced_options['hour_tips'][0][1] ) ? esc_attr( $this->live_2d_advanced_options['hour_tips'][0][1]) : ''
    );
}

在options名字中:live_2d_advanced_options 作为一个options的字段,可以存储多维数据,我就把此作为Array,保存成了二维数组,我不知道在PHP中应该怎么描述,应为我一直是做.net的开发,对这个只是刚入门,我从数据库观察,其大致原理为:在wp-options这个标中创建一个新行,其名称为live_2d_advanced_option_name,其中存储一个WP定义的数据组,数据组是字符串,可保存普通字符串或者是一个List。

add_settings_field的sanitize过滤器中,需要传递一个不经过过滤的对象:

if ( isset( $input['hour_tips'] ) ) {
    $sanitary_values['hour_tips'] = $input['hour_tips'];
}

这样数据就会被保存至Wp-api中存储至wp-options内。

旅行

今天周末

疫情又来了,趁着疫情还没开始蔓延,我和媳妇赶紧出去逛逛,去了石刻博物馆,后来我想起很早很早以前我来过这里,是参加一个漫展的。

石刻博物馆结束之后,我们就直接去了对面的动物园,旺季门票15元,真的比石刻博物馆的20元门票值多了,好久没来北京动物园了,我上学的时候还来过几次。

Live 2D

把Live 2D看板娘添加到wordpress

今天算是完成了基本设置功能,我把这个功能在版本中列为1.1

如果你看到我的这篇文章,请移步到Github上进行插件下载,安装完成后即可在后台进行基本设置。

高级设置还在制作中,因为刚开始学习PHP相关的内容,本人又是产品经理岗位,可能更新速度并不是很快。

高级设置目前可以进行保存,但是保存的内容是我预设的值,比原作者预设值少一些,主要少在事件消息上。因为原作者使用的是Z-blog,他的选择器不适用于WordPress,如果你知道如何使用选择器,可修改 “src/waifu-options.php” 中的“可循环”,追加内容后,可自己在整个页面的事件中进行定义。

闲聊

今天来写第一篇文章

说起来也是逗,很久没折腾这种东西的我,这几天开始折腾WordPress,我也不知道是哪里心血来潮。

之前建WordPress都是改代码,从来没搞过插件,萌豚心态严重,所以我就安装了Live2D 看板娘 ,对于我这个33岁的萌豚来说,这玩意还是挺有意思的,但是我在Fork中没有找到做成插件的,唯一就是作者做了Z-blog的插件,我要不自己做一个吧!

想换工作,但是还是喜欢写代码,作为一个喜欢写代码的产品经理来说,可能还是改错行了~

不说了,先研究明白再写正片。