文本小部件保存前调用的钩子

时间:2017-01-22 作者:Raunak Gupta

我想知道在文本小部件内容和标题存储到数据库之前调用了哪个钩子/动作。我在google上搜索了很多,但都找不到钩子的名字。

我想要的是,每当触发文本小部件保存按钮时(在管理面板中),我想应用我的自定义内容自定义功能并返回更新的内容,以便WP可以保存它。

Please Note: 我的问题不是重复的this question, 因为它涉及过滤器,我正在寻找钩子或动作。这可能是一个单一的解决方案,但对我来说不是一个好的解决方案,因为这会很耗时
For example: 我在侧边栏中有10个活动文本小部件,每个小部件呈现的每个页面都有10个活动文本小部件widget_text 将被调用。所以我在寻找更好的解决方案。

任何帮助都将不胜感激<谢谢。

1 个回复
最合适的回答,由SO网友:birgire 整理而成

不确定你在这里追求什么,可能还有其他选择,但有。this 挂钩:

/**
 * Filters a widget\'s settings before saving.
 *
 * Returning false will effectively short-circuit the widget\'s ability
 * to update settings.
 *
 * @since 2.8.0
 *
 * @param array     $instance     The current widget instance\'s settings.
 * @param array     $new_instance Array of new widget settings.
 * @param array     $old_instance Array of old widget settings.
 * @param WP_Widget $this         The current widget instance.
 */
 $instance = apply_filters( 
    \'widget_update_callback\', 
    $instance, 
    $new_instance, 
    $old_instance, 
    $this 
);
下面是一个示例,我们如何以文本小部件为目标并修改text 更新时的输入字段:

add_filter( \'widget_update_callback\', function( $instance, $new, $old, $obj )
{
    if( \'text\' === $obj->id_base && ! empty( $instance[\'text\'] ) )
    {
        // Warning this overrides the widget instance text input:
        // $instance[\'text\'] = \'override text\';
    }

    return $instance;
}, 10, 4 );

相关推荐

无法在模板函数.php中使用IS_HOME

我试图在标题中加载一个滑块,但只在主页上加载。如果有帮助的话,我正在使用Ultralight模板。我正在尝试(在template functions.php中)执行以下操作:<?php if ( is_page( \'home\' ) ) : ?> dynamic_sidebar( \'Homepage Widget\' ); <?php endif; ?> 但这行不通。现在,通过快速的google,我似乎需要将请