道招

参考教程实现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钩子Action Hook与Filter Hook下一篇:转译:使用react hooks优化回调函数在组件间的传递,useState,useReducer?

相关文章

小改wordpress的get_permalink,支持固定链接设置值和插件获取值不同

因为本站的前端展示放弃使用WordPress博客系统的,而是改用自己的vue服务端渲染了,在保留原来的链接地址(比如 https://www.daozhao.com/8531.html )不变的情h 阅读更多…

wordpress使用多说插件后带来的问题

今天本想做个新建个页面,做个联通账号在线解密页面,以解决部分网友在路由器中输入“正确的”联通宽带的账号但无法拨号成功的问题,但是发现我使用自定义模板的方式创建的页面并没有如我的意愿来显示,而只是光秃秃 阅读更多…

WordPress钩子Action Hook与Filter Hook

WordPress的Action Hook与Filter Hook WordPress中的 Hook 有两种,分别是 Action Hook 及 Filter Hook ,一开始你可以先把这两种 阅读更多…

markdown是不会用还是不好用?自研vscode插件来帮忙,甲方运营人员大呼好用

背景 随着使用markdown语法编写内容越来越流行,有的程序员也开始给甲方做网站时使用markdown来编写文章了,比如用hexo博客系统建站。 使用markdown语法能减轻程序员寻找富 阅读更多…

10个JQuery插件

与大家分享的是10款最新收集的 jQuery 插件,有文本效果,地图,表单和表格等等。这些作者的想法特别新颖,希望你能从中找到自己需要的插件。   1. DataTables Column Filte 阅读更多…

wordpress连接微博老是更新,作者也忒勤奋了吧

相信不少wordpress博客程序都使用了wordpress连接微博,但是近些时间作者更新太频繁了,老是添加一些其他sns的账号登陆功能,大有将所有开放开放登陆功能的网站全部网罗进来的意思啊。个人不是 阅读更多…

关注道招网公众帐号
友情链接
消息推送
道招网关注互联网,分享IT资讯,前沿科技、编程技术,是否允许文章更新后推送通知消息。
允许
不用了