填写您的邮件地址,订阅我们的精彩内容:

wordpress函数add_filter:可修改wordpress本身函数效果

515

add_filter()在wordpress主题制作中是非常常见的函数,它是wordpress的中文本的hooks,可以在文本被写入数据库的时候,或从数据库取出打印到屏幕的时候,对文本进行修饰。wordpress文件原文

使用方法

<?php?add_filter(?$tag,?$function_to_add,?$priority,?$accepted_args?);??>

参数说明

$tag : 过滤器挂钩的关键字,是$function_to_add将起作用的函数(可能是wordpress本身的系统函数关键字),例如“the_title”,可以修改函数the_title的输出效果。官方并没有给出相对好用完整的列表,你可以大致参考一下这里

$function_to_add : 你通过自己编程写了一个函数,这里就是该函数名,如你写了一个seo_title()来实现对wp_title的修改,你就可以用add_filter(‘wp_title’,’seo_title’)来替代原来的wp_title()函数。

$priority : 执行次序数,如果你之前也定义了一个add_filter的话,wordpress执行这些add_filter是有顺序的,你可以更改该参数,让后面的数值更小,从而更先执行。

$accepted_args :该参数的具体作用不是很清晰,可以不用理会,值为数值,据开发文档说,是指接收函数的协议。

返回值

该函数永远返回true,无论参数如何,都将执行,而且执行速度很快。

使用方法举例

add_filter(‘img_caption_shortcode’, ‘my_img_caption_shortcode_filter’,10,3);
/**
* Filter to replace the shortcode text with HTML5 compliant code
*
* @return text HTML content describing embedded figure
**/
function my_img_caption_shortcode_filter($val, $attr, $content = null)
{
extract(shortcode_atts(array(
‘id’ => ”,
‘align’ => ”,
‘width’ => ”,
‘caption’ => ”
), $attr));

if ( 1 > (int) $width || empty($caption) )
return $val;

$capid = ”;
if ( $id ) {
$id = esc_attr($id);
$capid = ‘id=”figcaption_’. $id . ‘” ‘;
$id = ‘id=”‘ . $id . ‘” aria-labelledby=”figcaption_’ . $id . ‘” ‘;
}

return ‘<figure ‘ . $id . ‘class=”wp-caption ‘ . esc_attr($align) . ‘” style=”width: ‘
. (10 + (int) $width) . ‘px”>’ . do_shortcode( $content ) . ‘<figcaption ‘ . $capid
. ‘class=”wp-caption-text”>’ . $caption . ‘</figcaption></figure>’;
}

上面的代码执行完以后,img_caption_shortcode()将被my_img_caption_shortcode_filter()修饰或代替。

你可以用下面的方法来记录修改函数的指针(地址)

<?php?add_filter(‘media_upload_newtab’,?array(&$this,?’media_upload_mycallback’));??>

或者直接在add_filter()中定义新函数

<?php?add_filter(‘the_title’,?function($title)?{?return?'<b>’.?$title.?'</b>’;})??>

其他附带信息

函数的原始码在wp-includes/plugin.php

使用Filter API参看 Plugin_API/Filter_Reference 获取hooks列表

下面我简单说几句