为什么我不能在选中的WordPress函数中使用“%s”格式值?

时间:2016-11-21 作者:theoretisch

我尝试使用Wordpress设置API保护复选框。为此,我使用checked() 作用首先,我用add_settings_field() 并将数组中的视图参数传递给回调函数。

在字段的回调函数中,我使用

printf(
        \'<input type="checkbox" id="%2$s" name="%1$s[%2$s]" \'. checked("on", \'%3$s\').\'
         <label for="%2$s">%4$s</label>
         <hr /> \',
        $args[\'option_name\'],
        $args[\'name\'],
        $args[\'value\'],
        $args[\'description\']    
    );
现在通常应保存复选框。BUT 检查功能不起作用。

打印参数值时%3$s 则值为“on“如果选中该字段,并且nothing 如果未选中该字段。但检查功能从未触发,即使%3$s 是“on“。

仅当我插入“on”字符串时checked("on", \'on\') 直接返回checked。

所以我的问题是:为什么我不能使用%3$s 在选中的函数中

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

因为操作顺序意味着您要在printf函数运行之前将该变量传递到您的checked函数中,这就是解析枚举变量的原因。

以下是一个可能的解决方案,但尚未对其进行测试:

printf(
    \'<input type="checkbox" id="%2$s" name="%1$s[%2$s]" %3$s)\'.
    \'<label for="%2$s">%4$s</label>\' .
    \'<hr />\',
    $args[\'option_name\'],
    $args[\'name\'],
    checked("on", $args[\'value\'], false ),
    $args[\'description\']    
);