是否将自定义字段添加到现有元框?

时间:2013-08-27 作者:edeneye

首先,我能够在Wordpress的自定义元框中成功实现自定义字段。我明白这是怎么回事。

我的问题是,有没有办法将自定义字段添加到现有的元框中?例如,我想在Wordpress的“Author”元框中添加字段,因为它与帖子的作者直接相关。我还没有找到这方面的任何文档或示例,只是有很多关于添加一个全新的元框的文档或示例。是否可以在Wordpress现有的元框中添加自定义字段?

谢谢

4 个回复
SO网友:Jonas Lundman

我不知道我是否遗漏了什么,但有几种方法可以将Html添加到Existing core 编写元框,并保存与帖子相关的自定义字段。

一个选项是为authordiv html内容,or 通过过滤此框上“作者”下拉选择列表的输出,添加html。

我更喜欢后者,以防一些插件已经创建了回调。在渲染长方体之前应用过滤器,并在第一次出现wp_dropdown_users.

但是,在任何情况下,都需要对add_meta_boxes 钩子:

function ua_add_meta_boxes($post_type, $post){
    global $wp_meta_boxes;
    if(!isset($wp_meta_boxes[$post_type][\'normal\'][\'core\'][\'authordiv\'])) return;

    // Change the callback
    $wp_meta_boxes[$post_type][\'normal\'][\'core\'][\'authordiv\'][\'callback\'] = \'my_callback_authordiv_html\';

    // Or hook into the dropdown html created Html
    add_filter(\'wp_dropdown_users\', \'ua_extend_metbox_authordiv\', 10, 1);
}
add_action(\'add_meta_boxes\', \'ua_add_meta_boxes\', 5, 2);
如果回调:

function my_callback_authordiv_html(){
    // copy the default select stuff and add some more HTML of our own
}
如果筛选下拉列表(添加自定义字段示例):

function ua_extend_metbox_authordiv($html){

    global $post;
    remove_filter(\'wp_dropdown_users\', \'ua_expand_author_box\', 10, 1);
    $meta = get_post_meta($post->ID, \'my_custom field\', true);

    $label = __(\'Check my checkbox\', \'text-domain\');
    $html .= \'<input type="hidden" name="ua_author_metabox_check_nonce" value="\'. wp_create_nonce(basename(__FILE__)). \'" />\';
    $html .= \'<label><input type="checkbox" name="my_custom field" id="my_custom field"\' . ( $meta ? \' checked="checked"\' : \'\' ) . \' /> \'.$label.\'</label>\';

    return $html;
}
然后,您需要自定义字段的Save post操作,但这是另一个主题。

SO网友:Bryan Hoffman

我认为如果不编辑WordPress核心,这是不可能的。您最好的选择是取消对metabox的注册,然后重新注册您自己的metabox,以模仿您所做的更改的原始功能。

斯蒂芬·哈里斯(Stephen Harris)在此概述了如何做到这一点:Add custom option to Standard Page Attributes Meta Box

SO网友:Mile Milosheski

您是否已查找名为ACF(高级自定义字段)的插件?该插件可在以下位置找到:

https://wordpress.org/plugins/advanced-custom-fields/

有了这个插件,您可以添加任意多个自定义字段,而且插件中还有逻辑功能,您可以创建依赖项。例如,您想为作者创建一些额外的自定义字段,并将作者称为额外的元,您可以制定一个规则,该自定义字段仅适用于作者,而不适用于其他人。

请在此处仔细查看更多信息:

http://www.advancedcustomfields.com/resources

最好的是,您可以在WP\\u查询中直接使用这些自定义字段。

干杯

SO网友:edeneye

在进一步挖掘之后,我找到了一个可行的解决方案。

我只需使用remove_meta_box() 然后用自定义函数重新添加它,在其中添加我想要的字段。

结束

相关推荐

如何列出Metabox中的所有侧栏

我正在尝试向每个页面添加一个元框,该页面是所有已注册边栏的下拉列表,然后保存在自定义字段中。我在用这个metabox class我已经做到了这一点:// get registered Sidebars $sidebars = $GLOBALS[\'wp_registered_sidebars\']; foreach ( $sidebars as $sidebar ) { $sidebar_options[$sidebar[\'name\']] = $sidebar[\'na