道招

参考教程实现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钩子Action Hook与Filter Hook

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

修改高亮显示代码插件wp-syntax-button插件

wp-syntax-button插件按设计原理,在插入代码是背景是浅灰色的,但是我在后台也文章的时候,它却发神经的不显示背景,让我无法区分内容是否在代码的div内,老是要切换到html模式去看,繁琐, 阅读更多…

eclipse添加插件

eclipse做为当下最流行的开源IDE之一,Eclipse的一大优势就在于其无数优秀的插件。一个好的插件可以大大的提高我们的工作效率,学习如何安装Eclipse插件自然也是必修课了。下面介绍Ecli 阅读更多…

添加了runcode运行代码插件

增加一个文本框用来运行代码(html/css/javascript) 使用方法 // 演示 window.alert("Hello world!"); You can 阅读更多…

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

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

从vuecli3学习webpack记录(零)整体流程

今天看了下自己之前写的从vuecli3学习webpack记录系列,感觉自己居然没有在一开始的时候把vuecli的 npm run serve 的整体流程在一篇文章里面完整的讲完,可能是因为打字打的手 阅读更多…

关注道招网公众帐号
道招开发者二群