zoukankan      html  css  js  c++  java
  • wordpress的过滤器

    wordrpess钩子和过滤器同样重要,是插件开发的一个重要接口。过滤器原理跟钩子差不多,只不过功能不一样:动作钩子功能更多的偏向于执行一系列函数,而过滤器的功能是用来在输出一个变量给你一次修改它的机会。

    跟动作钩子一样,过滤器也有两个基本函数:apply_filters()和add_filter(),这些个函数都位于wp-include/plugin.php文件中。

    <?php      
    
        apply_filters($tag,$value);      
    
        //$tag  必需、你想创建的过滤器的名称      
    
        //$value 必需,挂在这个过滤器可以修改的值(参数)      
    
        //这两个参数是必须的,后面还可以带参数可到官网查看      
    
    ?>    
    
    <?php      
    
        add_filter($tag,$function_to_add,$priority,$accepted_args);      
    
        //$tag 必需,钩子名      
    
        //$function 必需,调用的函数      
    
        //优先级      
    
        //接受参数数量,默认1      
    
        //需要注意的是,用add_filter添加的过滤器必须要有个返回值      
    
    ?>    

    解释:apply_filters()函数也是创建一个钩子,并执行,和动作钩子的参数一样,不过它的两个参数都是必需的。因为过滤器的功能是改变变量的值,所以必需传递一个或多个变量。add_filter()往钩子上面挂函数,这些函数必需有个返回值,如果给你修改个参数,然后改没了那是要报错的。

    实例——修改一下网站的title信息

    输出title一般都使用了函数wp_title(),这个函数位于wp- includes/general-template.php文件第528行。

    我们查看函数,前面那一大截都是些判断,用来判断当前是什么页面,当前页面标题是什么。看到609行有代码:

    $title = apply_filters('wp_title', $title, $sep, $seplocation); 

    然后这一句的后面就是判断要不要输出了。这里创建并执行了一个名为wp_title的过滤器然后传递3个参数,①$titile就是标题,②$sep 就是标题的前面或后面截个字符,比如“|”,③$seplocation决定字符$sep(“|”)显示在标题左边还是标题右边。这里 apply_filers虽然传递了3个参数,但是注意了,主要的是修改$titile这个变量,后面两个是附加提供的参数,一般让你修改的时候还可以使用那两个参数,虽然他传递了3个参数,但是我们的返回值只能是一个,问什么函数能返回3个值吗?

    下面往主题functions.php文件中添加下面代码来修改$titile信息

    add_filter('wp_title','custom_title',10,3);   
    
    function custom_title($title,$a,$b){   
    
        if( $b === 'right' ){   
    
            $title = '阿树工作室'.$a;   
    
        }else{   
    
            $title = $b.'阿树工作室';   
    
        }   
    
        return $title;   
    
    }  

    就这样,就成功修改了title值,这一篇可能只有一个实例,也许讲的不够细,如果有地方有疑问,你可以查看前一篇,因为动作钩子和过滤器钩子很多地方都一样。
    过滤器钩子也有其它函数,例如:has_filter() current_filter() merge_filters() remove_filter() remove_all_filters()...

  • 相关阅读:
    input 蓝边
    4.【ac自动机】模式串匹配
    3.【二叉树】最近公共祖先
    2.【动态规划】最长回文子串
    1. 【线段树】
    DbUtil
    oauth2
    cas
    Spring-security-web
    JSON Web Tokens
  • 原文地址:https://www.cnblogs.com/sxwkt/p/3049821.html
Copyright © 2011-2022 走看看