蛋咔 發表於 2023-6-20 00:00:00

详解WordPress中创建和添加过滤器的相关PHP函数

<p>
<strong>apply_filters()(创建过滤器)</strong><br>
apply_filters() 函数用来创建一个过滤器,大多数被用在函数中,是 WordPress 插件机制中非常重要的一个函数,能让其它的主题和插件对一个值进行修改过滤。</p>
<p>
<strong>用法</strong></p>
<div>
<div>
<div id="highlighter_490952">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</div>
</td>
<td>
<div>
<div>
<code>apply_filters( </code><code>$tag</code><code>, </code><code>$value</code><code>, </code><code>$var</code><code>... );</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
<p>
<strong>参数</strong></p>
<p>
$tag</p>
<p>
(字符串)(必须)过滤器的名字。</p>
<p>
默认值:None</p>
<p>
$value</p>
<p>
(混合)(必须)要过滤的值,如果没人过滤则直接返回这个值。</p>
<p>
$var</p>
<p>
(混合) (可选)传给过滤函数额外的变量参数,辅助过滤函数对返回值进行操作,可以添加无限个。</p>
<p>
返回值</p>
<p>
(混合)过滤后的值,如果没人过滤则直接返回 $value 的值。</p>
<p>
例子</p>
<p>
没人过滤:</p>
<div>
<div>
<div id="highlighter_974139">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</div>
</td>
<td>
<div>
<div>
<code>echo</code> <code>apply_filters( </code><code>'test'</code><code>, </code><code>'可以被修改的值'</code> <code>);</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
<p>
打印结果:</p>
<p>
可以被修改的值</p>
<p>
有人过滤:</p>
<div>
<div>
<div id="highlighter_278688">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</div>
<div>
2</div>
<div>
3</div>
<div>
4</div>
<div>
5</div>
</td>
<td>
<div>
<div>
<code>function</code> <code>test_func(){</code>
</div>
<div>
<code>  </code><code>return</code> <code>'修改值'</code><code>;</code>
</div>
<div>
<code>}</code>
</div>
<div>
<code>add_filter( </code><code>'test'</code><code>, </code><code>'test_func'</code> <code>);</code>
</div>
<div>
<code>echo</code> <code>apply_filters( </code><code>'test'</code><code>, </code><code>'可以被修改的值'</code> <code>);</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
<p>
打印结果:</p>
<p>
修改值</p>
<p>
接收参数:</p>
<div>
<div>
<div id="highlighter_242129">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</div>
<div>
2</div>
<div>
3</div>
<div>
4</div>
<div>
5</div>
<div>
6</div>
<div>
7</div>
<div>
8</div>
<div>
9</div>
</td>
<td>
<div>
<div>
<code>function</code> <code>test_func(){</code>
</div>
<div>
<code>  </code><code>return</code> <code>'修改值'</code><code>;</code>
</div>
<div>
<code>}</code>
</div>
<div>
<code>add_filter( </code><code>'test'</code><code>, </code><code>'test_func'</code> <code>);</code>
</div>
<div>
<code>function</code> <code>test_func2( </code><code>$text</code> <code>){</code>
</div>
<div>
<code>  </code><code>return</code> <code>$text</code> <code>. </code><code>'2'</code><code>;</code>
</div>
<div>
<code>}</code>
</div>
<div>
<code>add_filter( </code><code>'test'</code><code>, </code><code>'test_func2'</code> <code>);</code>
</div>
<div>
<code>echo</code> <code>apply_filters( </code><code>'test'</code><code>, </code><code>'可以被修改的值'</code> <code>);</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
<p>
多个参数:</p>
<div>
<div>
<div id="highlighter_2558">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</div>
<div>
2</div>
<div>
3</div>
<div>
4</div>
<div>
5</div>
</td>
<td>
<div>
<div>
<code>function</code> <code>test_func( </code><code>$text</code><code>, </code><code>$var</code><code>, </code><code>$var2</code> <code>){</code>
</div>
<div>
<code>  </code><code>return</code> <code>'修改值'</code> <code>. </code><code>$var1</code> <code>. </code><code>$var2</code><code>;</code>
</div>
<div>
<code>}</code>
</div>
<div>
<code>add_action( </code><code>'test'</code><code>, </code><code>'test_func'</code><code>, 10, 3 );</code>
</div>
<div>
<code>echo</code> <code>apply_filters( </code><code>'test'</code><code>, </code><code>'可以被修改的值'</code><code>, </code><code>'辅助值1'</code><code>, </code><code>'辅助值2'</code> <code>);</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
<p>
其它</p>
<p>
此函数位于:wp-includes/plugin.php</p>
<p>
<strong>add_filter()(添加过滤器)</strong><br>
add_filter() 可以挂载一个函数到指定的过滤器上。</p>
<p>
用法</p>
<div>
<div>
<div id="highlighter_509304">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</div>
</td>
<td>
<div>
<div>
<code>add_filter( </code><code>$tag</code><code>, </code><code>$function_to_add</code><code>, </code><code>$priority</code><code>, </code><code>$accepted_args</code> <code>);</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
<p>
参数</p>
<p>
$tag</p>
<p>
(字符串)(必须)所挂载的过滤器名字(和目标 apply_filters() 函数的 $tag 属性一样)。</p>
<p>
默认值:None</p>
<p>
$function_to_add</p>
<p>
(回调)(必须)要挂载的回调函数,参考 PHP 回调函数类型文档。</p>
<p>
默认值:None</p>
<p>
$priority</p>
<p>
(整数)(可选)执行顺序,越小函数越先被执行。</p>
<p>
默认值:10</p>
<p>
$accepted_args</p>
<p>
(整数)(可选)回调函数接收的参数数量,设置多个可以接收更多 apply_filters() 函数传进来的参数。</p>
<p>
默认值:1</p>
<p>
返回值</p>
<p>
(布尔)总是 True</p>
<p>
例子</p>
<div>
<div>
<div id="highlighter_846660">
<div>
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td>
<div>
1</div>
<div>
2</div>
<div>
3</div>
<div>
4</div>
<div>
5</div>
</td>
<td>
<div>
<div>
<code>function</code> <code>test_func( </code><code>$text</code><code>, </code><code>$var1</code><code>, </code><code>$var2</code> <code>){</code>
</div>
<div>
<code>  </code><code>return</code> <code>$text</code> <code>. </code><code>$var1</code> <code>. </code><code>$var2</code><code>;</code>
</div>
<div>
<code>}</code>
</div>
<div>
<code>add_action( </code><code>'test'</code><code>, </code><code>'test_func'</code><code>, 10, 3 );</code>
</div>
<div>
<code>echo</code> <code>apply_filters( </code><code>'test'</code><code>, </code><code>'参数2'</code><code>, </code><code>'参数3'</code><code>, </code><code>'参数4'</code> <code>);</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div id="codetool">
<div>
<textarea></textarea>
</div>
</div>
</div>
<p>
打印:</p>
<p>
test参数2参数3</p>
<p>
其它</p>
<p>
该函数位于:wp-includes/plugin.php</p>
頁: [1]
查看完整版本: 详解WordPress中创建和添加过滤器的相关PHP函数