如何对用于缓存来自外部API的响应的用户隐藏自定义字段?

时间:2013-01-17 作者:Chetan Chauhan

我有一个使用Rilwis元盒脚本创建的自定义元盒(http://www.deluxeblogtips.com/meta-box/)在我的主题函数中。php。

它有两个文本字段,一个字段是从api获取结果所必需的,因此,它需要在自定义元框上可见。但是,另一个字段存储一个序列化数组,该数组是从外部api获取的响应。所以,我想把这个字段隐藏起来。

请告诉我如何隐藏另一个字段。以下是定义两个文本字段的代码:

if (!class_exists(\'F8_Stores\')) {
    class F8_Stores {

        private $fields = array();
        private $validation = array();
        private $prefix = \'f8_\';

        public function __construct() {

            add_action(\'admin_init\', array($this, \'register_store_meta_box\'));
        }

        public function register_store_meta_box() {
            $this -> fields = $this -> add_custom_fields();
            $this -> validation = $this -> add_validation_rules();

            $meta_box = array(\'id\' => \'f8_stores\', \'title\' => \'Online Retail Stores\', \'pages\' => array(\'post\', \'page\'), \'context\' => \'normal\', \'priority\' => \'high\', \'fields\' => $this -> fields, \'validation\' => $this -> validation);
            new RW_Meta_Box($meta_box);

        }

        private function add_custom_fields() {
            $fields = array( array(\'name\' => \'Amazon US Product ASIN\', \'desc\' => \'Please enter product ASIN\', \'id\' => $this -> prefix . \'amazon_us_asin\', \'type\' => \'text\', \'std\' => false, \'clone\' => false, ),
             array(\'name\' => \'Amazon US Store Cache\', \'desc\' => \'Users should not see this\', \'id\' => \'_\' . $this -> prefix . \'amazon_us_store_cache\', \'type\' => \'text\', \'clone\' => false, ), );
            echo $fields[1][\'id\'];
            return $fields;
        }

        private function add_validation_rules() {
            $validation = array();

             return $validation;
        }

    }

}
$F8_Stores = new F8_Stores();
我在一个类中使用它,尽管在文本字段2的“id”前面添加了“\\u”,但该字段在metabox中仍然可见。不知道我错过了什么?

非常感谢您的帮助。。。谢谢

P、 我正在使用Rilwis Meta Box 4.2.3和运行在xampp上的Wordpress 3.5。

Update: 现在,我已经发布了负责生成metabox的实际类。Update: 感谢大家的回应,问题现已解决。

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

使用前导下划线将隐藏默认WordPress自定义字段部分中的字段值,而不是通过插件创建的元框。

如果您不想让字段在自定义元框中可见,那么根本不要将字段添加到元框中,它在那里真的没有任何用途。您可以通过以下方式直接管理代码中字段的值:update_post_metaget_post_meta.

SO网友:fischi

你不必把_ 在“id”前面,但在前缀前面。

您的代码应该是这样工作的:

$fields = array(
    array(
        \'name\' => \'Text field 1\',
        \'desc\' => \'This is required\',
        \'id\' => \'_\' . $this -> prefix . \'field_1\',
        \'type\' => \'text\',
        \'std\' => false,
        \'clone\' => false,
    ),
    array(
        \'name\' => \'Text field 2\',
        \'desc\' => \'This is required\',
        \'id\' => \'_\' . $this -> prefix . \'Text field 2\',
        \'type\' => \'text\',
        \'clone\' => false,
    ),
);

结束

相关推荐

从管理中的特定页面模板中删除Metabox

当用户在管理中编辑特定页面时,我想通过编程删除一些元框。页面本身使用的是一个模板(tpl about.php)。我知道我可以使用此功能从所有页面中删除所有元框:function remove_post_meta_boxes() { if(!current_user_can(\'administrator\')) { remove_meta_box(\'tagsdiv-post_tag\', \'post\', \'normal\'); remove_meta_box(\'