参考教程实现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
相关文章
修改高亮显示代码插件wp-syntax-button插件
wp-syntax-button插件按设计原理,在插入代码是背景是浅灰色的,但是我在后台也文章的时候,它却发神经的不显示背景,让我无法区分内容是否在代码的div内,老是要切换到html模式去看,繁琐, 阅读更多…
wordpress使用多说插件后带来的问题
今天本想做个新建个页面,做个联通账号在线解密页面,以解决部分网友在路由器中输入“正确的”联通宽带的账号但无法拨号成功的问题,但是发现我使用自定义模板的方式创建的页面并没有如我的意愿来显示,而只是光秃秃 阅读更多…
WordPress钩子Action Hook与Filter Hook
WordPress的Action Hook与Filter Hook WordPress中的 Hook 有两种,分别是 Action Hook 及 Filter Hook ,一开始你可以先把这两种 阅读更多…
sae-eclipse插件加新浪sae进行java项目开发
1.首先当然是下载eclipse和sae-eclipse插件喽,sae-eclipse的 下载地址 . 2.在eclipse新建一个Dynamic Web Project ,然后再在WebCon 阅读更多…
添加了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 ,一开始你可以先把这两种 阅读更多…