参考教程实现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
相关文章
eclipse安装tomcat插件
tomcatPlugin插件下载和安装方法 下载安装Sysdeo Tomcat插件,用来管理Tomcat服务器,提供断点调试功能,并且能自动建立Tomcat环境,修改其配置文件,是一个不错的T 阅读更多…
添加了runcode运行代码插件
增加一个文本框用来运行代码(html/css/javascript) 使用方法 // 演示 window.alert("Hello world!"); You can 阅读更多…
WordPress钩子Action Hook与Filter Hook
WordPress的Action Hook与Filter Hook WordPress中的 Hook 有两种,分别是 Action Hook 及 Filter Hook ,一开始你可以先把这两种 阅读更多…
eclipse添加插件
eclipse做为当下最流行的开源IDE之一,Eclipse的一大优势就在于其无数优秀的插件。一个好的插件可以大大的提高我们的工作效率,学习如何安装Eclipse插件自然也是必修课了。下面介绍Ecli 阅读更多…
CKEditor富文本编辑器职责分离
背景 CKEditor富文本 编辑器 (生产版本1.1.1及以前)里面包含富文本基础插件及当前最新的邮件特定的业务插件(签名、快捷回复、邀评、默认样式、选择颜色、插入图片、粘贴模式) O端 阅读更多…
从vuecli3学习webpack记录(零)整体流程
今天看了下自己之前写的从vuecli3学习webpack记录系列,感觉自己居然没有在一开始的时候把vuecli的 npm run serve 的整体流程在一篇文章里面完整的讲完,可能是因为打字打的手 阅读更多…
