PHP学习笔记(七)
《wordpress 50个过滤钩子》 11-20
11.gettext: 过滤wordpress的翻译数据。
在wordpress中,使用__(), _e(), _x(), _ex(), 的内容可以在翻译文件中生成,病根据不同的location加载不同的po文件从而翻译。使用gettext钩子,可以过滤翻译的内容。
<?php add_filter( 'gettext', 'gettext_example', 20, 3 ); function gettext_example( $translated_text, $text, $domain ) {
switch ( $translated_text ) {
case 'E-meil Adress' :
$translated_text = __( 'Email Address', 'plugin_text_domain' );
break;
}
return $translated_text
} // Example source: http://speakinginbytes.com/2013/10/gettext-filter-wordpress/ ?>
ps: __() 和_e()都是返回对应当前语言的字符串内容,区别是__()没有输出而_e()有输出,即:_e('hello') = echo __('hello'), 带e的都表示echo ...
_x()表示翻译的根据上下文,_n()表示进行单复数编译(单数的字符串,复数的字符串,引用的数字)。
12.sanitize_title: 修改slug
<?php add_filter( 'sanitize_title', 'sanitize_title_example' ); function sanitize_title_example( $title ) {
$title = str_replace( '-the-', '-', $title );
$title = preg_replace( '/^the-/', '', $title );
return $title;
} ?>
13.no_texturize_shortcode: 指定shortcode不进行自动转义。
wptexturize是wordpress中的自动转义功能,如果希望指定的shortcode代码不自动进行转义,使用该钩子将指定的shortcode添加到数组中,返回数组即可:
<?php add_filter( 'no_texturize_shortcodes', 'no_texturize_shortcodes_example' ); function no_texturize_shortcodes_example( $shortcodes ) {
$shortcodes[] = 'myshortcode';
return $shortcodes;
} // Example source: http://codex.wordpress.org/Plugin_API/Filter_Reference/no_texturize_shortcodes ?>
14.pre_comment_approve: 过滤评论审核
如果需要在代码中添加对评论的审核逻辑,可以使用该钩子获取评论内容病添加逻辑,修改审核结果:
<?php add_filter( 'pre_comment_approved', 'pre_comment_approved_example', 99, 2 ); function pre_comment_approved_example( $approved, $commentdata ) {
return ( strlen( $commentdata['comment_author'] ) > 75 ) ? 'spam' : $approved;
} // Example source: https://gist.github.com/norcross/5468979 ?>
15.enable_post_by_email_configuration: 打开或关闭Post_By_Email功能:
关闭:
<?php add_filter( 'enable_post_by_email_configuration', '__return_false', 100 ); ?>
打开:
<?php add_filter( 'enable_post_by_email_configuration', '__return_true', 100 ); ?>
16.wp_title: 重写你的page title.
<?php add_filter( 'wp_title', 'wp_title_example', 10, 2 ); function wp_title_example( $title, $sep ) {
global $paged, $page; if ( is_feed() )
return $title; // Add the site name.
$title .= get_bloginfo( 'name' ); // Add the site description for the home/front page.
$site_description = get_bloginfo( 'description', 'display' );
if ( $site_description && ( is_home() || is_front_page() ) )
$title = "$title $sep $site_description"; // Add a page number if necessary.
if ( $paged >= 2 || $page >= 2 )
$title = sprintf( __( 'Page %s', 'tuts_filter_example' ), max( $paged, $page ) ) . " $sep $title"; return $title;
} // Example source: http://tommcfarlin.com/filter-wp-title/ ?>
17. preprocess_comment:在评论存入DB之前修改和加工它们
<?php add_filter( 'preprocess_comment', 'preprocess_comment_example' ); function preprocess_comment_example( $commentdata ) {
if( $commentdata['comment_content'] == strtoupper( $commentdata['comment_content'] ))
$commentdata['comment_content'] = strtolower( $commentdata['comment_content'] );
return $commentdata;
} // Example source: http://codex.wordpress.org/Plugin_API/Filter_Reference/preprocess_comment ?>
18.login_redirect: 管理界面登录后重定向。
注意,该filter 一定要在is_admin()之外使用add_filter(),因为在is_admin()被调用的时候这个钩子还不可用。
<?php add_filter( 'login_redirect', 'login_redirect_example', 10, 3 ); function login_redirect_example( $redirect_to, $request, $user ) {
global $user;
if ( isset( $user->roles ) && is_array( $user->roles ) ) {
if ( in_array( 'subscriber', $user->roles ) ) {
return home_url();
} else {
return $redirect_to;
}
}
return;
} ?>
19.plugin_aciton_links_插件文件名:给你的插件加上链接
<?php add_filter( 'plugin_action_links_' . plugin_basename( __FILE__ ), 'plugin_action_links_example' ); function plugin_action_links_example( $links ) {
$links[] = '<a href="' . get_admin_url( null, 'options-general.php?page=my_plugin_settings' ) . '">' . __( 'Settings' ) . '</a>';
return $links;
} // Example source: https://codex.wordpress.org/Plugin_API/Filter_Reference/plugin_action_links_(plugin_file_name) ?>
20.the_editor_content: 过滤post editor中的内容
<?php add_filter( 'the_editor_content', 'the_editor_content_example' ); function the_editor_content_example( $content ) {
// Only return the filtered content if it's empty
if ( empty( $content ) ) {
$template = 'Hey! Don\'t forget to...' . "\n\n";
$template .= '<ul><li>Come up with good tags for the post,</li><li>Set the publish time to 08:00 tomorrow morning,</li><li>Change the slug to a SEO-friendly slug,</li><li>And delete this text, hehe.</li></ul>' . "\n\n";
$template .= 'Bye!';
return $template;
} else
return $content;
} // Example source: http://wpfilte.rs/the_editor_content/ ?>
原文链接:http://code.tutsplus.com/tutorials/50-filters-of-wordpress-filters-11-20--cms-21296
PHP学习笔记(七)的更多相关文章
- (转)Qt Model/View 学习笔记 (七)——Delegate类
Qt Model/View 学习笔记 (七) Delegate 类 概念 与MVC模式不同,model/view结构没有用于与用户交互的完全独立的组件.一般来讲, view负责把数据展示 给用户,也 ...
- Learning ROS for Robotics Programming Second Edition学习笔记(七) indigo PCL xtion pro live
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS forRobotics Pro ...
- Typescript 学习笔记七:泛型
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- python3.4学习笔记(七) 学习网站博客推荐
python3.4学习笔记(七) 学习网站博客推荐 深入 Python 3http://sebug.net/paper/books/dive-into-python3/<深入 Python 3& ...
- Go语言学习笔记七: 函数
Go语言学习笔记七: 函数 Go语言有函数还有方法,神奇不.这有点像python了. 函数定义 func function_name( [parameter list] ) [return_types ...
- iOS 学习笔记七 【博爱手把手教你使用2016年gitHub Mac客户端】
iOS 学习笔记七 [博爱手把手教你使用gitHub客户端] 第一步:首先下载git客户端 链接:https://desktop.github.com 第二步:fork 大神的代码[这里以我的代码为例 ...
- 【opencv学习笔记七】访问图像中的像素与图像亮度对比度调整
今天我们来看一下如何访问图像的像素,以及如何改变图像的亮度与对比度. 在之前我们先来看一下图像矩阵数据的排列方式.我们以一个简单的矩阵来说明: 对单通道图像排列如下: 对于双通道图像排列如下: 那么对 ...
- Linux学习笔记(七) 查询系统
1.查看命令 (1)man 可以使用 man 命令名称 命令查看某个命令的详细用法,其显示的内容如下: NAME:命令名称 SYNOPSIS:语法 DESCRIPTION:说明 OPTIONS:选项 ...
- go微服务框架kratos学习笔记七(kratos warden 负载均衡 balancer)
目录 go微服务框架kratos学习笔记七(kratos warden 负载均衡 balancer) demo demo server demo client 池 dao service p2c ro ...
- Java IO学习笔记七:多路复用从单线程到多线程
作者:Grey 原文地址:Java IO学习笔记七:多路复用从单线程到多线程 在前面提到的多路复用的服务端代码中, 我们在处理读数据的同时,也处理了写事件: public void readHandl ...
随机推荐
- 用BigDecimal类实现Fibonacci算法
Fibonacci(N)=Fibonacii(N-1)+Fibonacci(N-2) 其中 Fibonacci(0)=0;Fibonacci(1)=1 用循环或则递归实现Fibonacci算法很简单, ...
- redis命令之lrange
LRANGE key start stop Related commands BLPOP BRPOP BRPOPLPUSH LINDEX LINSERT LLEN LPOP LPUSH LPUSHX ...
- HW4.43
import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...
- HDOJ(~1004)
T1000 #include <stdio.h> int main() { int a, b; while (scanf("%d %d", &a, &b ...
- Devlop Win 8 and Windows Phone App for Microsoft Dynamics CRM
Microsoft Dynamics CRM App for Windows Phone http://www.windowsphone.com/en-us/store/app/dynamics-cr ...
- iOS开发:UIImageView常用操作
UIImageView,顾名思义,是用来放置图片的.使用Interface Builder设计界面时,当然可以直接将控件拖进去并设置相关属性,这就不说了,这里讲的是用代码. 1.创建一个UIImage ...
- java实现下载文件到本地
代码如下: URL url = new URL("http://www.cnblogs.com/images/logo_small.gif"); URLConnection con ...
- Android Developers:拖动和缩放
这个课程描述了如何使用手势来拖拽和缩放屏幕的对象,使用onTouchEvent()方法来获取触摸事件.这里是这节课程使用的源代码. 拖动一个对象 ——————————————————————————— ...
- My安装Eclipse三种方法插件
Eclipse它是一个开源项目,但非常需要手动集成插件,MyEclipse在Eclipse插件.但非常多时候MyEclipse相同须要再次安装插件,插件安装有三种方法,以下以SVN为例.具体阐述. E ...
- Android用悬浮按钮实现翻页效果
今天给大家分享下自己用悬浮按钮点击实现翻页效果的例子. 首先,一个按钮要实现悬浮,就要用到系统顶级窗口相关的WindowManager,WindowManager.LayoutParams.那么在An ...