質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.78%

以下のソースでエラーが出ているようです

受付中

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 1,062

chNOBUNAGA

score 41

<?php
global $create_error;
$create_error = array();
function _my_create_project(){
$option1=$_POST['option1'];
$option2=$_POST['option2'];
$option3=$_POST['option3'];
$option4=$_POST['option4'];
$option5=$_POST['option5'];
$option6=$_POST['option6'];
$option7=$_POST['option7'];
$option8=$_POST['option8'];
$option9=$_POST['option9'];
$option10=$_POST['option10'];
    global $create_error;
    if(
        is_page('create-project')
            &&
        is_user_logged_in()
            &&
        isset($_POST['_wpnonce'])
            &&
        wp_verify_nonce($_POST['_wpnonce'], 'create_project');
    ){
    if(!isset($_POST['title']) || empty($_POST['title'])){
        $create_error[] = 'プロジェクト名が入力されていません。';
    }
    if(!isset($_POST['price']) || empty($_POST['price'])){
        $create_error[] = '予算が入力されていません。';
    }
    if(!isset($_POST['delivery']) || empty($_POST['delivery'])){
        $create_error[] = '納期が指定されていません。';
    }
    if (isset($_FILES['image']['error']) && is_int($_FILES['image']['error'])) {
        if (!$_FILES['image']['error']) {
            if ($_FILES['image']['size'] > 1000000) {
                $create_error[] = 'ファイルサイズが大きすぎます。';
            }
            $imageInfo = getimagesize($_FILES['image']['tmp_name']);
            list($orig_width, $orig_height, $image_type) = $imageInfo;
            if ($imageInfo === false) {
                $create_error[] = '画像ファイルではありません。';
            } else {
                $ext = substr($_FILES['image']['name'], strrpos($_FILES['image']['name'], '.') + 1);
                if (false === $ext = array_search(
                    $imageInfo['mime'],array(
                    'jpg' => 'image/jpeg',
                    'png' => 'image/png',
                    'gif' => 'image/gif',
                    ),true
                )) {$create_error[] = '画像形式が未対応です。';}
            }
            $user = wp_get_current_user();
            $upload_dir = wp_upload_dir();
            $image_url = $upload_dir['path'] . '/'. $user->get('user_login').'-'. date(YmdHis) .'.'. $ext;
            if (!move_uploaded_file($_FILES['image']['tmp_name'],$image_url)) {
                $create_error[] = 'ファイル保存時にエラーが発生しました。';
            }
        } else {
            $create_error[] = 'ファイルが選択されていません。';
        }
    }
    //エラーが無かったら投稿を追加
    if(empty($create_error)){
        $content = "<p>1</p><p>".(string)htmlspecialchars($_POST['project-type'])."</p><p>目安予算</p><p>".(string)htmlspecialchars($_POST['price'])."円</p><p>希望納期</p><p>".
            (string)htmlspecialchars($_POST['delivery'])."</p><p>オプション</p>";
        foreach($_POST['option'] as $value){
          $content .= "<p>".htmlspecialchars($value)."</p>";
        }
        $post_id = wp_insert_post(array(
            'post_title' => (string)htmlspecialchars($_POST['title']),
            'post_content' => $content,
            'post_status' => 'publish',
            'post_author' => get_current_user_id(),
            'post_type' => 'abcc',
            'post_category' => $option1.','.$option2.','.$option3.','.$option4.','.$option5.','.$option6.','.$option7.','.$option8.','.$option9.','.$option10,), true);
        $image_data = file_get_contents($image_url);
        $filename = basename($image_url);
        if(wp_mkdir_p($upload_dir['path']))
            $file = $upload_dir['path'] . '/' . $filename;
        else
            $file = $upload_dir['basedir'] . '/' . $filename;
        file_put_contents($file, $image_data);
        $wp_filetype = wp_check_filetype($filename, null );
        $attachment = array(
            'post_mime_type' => $wp_filetype['type'],
            'post_title' => sanitize_file_name($filename),
            'post_content' => '',
            'post_status' => 'inherit'
        );
        $attach_id = wp_insert_attachment( $attachment, $file, $post_id );
        require_once(ABSPATH . 'wp-admin/includes/image.php');
        $attach_data = wp_generate_attachment_metadata( $attach_id, $file );
        wp_update_attachment_metadata( $attach_id, $attach_data );
        set_post_thumbnail( $post_id, $attach_id );
        //データの挿入に成功していたら移動
        if(!is_wp_error($post_id)){

            //ページを移動
            header('Location: '.get_permalink($post_id));
            die();
        }else{
            $create_error[] = 'エラーが発生しました'.$post_id->get_error_message();
        }
    }
    }
}
add_action('template_redirect', '_my_create_project');

function show_error(){
    global $create_error;
    if(!empty($create_error)){
        echo '<div id="error">';
        echo implode('<br />', $create_error);
        echo '</div>';
    }
}
?>

なぜでしょう。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • chNOBUNAGA

    2016/07/09 19:04

    エラーは表示していません、wordpressなので

    キャンセル

  • 退会済みユーザー

    退会済みユーザー

    2016/07/09 19:06

    http://ivystar.jp/cms/wordpress/wordpress%E3%81%A7%E3%82%A8%E3%83%A9%E3%83%BC%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%95%E3%81%9B%E3%82%8B%E6%96%B9%E6%B3%95/
    エラーを表示させずに開発するのはナンセンスです。表示してください。

    キャンセル

  • 退会済みユーザー

    2016/07/09 20:20

    こちらの質問が他のユーザから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました
    「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。

回答 1

0

とりあえず一か所わかったのは23行目にセミコロンがあるのが原因です。

wp_verify_nonce($_POST['_wpnonce'], 'create_project');

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.78%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る