サポート » 使い方全般 » wp_insert_postを用いてカスタムフィールドの値も表示させる方法

  • 現在以下のコードを用いて誰でも投稿可能なインタフェースを作成しています。

    <?php
    /*
    Template Name: テスト
    */
    ?>

    <!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”>
    <html lang=”ja”>
    <head>
    <meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″>
    </head>
    <body>
    投稿が完了しました。
    承認されるまで、しばらくお待ちください。

    <?
    //フォームの内容を変数に格納
    $post_category = $_POST[“category”];
    $post_title = $_POST[“title”];
    $post_contents = $_POST[“contents”];
    $tags_input = $_POST[“tags”];

    //投稿
    $postarr = array();
    $postarr[‘post_status’] = ‘publish’;
    $postarr[‘post_type’]=’post’;
    $postarr[‘post_author’]=’2′;
    $postarr[‘post_category’] = array($post_category,);
    $postarr[‘post_title’] = $post_title;
    $postarr[‘post_content’] = $post_contents;
    $postarr[‘tags_input’] = array($tags_input,);
    //投稿ID
    $post_id=wp_insert_post($postarr);

    //アップロードするディレクトリとファイルを設定
    $filename=basename($_FILES[‘pict01’][‘name’]);
    $filename=trim($filename);
    $filename=ereg_replace(” “, “-“, $filename);
    $upload_dir_var=wp_upload_dir();
    $upload_dir=$upload_dir_var[‘path’];
    $uploaddir=realpath($upload_dir);
    $uploadfile=$uploaddir.’/’.$filename;

    //ファイルを uploadfileにfilenameでアップロードする
    if ($_FILES[“pict01”][“size”] === 0){
    //echo “ファイルはアップロードされてません!! アップロードファイルを指定してください。”;
    }else {
    $result = @move_uploaded_file( $_FILES[“pict01”][“tmp_name”], $uploadfile);
    if ($result === TRUE ){
    //echo “アップロード成功!!”;
    }else{
    //echo “アップロード失敗!!”;
    }
    }

    //ファイルタイプ
    $typefile=$_FILES[‘pict01’][‘type’];
    //ファイル名の拡張子なし
    $slugname=preg_replace(‘/\.[^.]+$/’, ”, basename($uploadfile));

    //アップロードファイルがある場合、以下実行
    if ( file_exists($uploadfile) ) {
    //拡張子をチェックする
    $exten = ”;
    if ( $typefile == ‘image/jpeg’ ) { $exten = ‘jpg’; }
    elseif ( $typefile == ‘image/png’ ) { $exten = ‘png’; }
    elseif ( $typefile == ‘image/gif’ ) { $exten = ‘gif’; }
    if($exten == ”){
    //echo ” file type error. You can upload jpg, png, gif “;
    }

    //アップロードファイルを添付する
    $attachment = array(
    ‘post_mime_type’ => $typefile,
    ‘post_title’ => $slugname,
    ‘post_content’ => ”,
    ‘post_status’ => ‘inherit’
    );
    $attach_id = wp_insert_attachment( $attachment, $uploadfile, $post_id );

    require_once(ABSPATH . “wp-admin” . ‘/includes/image.php’);
    $attach_data = wp_generate_attachment_metadata( $attach_id, $uploadfile );
    wp_update_attachment_metadata( $attach_id, $attach_data );

    //ファイル添付が完了したら
    if($attach_id != 0){
    //post_idの投稿に画像を反映させる処理
    $img_src = wp_get_attachment_url($attach_id);
    wp_update_post( array(
    ‘ID’ => $post_id,
    ‘post_content’ => $postarr[‘post_content’]. ‘<img src=”‘.$img_src. ‘” >’
    ) );
    //投稿の更新が成功した場合は投稿 ID。失敗した場合は 0。
    }else{
    //echo “error attach “;
    }

    } // fin if file_exists

    ?>

    </body>
    </html>

    これに更に「ハンドルネーム」や「年齢」の値を付与して表示させたいです。
    ※カスタムフィールドを利用するのでは…と考えています。

    お力お貸し頂けますと幸いです。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • カスタムフィールドを利用する場合には、
    http://codex.wordpress.org/Function_Reference/update_post_meta

    という関数があります。

    ただ正直私ただ個人の感想では実装するべきでは無いと思います。
    脆弱性が多すぎます。

    ただのたたき台のコードでしたら本当に申し訳ございません。
    このままですと、簡単にセキュリティ的な侵害を受けてしまいますので、
    一度見直されることをおすすめします。

    トピック投稿者 postusr

    (@postusr)

    >>ishihara takashi

    ご回答頂き有難うございます。
    カスタムフィールドを利用するのだと考えているのですが、
    実際に上記のコードに差し込むのであればどの辺りにどのようなコードを…。

    若し可能でしたらご支援頂けますと幸いです。

    >脆弱性が多すぎます。

    こちらどの辺りを指しておりますでしょうか。

    トピック投稿者 postusr

    (@postusr)

    追記です。

    こちら「添付画像が存在しなかった場合」、代替画像を差し込むにはどうすれば宜しいでしょうか。

    併せてご教示頂けますと幸いです。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「wp_insert_postを用いてカスタムフィールドの値も表示させる方法」には新たに返信することはできません。