Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Wordpress自定义帖子未在自定义元框中保存图像_Php_Wordpress_File Upload_Custom Post Type - Fatal编程技术网

Php Wordpress自定义帖子未在自定义元框中保存图像

Php Wordpress自定义帖子未在自定义元框中保存图像,php,wordpress,file-upload,custom-post-type,Php,Wordpress,File Upload,Custom Post Type,我试图创建一个只有4张图片的自定义帖子类型,但我遇到了一些麻烦。 这是节省,但我做了一些改变,现在我认为它甚至没有做到这一点。(不,它根本不上传/保存。) 另一个问题是,即使我存储url,它也只接收文件名。 我一直在广泛地搜索(除了一些其他基本信息,这是我今天所做的全部工作),我找到的大多数答案都不一样,而且根本不起作用 我查阅了抄本中的所有函数,并理解了所有函数,我一生都无法找出错误所在。 如果你愿意,请给我发消息,我很乐意给你发送wp用户名和密码,这样你就可以查看管理员了。(目前在中转站)

我试图创建一个只有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']);
            }
        }
    }
} 




?>

项目标识
" />

有几件事我觉得这是不够的。首先,你需要为你想显示的字段添加一个隐藏的输入类型,大致如下:

 echo '<input type="hidden" name="custom_meta_box_nonce" value="'.wp_create_nonce(basename(__FILE__)).'" />';  
echo';
如果我是你,如果你在PHP 5.3上运行,我会使用Jeffrey Way的自定义帖子,这些帖子已经内置了元盒和分类法,你只需为每个自定义帖子创建实例变量。这样可以更快地部署站点。尝试一下:


为什么我需要一个隐藏的输入以及它的作用是什么?以及
wp\u创建的\u nonce(basename(\uu文件\uuuu))
do?此外,我正在尽可能多地自己做这件事,以便尽可能多地学习。这是为了验证显示是否确实来自具有适当授权的用户。顺便说一句,如果您想了解更多关于自定义帖子的信息,我也建议您看看这个:显然问题出在save_post部分,我发现存在问题上载中的一个错误阻止了
wp\u update\u metadata()
。我使用
wp\u update\u metadata($post->ID,'logo',$upload);
获取错误,其中包含“a:1:{s:5:“错误”;s:24:“表单提交无效。”;}”,但我想不出为什么会发生这种情况?