道招

参考教程实现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?

相关文章

eclipse安装tomcat插件

tomcatPlugin插件下载和安装方法 下载安装Sysdeo Tomcat插件,用来管理Tomcat服务器,提供断点调试功能,并且能自动建立Tomcat环境,修改其配置文件,是一个不错的T 阅读更多…

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

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

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

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

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

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

eclipse添加插件

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

sae-eclipse插件加新浪sae进行java项目开发

1.首先当然是下载eclipse和sae-eclipse插件喽,sae-eclipse的 下载地址 . 2.在eclipse新建一个Dynamic Web Project ,然后再在WebCon 阅读更多…

关注道招网公众帐号