Implementing action correctly

时间:2013-02-21 作者:urok93

嗨,我正在实现一个核心插件和附加组件。有一个设置页面,我想把插件的一些验证例程挂接到核心插件的验证函数中。但是它不起作用。你能给我指出正确的方向吗?

以下是我所拥有内容的摘录:

    register_setting( \'myp_settings\', \'myp_settings\', \'myp_settings_validate\' );

    function myp_settings_validate( $input ) {
      $options = get_option( \'myp_settings\' );
      do_action( \'myp_settings_validate\', $input, $options );
      return $options;
    }
上面是核心插件的代码,下面是插件:

add_action( \'myp_settings_validate\', \'myp_settings_et_validate\', \'\', 2 );

function myp_settings_et_validate( $input, $options ) {

    if ( ! isset( $input[\'excerpt_enable\'] ) || $input[\'excerpt_enable\'] != \'1\' )
    $options[\'excerpt_enable\'] = 0;
    else
    $options[\'excerpt_enable\'] = 1;

    if ( ! isset( $input[\'thumbnail_enable\'] ) || $input[\'thumbnail_enable\'] != \'1\' )
    $options[\'thumbnail_enable\'] = 0;
    else
    $options[\'thumbnail_enable\'] = 1;

    return $options;
}

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

do_action() 不使用返回值。它的工作原理更像onload JavaScript中的事件:无法撤消加载。要更改值,需要过滤器。

如果要更改选项内容,请挂接到pre_update_option_{$option_name} 非常晚(具有高优先级参数):

add_filter( \'pre_update_option_myp_settings\', \'myp_settings_et_validate\', 100, 3 );

function myp_settings_et_validate( $option, $newvalue, $oldvalue )
{
    # do something awesome and return a value
}

结束

相关推荐

WordPress theme options error

我正在构建一个主题,我需要调用主题选项,但当我在这里调用主题选项时,我确实会遇到诸如白色屏幕和500内部服务器错误之类的错误在WP查询中(PHP新手) <?query_posts (\'meta_key=post_views_count&orderby=meta_value_num&order=DESC&meta_value=get_option(mytheme_value);\');?> 也在我的前端表单中// ADD THE FORM INPUT TO $