如何将过滤器(add_filter)应用到Wordpress中的get_option中

时间:2016-04-07 20:13:17

标签: php wordpress add-filter

我将此序列化数据放入我的wp_option表中。 我想创建一个函数来检索数据(get_option),然后应用过滤器将“http://mywebsite.com/wp-content/uploads/2016/03/logo.png”的值更改为其他内容......

(146,'theme_mods_theme-child','a:9:{i:0; b:0; s:8:“bg_color”; s:7:“#ef4036”; s:11:“header_logo” ; S:65: “http://mywebsite.com/wp-content/uploads/2016/03/logo.png”; S:14: “menu_no_switch”; S:0: “”,S:10: “main_color”; S:7: “#ef4036”; S:18:” nav_menu_locations“; a:1:{s:11:”header-menu“; i:2;} s:9:”copyright“; s:77:”nom nom nom nom“; s:7:”credits“; s:66:“la la la la”; s:8:“sidebars”; s:51:“Audio1 | Audio2 | Audio3 | Audio4 | News1 | News2 | News3 | News4”;}','yes'),< / p>

2 个答案:

答案 0 :(得分:1)

您需要使用apply_filters向变量添加过滤器。

首先,使用get_option从数据库中获取options数组。然后拔出header_logo键并将其存储在变量中。

接下来,为变量添加过滤器。最后,编写一个函数来返回新值,并使用add_filter将其注册到过滤器。

// The header logo
$theme_mods_theme_child_options = get_option('theme_mods_theme-child');

$header_logo = apply_filters( 'my_header_logo_filter', $theme_mods_theme_child_options['header_logo'] );

// Do something with $header_logo

// functions.php or a plugin
function my_header_logo_filter_function(){
    return 'some-new-image.png';
}

add_filter('my_header_logo_filter', 'my_header_logo_filter_function');

答案 1 :(得分:0)

您可以使用option _ {$ option}过滤器,可以像这样更新get_option上的值。

add_filter( 'option_theme_mods_theme-child', function( $values ){
    if ( $values ) {
        //do somthing with data
    }
    return $values;
});

详细了解https://developer.wordpress.org/reference/hooks/option_option/上的option _ {$ option}过滤器