承接 k-t-holland/hook-manager 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

k-t-holland/hook-manager

Composer 安装命令:

composer require k-t-holland/hook-manager

包简介

Creates a class based WordPress hook management system.

README 文档

README

Simple class to help manage hooks when writing WordPress plugins

Usage Example

AdminHooks.php

<?php

use KTHolland\HookManager;
use KTHolland\HookManager\ActionHook;
use KTHolland\HookManager\FilterHook;

class AdminHooks {

    protected $hookManager;
    
    public function __construct(HookManager $hookManager){
    
        $this->hookManager = $hookManager;
        
    }
    
    public function load(){
    
        $this->hookManager
            ->addHook(new ActionHook('init', $this, 'registerPostType'))
            ->addHook(new ActionHook('wp_enqueue_scripts', $this, 'enqueueScripts', 10))
            ->addHook(new ActionHook('wp_insert_post', $this, 'appendUserSignatureToNewPosts', 10, 3))
            
            // This hook is being marked as removable
            ->addHook(new ActionHook('wp_update_post', $this, 'updatePostRevisionCount', 10, 2), true);
    }
    
    public function enqueueScripts(){
    
	      wp_enqueue_style( 'core', 'my-style.css', false );
	      wp_enqueue_script( 'my-js', 'my-script.js', false );
    
    }
    
    public function appendUserSignatureToNewPosts($post_id, $post, $update){
    
        $post->post_content = $post->post_content
          . get_user_meta($post->post_author, 'signature', true) ?: '';
        
        // We don't want updateRevisionCount to fire because of update.
        // Remove all hooks flagged as removable.
        $this->hookManager->unloadRemovableHooks();
        
        wp_update_post($post);
        
        // Restore removed hooks.
        $this->hookManager->loadRemovableHooks();
        
    }
    
    public function updatePostRevisionCount($post, $wp_error){
    
        $meta_key = 'revision_count';
        
        $prev_count = (int) get_postmeta($post->ID, $meta_key, true);
        
        $new_count = $prev_count + 1;
        
        update_post_meta( $post->ID, $meta_key, $new_count, $prev_count );
        
    }
    
}

PublicHooks.php

<?php

use KTHolland\HookManager;
use KTHolland\HookManager\ActionHook;
use KTHolland\HookManager\FilterHook;


class PublicHooks {

    protected $hookManager;
    
    public function __construct(HookManager $hookManager){
    
        $this->hookManager = $hookManager;
        
    }
    
    public function load(){
    
        $this->hookManager
            ->addHook(new FilterHook('single_template', $this, 'singleTemplate', 99));
    
    }
    
    public function singleTemplate($single){
    
        $custom_single_template = 'path/to/single-template.php'
    
        if(file_exists($custom_single_template)){
        
            return $custom_single_template;
            
        }
        
        return $single
        
    }
}

Within your my-plugin.php file

<?php

use MyPluginNamespace\AdminHooks;
use MyPluginNamespace\PublicHooks;
use KTHolland\HookManager;

if(is_admin()){

    (new AdminHooks( new HookManager() ))->load();
    
}

(new PublicHooks( new HookManager() ))->load();

统计信息

  • 总下载量: 9
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 2
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 2
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2018-09-13

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固