好的,所以我已经注册了一些自定义帖子类型和一些分类法。现在,对于我一生来说,我无法弄清楚我需要在“自定义帖子类型”中添加“自定义字段”的代码。
我需要一个下拉菜单和一个单行文本区域。但是我还需要为帖子类型设置单独的字段。因此,假设发布类型1有3个字段,发布类型2有4个字段,但是这些字段不同。
任何提示都可以帮助我查看编解码器并找到一些内容,但无法理解我需要添加到functions.php
文件中的内容
好的,所以我已经注册了一些自定义帖子类型和一些分类法。现在,对于我一生来说,我无法弄清楚我需要在“自定义帖子类型”中添加“自定义字段”的代码。
我需要一个下拉菜单和一个单行文本区域。但是我还需要为帖子类型设置单独的字段。因此,假设发布类型1有3个字段,发布类型2有4个字段,但是这些字段不同。
任何提示都可以帮助我查看编解码器并找到一些内容,但无法理解我需要添加到functions.php
文件中的内容
Answers:
这可能比您想象的要复杂,我会考虑使用一个框架:
如果您想编写自己的教程,请参考以下一些不错的教程:
save_post
挂钩时要小心。它被称为在怪异的时间。确保将WP_DEBUG变量设置为true,以查看使用它时可能出现的错误。
添加/编辑supports
参数(使用时register_post_type
),以包括custom-fields
您自定义帖子类型的发布后编辑屏幕:
'supports' => array(
'title',
'editor',
'excerpt',
'thumbnail',
'custom-fields',
'revisions'
)
来源:https : //codex.wordpress.org/Using_Custom_Fields#Displaying_Custom_Fields
尽管您必须添加一些验证,但是对于当前版本的WordPress,此操作似乎并不复杂。
基本上,您需要两个步骤将“自定义字段”添加到“自定义帖子类型”:
这些步骤在此处进行了全局描述:http : //wordpress.org/support/topic/is-it-possible-to-add-an-extra-field-to-a-custom-post-type
将名为“功能”的自定义字段添加到名为“ prefix-teammembers”的自定义帖子类型中。
首先添加metabox:
function prefix_teammembers_metaboxes( ) {
global $wp_meta_boxes;
add_meta_box('postfunctiondiv', __('Function'), 'prefix_teammembers_metaboxes_html', 'prefix_teammembers', 'normal', 'high');
}
add_action( 'add_meta_boxes_prefix-teammembers', 'prefix_teammembers_metaboxes' );
如果您添加或编辑“ prefix-teammembers”,则add_meta_boxes_{custom_post_type}
挂钩被触发。见 http://codex.wordpress.org/Function_Reference/add_meta_box的add_meta_box()
功能。在add_meta_box()
is 的上述调用中prefix_teammembers_metaboxes_html
,添加了表单字段的回调:
function prefix_teammembers_metaboxes_html()
{
global $post;
$custom = get_post_custom($post->ID);
$function = isset($custom["function"][0])?$custom["function"][0]:'';
?>
<label>Function:</label><input name="function" value="<?php echo $function; ?>">
<?php
}
在第二步中,将自定义字段添加到数据库。在保存save_post_{custom_post_type}
钩子时(从3.7版开始,请参见:https : //stackoverflow.com/questions/5151409/wordpress-save-post-action-for-custom-posts)。您可以挂钩以保存您的自定义字段:
function prefix_teammembers_save_post()
{
if(empty($_POST)) return; //why is prefix_teammembers_save_post triggered by add new?
global $post;
update_post_meta($post->ID, "function", $_POST["function"]);
}
add_action( 'save_post_prefix-teammembers', 'prefix_teammembers_save_post' );
// slider_metaboxes_html , function for create HTML
function slider_metaboxes( ) {
global $wp_meta_boxes;
add_meta_box('postfunctiondiv', __('Custom link'), 'slider_metaboxes_html', 'slider', 'normal', 'high');
}
//add_meta_boxes_slider => add_meta_boxes_{custom post type}
add_action( 'add_meta_boxes_slider', 'slider_metaboxes' );
完善的知识