参考教程实现WordPress更新博文通知钩子插件
参考教程实现WordPress更新博文通知钩子插件
搞一个更新博客文章的钩子插件,目前的功能是更新自己的PWA缓存版本
<?php
/*
Plugin Name: Daozhao Blog
Description: wordpress操作post的钩子处理插件
Version: 1.1
Author: Shadow Prompt
Author URI: https://www.daozhao.com
License: GPLv2
*/
if(defined('ABSPATH') && defined('WPINC')) {
add_action("init", array("daozhaoBlog", "Enable"), 15, 0);
register_activation_hook( __FILE__, 'activation');
register_deactivation_hook( __FILE__, 'deactivation' );
add_action('plugins_loaded', 'daozhao_footer_message_plugin');
register_uninstall_hook( __FILE__, 'uninstall' );
}
function daozhao_footer_message_plugin() {
echo `加载完成了`;
add_action( 'wp_footer', 'daozhao_footer_message', 100 );
activation();
}
function activation() {
add_action('save_post', 'daozhao_blog_do_post', 100);
}
function daozhao_footer_message() {
echo `基于 <a href="http://wordpress.org" >WordPress </a>架设。`;
}
function deactivation(){
}
function uninstall() {
}
class daozhaoVersion{
public $cacheName;
function __construct($v) {
$this->cacheName = $v;
}
}
// https://www.runoob.com/php/php-ref-curl.html
function postUrl($url, $data){
$data = json_encode($data);
$headerArray =array("Content-type:application/json", "Accept:application/json");
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,FALSE);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl,CURLOPT_HTTPHEADER,$headerArray);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($curl);
curl_close($curl);
return json_decode($output, true);
}
function daozhao_blog_do_post($post_id) {
$queryUrl = 'xxx.do';
$updateUrl = 'yyy.do';
$thePath = plugin_dir_path( __FILE__ );
$result = postUrl($queryUrl, new daozhaoVersion("daozhao-v2.00"));
$cacheName = explode("-v", $result["cacheName"]);
$preVersion = number_format($cacheName[1], 3);
$newVersion = "daozhao-v".($preVersion + 0.01);
$result = postUrl($updateUrl, new daozhaoVersion($newVersion));
file_put_contents( $thePath.'log.txt', $result->cacheName.' by '.$post_id);
echo 'post_id: '.$post_id;
}
?>
在更新接口yyy.do收到通知后更新service-worker.js里面的版本,保证最新的文章能在列表中刷出来。
实践发现‘save_post’存在可能被其它插件或者时机调用的情况,所以建议我们通过数据库查询判断下$row['post_type'] == "post" && $row['post_status'] == "publish"
再进行更新调用接口的操作。
- 分类:
- WordPress
相关文章
webpack笔记——hook执行时call的是什么
我们一般使用的插件都是Hook子类,比如SyncHook,没有复杂的重写基类Hook的compile方法 先看Hook基类 // node_module/tapable/Hook.js cla 阅读更多…
markdown是不会用还是不好用?自研vscode插件来帮忙,甲方运营人员大呼好用
背景 随着使用markdown语法编写内容越来越流行,有的程序员也开始给甲方做网站时使用markdown来编写文章了,比如用hexo博客系统建站。 使用markdown语法能减轻程序员寻找富 阅读更多…
WordPress钩子Action Hook与Filter Hook
WordPress的Action Hook与Filter Hook WordPress中的 Hook 有两种,分别是 Action Hook 及 Filter Hook ,一开始你可以先把这两种 阅读更多…
eclipse安装tomcat插件
tomcatPlugin插件下载和安装方法 下载安装Sysdeo Tomcat插件,用来管理Tomcat服务器,提供断点调试功能,并且能自动建立Tomcat环境,修改其配置文件,是一个不错的T 阅读更多…
WordPress钩子Action Hook与Filter Hook
WordPress的Action Hook与Filter Hook WordPress中的 Hook 有两种,分别是 Action Hook 及 Filter Hook ,一开始你可以先把这两种 阅读更多…
修改高亮显示代码插件wp-syntax-button插件
wp-syntax-button插件按设计原理,在插入代码是背景是浅灰色的,但是我在后台也文章的时候,它却发神经的不显示背景,让我无法区分内容是否在代码的div内,老是要切换到html模式去看,繁琐, 阅读更多…