参考教程实现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
更新时间:
上一篇:下一篇: