WordPress阻止未授权域名访问REST API

方法1 在wp-config.php添加如下字段即可。域名为白名单,不在白名单的域名讲无法访问REST API define( 'WP_HTTP_BLOCK_EXTERNAL', TRUE ); define( 'WP_ACCESSIBLE_HOSTS', 'example.com, domain.com' ); 方法2 数组为白名单域名 登陆后必须要开放,因为编辑文章需要用到REST API function restrict_rest_api_to_localhost() { $whitelist = [ '127.0.0.1', "::1" ]; if( ! in_array($_SERVER['REMOTE_ADDR'], $whitelist ) ){ die( 'REST API is disabled' ); } } if (!is_user_logged_in() ) { add_action( ‘rest_api_init’, ‘restrict_rest_api_to_localhost’, 0 ); }

2023-03-28 · 1 min · Duke Yin

Wordpress Code Snippets

Admin Notice function dk_admin_notice() { ?> <div class="notice notice-success is-dismissible"> <p><?php _e( 'This is a success notice.', 'dukeyin' ); ?></p> </div> <?php } add_action( 'admin_notices', 'dk_admin_notice' ); //notice-success //notice-danger //notice-warning //notice-info Enqueue Style and JavaScripts Styles // Enqueue own styles function dk_enqueue_custom_styles() { wp_enqueue_style( 'main',get_template_directory_uri() .'/assets/css/main.css', array(),'1.0','all'); } add_action( ‘wp_enqueue_scripts’, ‘dk_enqueue_custom_styles’ ); //in frontend ...

2023-02-01 · 15 min · Duke Yin

Duke Yin API

自制了一个 API 返回一些随机媒体文件。 暂时不对外开放,记录一下参数,备忘。 Endpoint 请求地址: https://dpop.top/api/ *纯ipv6,不支持ipv4 Parameters 参数: key (必填)type (选填,获取媒体的类型,默认为混合图/音/视)dir(选填,默认为根目录)encode(可选,默认json输出) key string 密钥,鉴权用,当密钥错误则无法获取 dir string 子目录路径,将会包含此目录下的所有子目录及子目录内所有目录和文件。 根目录(默认)[子目录]%2f[子目录]%2f[子目录] type string 媒体类型 获取所有图/音/视文件 (默认)image 只获取图片video 只获取视频audio 只获取音频 留空时不会获取除图音视以外的其他文件类型。 encode string 输出格式 输出类型,取值如下 json (默认)text 输出纯文本的urlblock 输出对应html代码file 直接跳转url对应的文件 输出 code 状态码,取值如下: 0 错误1 未授权2 正常,成功 msg 状态信息,通常会有以下几种: ...

2022-10-29 · 1 min · Duke Yin

防止出现跨域错误

当一个网站是 a.com, 另一个网站是 b.com,如果我们在a站 放了一个存储在b站的图像链接,假如b站没有声明说允许a站使用,那么在a站就会出现错误,无法显示位于b站的这个图像乃至任何资源。 这就是跨域错误。 Access to [Something] at 'https://a.com/h.jpg' from origin 'https://a.com' has been blocked b CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. 两个不同域名、根域名和子域名、同一个域名的不同端口、同一个域名的不同协议,都会被认为是“不同域”,之间分享调用,都会受到CORS跨域政策的限制。 要彻底解决跨域问题,只能在源站上配置,也就是资源所在的站点,上述例子中的b站。 ...

2022-09-05 · 1 min · Duke Yin

PHP判断变量是否存在

$var=类型$var!empty($var) isset($var)""空字符串falsefalsetruenull无值falsefalsefalse0数字falsefalsetrue0.0浮点数falsefalsetrue"0"字符串falsefalsetrue"0.0"字符串truetruetrueFALSE布尔falsefalsetruearray()空数组falsefalsetruevar $var声明但空falsefalsefalse !empty($var) 等同于 ( isset($var) || ($var) )

2022-08-28 · 1 min · Duke Yin

CSS去除浏览器自带元素样式

去除浏览器赋予的样式 button,select{ -webkit-appearance:none } 去除输入框focus时的外边框 textarea:focus, input:focus{ outline: none; }

2022-08-10 · 1 min · Duke Yin

实用Windows批处理脚本合集

应确保.bat文件可以正常运行,如果不能打开.bat文件,则以管理员模式运行CMD,运行如下两条命令: assoc .bat=batfile ftype batfile="%1" %* 部分脚本需要ffmpeg,需先安装ffmpeg并且添加到系统变量。 提取mp3中的封面图像 @echo off echo The filename: %~n1 ffmpeg -i %~n1.mp3 -an -c:v copy %~n1.jpg pause 音频转为MP3 @echo off echo %CD% echo %~dp0 cd /d %~dp0 REM For first file REM %1 REM For multiple files echo %* ...

2022-07-05 · 1 min · Duke Yin

Windows XAMPP PHP添加 imagick 扩展

安装好XAMPP后,打开 localhost 进入phpinfo页面可以看到当前php的版本和扩展情况。 写这篇文章的时候XAMPP自带的是PHP8.1.5 不含imagic扩展。 1.下载并安装Windows版ImageMagick 首先打开 https://imagemagick.org/script/download.php 划至最底部,找到 “Windows Binary Release”,下载最新版exe并安装。安装过程一路next即可,无需额外配置。 安装好之后打开 XAMPP控制面板,停止Apache,理论上不用停止其他组件,但为了稳妥起见,我这里将MySQL也一并停止了。 2.下载Imagick for PHP 然后来到 https://pecl.php.net/package/imagick 找到最新的stable版本,点击带 Windows logo的DLL链接。 选择与XAMPP PHP版本对应的下载链接,这里选择PHP8.1,我的实例是x64位,所以选择 8.1 Thread Safe (TS) x64 下载。 下载好之后是一个压缩包,打开压缩包,找到位于较底部的 php_imagick.dll 将其解压出来(其余文件无需解压),放置到 C:\xampp\php\ext 如果你的XAMPP安装位置有修改,则根据你的实际情况找路径。 然后,我们需要通过php.ini声明加载扩展,用你习惯的文本编辑器打开 C:\xampp\php\php.in,如果你找不到php.ini文件,可以打开XAMPP控制面板,在Apache行找到Config按钮,点击找到PHP(php.ini),也可以直接打开php.ini。 在现有的php.ini中搜索“Dynamic Extensions”,在其后的区域加入: extension=php_imagick 保存并退出。 3.下载所需的Imagick二进制文件 再来到 https://windows.php.net/downloads/pecl/deps/ 找到含有 ImageMagick-* 的链接,下载最新的与你的环境一致的压缩包,我这里下载的是 ImageMagick-7.1.0-18-vc15-x64.zip 如果你的操作系统是32位,则下载x86版本。 ...

2022-05-17 · 1 min · Duke Yin

使用Pushover推送群晖系统消息

Pushover是一个消息推送平台,可以给手机、桌面、浏览器发送自定义的推送消息。按照平台购买其客户端,即可享受此平台的永久推送服务。费用如下: 安卓 $5桌面 $5, 即用桌面浏览器的插件发送推送通知,含Chrome,Firefox, Safari。iOS $5 无需购买全部。我自己就只买了iOS平台。 以下例子将在Pushover管理面板搭建“应用”,并且让群晖NAS借助此应用发送推送消息到客户端。 获取USER KEY 当你购买了APP并注册了一个账号,访问 https://pushover.net/ 登录后,即可看到管理控制面板。 在页面右上角有一个“Your User Key”,这类似于你的身份识别码(很重要),将灰色框中的密钥复制,临时粘贴到文本编辑器中备用。 创建应用 用你的账号登录Pushover网站, 在最底部 Your Applications 处点击 Create an Application/API Token Name 为你的应用取一个名字,无特定要求,自己能认出即可,比如“NAS 920+”Description 此应用的描述,可以简短描述下用途,比如“Send message from my nas”URL 此应用的网址,如果没有可以不填。Icon 此应用的图标,要求72x72像素尺寸,PNG图片,可带Alpha通道,将显示在推送消息前面。 填写完成后,勾选从来也没人看的服务协议、初始教程复选框,再点击:“Create Application” ...

2022-04-19 · 1 min · Duke Yin

群晖Docker安装Jellyfin

之所以选用Jellyfin作为主力媒体服务端,是因为Jellyfin不同于Emby和Plex,是一个开源的程序,原生支持硬件解码。 而Emby和Plex需要支付高额的会员费,才能享受硬件解码。 硬件解码的好处是,带有核显的CPU可以充分利用核显去做视频解码工作,而软件层面禁用了硬件解码,相当于全部负担都压在了CPU上,核显却闲着。 虽然群晖的Community套件源里也有Jellyfin,但是比较致命的是,经过实测套件版的Jellyfin不支持硬件解码,每当你在远程切换清晰度需要转码的时候,占用CPU会非常高,所以虽然Docker版Jellyfin安装麻烦、升级麻烦,但是为了硬解,为了长远的使用,还是建议使用Docker版。 首先要在群晖的套件中心安装Docker。 打开Docker后,左侧找到注册表。 右上搜索jellyfin 双击下载。选Latest最新版。 国内下载会比较慢,可搜索使用Docker加速镜像,本文不再赘述。 待下载完成后,就可以在左侧映像栏看到Jellyfin的包,相当于Windows的安装包镜像。 因为Docker里的应用相当于是个封闭的空间,我们要想往里面存放文件必须要映射本地文件夹,所以用FileStation先新建几个目录: docker目录下面新建一个文件夹取名jellyfin,jellyfin下面新建三个文件夹 dockerjellyfinconfigfontstranscodedejavu 包括jellyfin文件夹在内的所有文件夹,需要修改权限到everyone 可读写。 其中transcode是可选的。我用来存放转码文件,jellyfin默认会存到其他地方。 然后我们回到Docker,映像,双击启动。 然后勾选使用高级权限执行容器 再点击高级设置。顶部选择存储空间 ...

2022-03-20 · 1 min · Duke Yin