以下函数可插入,因为它包含筛选器:
// Make function pluggable/overwritable
if ( ! function_exists( \'wpsight_layout_images\' ) ) {
function wpsight_layout_images() {
$layout_images = array(
\'show_on_single\' => true,
\'size_archive\' => \'post-thumbnail\',
\'align_archive\' => \'left\',
\'size_single\' => \'post-thumbnail\',
\'align_single\' => \'left\',
\'size_widget\' => \'post-thumbnail\',
\'align_widget\' => \'left\',
\'size_archive_listings\' => \'post-thumbnail\',
\'align_archive_listings\' => \'right\',
);
return apply_filters( \'wpsight_layout_images\', $layout_images );
}
}
我的问题如下。假设我需要更改最后两个变量的值
size_archive_listings
和
align_archive_listings
使用过滤器。我是否必须复制整个函数,或者某些变量是否可以独立更改?什么是正确的使用
add_filter
在这种情况下,是否从子主题函数文件?
SO网友:Chip Bennett
正如@Milo的评论所指出的,一个“可插入”的函数与它的可过滤性是完全不同的。由于if ( function_exists() )
包装它的条件。如果插件的输出是通过apply_filters()
呼叫
由于您只想更改返回数组中的几个值,因此您需要添加一个过滤器,而不是插入整个函数。
只需在子主题函数文件中添加以下内容:
function wpse117251_wpsight_layout_images( $layout_images ) {
// Modify array values
$layout_images[\'size_archive_listings\'] = \'your-string-here\';
$layout_images[\'align_archive_listings\'] = \'your-string-here\';
// Return the array
return $layout_images;
}
add_filter( \'wpsight_layout_images\', \'wpse117251_wpsight_layout_images\' );