我已经使用"add_meta_boxes“操作在我的帖子中添加了meta框,以添加/更改自定义设置,如背景颜色等。
当我在我的屏幕选项中启用自定义字段时,我的meta框的所有值都会显示在这些自定义字段中!
还可以在选择框中添加一个新的“自定义字段”。
发布于 2012-02-24 21:57:28
如果你想从自定义字段metabox中隐藏你的post元数据,你应该以下划线开始你的元键。示例_background-color
添加:
你也可以使用返回布尔值(true - hide, false - show)的is_protected_meta过滤器。
过滤参数:$protected, $meta_key。请参见wp-includes/meta.php文件。函数is_protected_meta()
发布于 2014-11-28 10:42:31
通常,WP会在自定义字段(默认/核心) MetaBox中隐藏以下划线/_开头的元键。
现在想象一下,你不想让插件的用户通过丑陋的、用户不友好的Custom Fields元框来修改Post Meta Data。因此,您构建了一个自定义元框,并在您的元键前面添加了一个下划线/_。然后用户改变主意,停用或卸载你的插件。现在发生的情况是,用户完全不能访问任何UI来更改(仍然存在的)元数据。对于用户来说,这是一个非常非常糟糕的情况。
因此,我们需要一个开关来关闭自定义字段MetaBox访问,只要您的插件是激活的。因此,WP核心得到了is_protected_meta()函数。它基本上由两行代码组成:
$protected = ( '_' == $meta_key[0] );
return apply_filters( 'is_protected_meta', $protected, $meta_key, $meta_type );由于只提供一个过滤器来处理这一点并不好,现在WordPress有一个简单的函数可以使用:
register_meta( $meta_type, $key, $sanitize_callback, $auth_callback );最后一个参数,$auth_callback在此函数中执行以下操作:
if ( empty( $auth_callback ) ) {
if ( is_protected_meta( $meta_key, $meta_type ) )
$auth_callback = '__return_false';
else
$auth_callback = '__return_true';
}
if ( is_callable( $auth_callback ) )
add_filter( "auth_{$meta_type}_meta_{$meta_key}", $auth_callback, 10, 6 );正如您所看到的,只要您的插件处于活动状态,您就只想将'__return_false'作为$auth_callback添加到deactivate Custom Fields MetaBox access中。当用户删除或停用您的插件时,他可以通过标准的自定义字段MetaBox立即访问元字段。
注意:在写这个问题时,WP核心版本是v4.0.1。利用$sanitize_callback!感谢Trepmal在她的博客上发表了关于is_protected_meta过滤器的帖子。否则我永远不会偶然发现它的用例。
https://stackoverflow.com/questions/9431367
复制相似问题