2

画像が 4 つだけのカスタム投稿タイプを作成しようとしていますが、問題が発生しています。それは保存されていましたが、いくつかの変更を加えましたが、今ではそうしているとは思いません. (いいえ、アップロード/保存ではありません。)

もう1つの問題は、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回)、それともすべて個別に行う必要がありますか?

4

1 に答える 1

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

于 2012-12-05T18:29:50.887 に答える