参考教程实现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
更新时间:
相关文章
从vuecli3学习webpack记录(零)整体流程
今天看了下自己之前写的从vuecli3学习webpack记录系列,感觉自己居然没有在一开始的时候把vuecli的 npm run serve 的整体流程在一篇文章里面完整的讲完,可能是因为打字打的手 阅读更多…
wordpress连接微博老是更新,作者也忒勤奋了吧
相信不少wordpress博客程序都使用了wordpress连接微博,但是近些时间作者更新太频繁了,老是添加一些其他sns的账号登陆功能,大有将所有开放开放登陆功能的网站全部网罗进来的意思啊。个人不是 阅读更多…
添加了runcode运行代码插件
增加一个文本框用来运行代码(html/css/javascript) 使用方法 // 演示 window.alert("Hello world!"); You can 阅读更多…
markdown是不会用还是不好用?自研vscode插件来帮忙,甲方运营人员大呼好用
背景 随着使用markdown语法编写内容越来越流行,有的程序员也开始给甲方做网站时使用markdown来编写文章了,比如用hexo博客系统建站。 使用markdown语法能减轻程序员寻找富 阅读更多…
sae-eclipse插件加新浪sae进行java项目开发
1.首先当然是下载eclipse和sae-eclipse插件喽,sae-eclipse的 下载地址 . 2.在eclipse新建一个Dynamic Web Project ,然后再在WebCon 阅读更多…