我试图创建一个只有4张图片的自定义帖子类型,但我遇到了一些麻烦。 这是保存,但我做了一些改变,现在我认为它甚至没有这样做。 (不,它根本没有上传/保存。)
另一个问题是即使我正在存储它只接收文件名的URL。 我一直在广泛搜索(除了一些其他基本信息,这是我今天所做的所有工作),我发现的大多数答案都是不同的,无论如何都不起作用。
我已经查阅了手抄本中的所有功能,并且全部了解它们,我不能为我的生活找出错误的原因。 如果您愿意,请给我发消息,我很乐意向您发送wp用户名和密码,以便您可以查看管理员。 (目前正处于临时站点)
非常感谢,比利
<?php add_action( 'init', 'create_post_type' );
function create_post_type() {
register_post_type( 'bwd_project',
array(
'labels' => array(
'name' => __( 'Projects' ),
'singular_name' => __( 'Project' ),
'add_new' => 'Add new Project',
'add_new_item' => 'Add New Project',
'edit' => 'Edit',
'edit_item' => 'Edit Project',
'new_item' => 'New Project',
'view' => 'View',
'view_item' => 'View Project',
'search_items' => 'Search Projects',
'not_found' => 'No Projects found',
'not_found_in_trash' => 'No Projects found in Trash',
'parent' => 'Parent Project'
),
'public' => true,
'has_archive' => true,
'rewrite' => array('slug' => 'projects'),
'menu_position' => 20,
'supports' => array('title','thumbnail'),
)
);
}
add_action( 'admin_init' , 'my_admin' );
function my_admin(){
add_meta_box( 'project_meta_box',
'New Project',
'display_project_meta_box',
'bwd_project',
'normal','high'
);
}
function display_project_meta_box() {
global $post;
if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) return $post_id;
$project = get_post_custom($post->ID);
$logo = $project["logo"][0];
$img1 = $project["img1"][0];
$img2 = $project["img2"][0];
$img3 = $project["img3"][0];
?>
<table>
<tr>
<?php print_r($project); ?>
</tr>
<tr>
<td><strong>Project logo</strong></td>
</tr>
<tr>
<td><img src="<?php echo $logo; ?>" /></td>
</tr>
<tr>
<td><input type="file" name="logo" value="<?php echo $logo; ?>"/></td>
</tr>
<tr></tr>
<tr>
<td><strong>Image 1</strong></td>
<td><strong>Image 2</strong></td>
<td><strong>Image 3</strong></td>
</tr>
<tr>
<td><img src="<?php echo $img1; ?>" /></td>
<td><img src="<?php echo $img2; ?>" /></td>
<td><img src="<?php echo $img3; ?>" /></td>
</tr>
<tr>
<td><input type="file" name="img2" value="<?php echo $img2; ?>"/></td>
<td><input type="file" name="img1" value="<?php echo $img1; ?>"/></td>
<td><input type="file" name="img3" value="<?php echo $img3; ?>"/></td>
</tr>
</table> <?php
}
add_action('save_post', 'save_project_link');
function save_project_link(){
global $post;
if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ){
return $post_id;
}else{
if (!empty($_FILES['logo']['name'])) {
$upload_overrides = array( 'test_form' => false );
$upload = wp_handle_upload($_FILES['logo'], $upload_overrides);
if (!isset($upload['error'])) {
update_post_meta($post->ID, "logo", $upload['url']);
}
}
}
}
?>
编辑:在我的代码中更改了一些不重要的内容。
另外,对于奖励爱情,任何人都可以告诉我一个简单的方法来保存图像(4次)或者我必须单独完成所有这些吗?
答案 0 :(得分:0)
我觉得有一些事情是缺乏的。首先,你需要为你想要显示的字段添加一个隐藏的输入类型,或多或少是这样的:
echo '<input type="hidden" name="custom_meta_box_nonce" value="'.wp_create_nonce(basename(__FILE__)).'" />';
如果我是你,如果你在PHP 5.3上运行,我会使用Jeffrey Way的自定义帖子,它们已经内置了元数据库和分类法,你只需为每个自定义帖子创建实例变量。它使部署站点的速度更快。快来看看:
https://github.com/JeffreyWay/Easy-WordPress-Custom-Post-Types