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

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

ただいまの
回答率

90.47%

  • PHP

    24510questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • WordPress

    9121questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

wordpress カスタムフィールドの作成

解決済

回答 2

投稿 編集

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

sssshin

score 19

wordpressにて店舗が自分のショップ情報を投稿できるようにするページを作成しようとしてるのですが、カスタム投稿がまだまだわからず記事一覧も個別ページもうまく表示されません。

参考サイト1
こちらを参考にして進めました。

functions.phpにはこういうふうに追加しました。メニューの左側にショップ登録は出てきてます。

//カスタム投稿タイプの追加 INFORMATION
add_action('init', 'info_init');
function info_init()
{
  $labels = array(
    'name' => _x('ショップ登録', 'post type general name'),
    'singular_name' => _x('shop登録', 'post type singular name'),
    'add_new' => _x('新しくショップを登録', 'item'),
    'add_new_item' => __('新規ショップを登録する'),
    'edit_item' => __('ショップを編集'),
    'new_item' => __('新しいショップ'),
    'view_item' => __('ショップを見る'),
    'search_items' => __('ショップを探す'),
    'not_found' =>  __('ショップはありません'),
    'not_found_in_trash' => __('ゴミ箱にショップはありません'),
    'parent_item_colon' => ''
  );
  $args = array(
    'labels' => $labels,
    'public' => true,
    'publicly_queryable' => true,
    'show_ui' => true,
    'show_admin_column' => true,
    'query_var' => true,
    'rewrite' => true,
    'capability_type' => 'post',
    'hierarchical' => true,
    'menu_position' => 5,
    'supports' => array('title'),
    'has_archive' => true,
  );
  register_post_type('informationshop',$args);
}


?>

Advanced Custom Fieldsにはこうしてます。
イメージ説明

archive-informationshop.phpを作成して、おそらくその部分をまるまるコピペしてるからget_fieldの部分で自分の設定したのと合ってないから取得できず表示されないのかなと思ってますが、phpはあまりわかってません。こうしてます

<?php if ( have_posts() ) { ?>
  <?php while ( have_posts()) {
    the_post();
    $img = get_field('img');
    $imgurl = wp_get_attachment_image_src($img, 'full');
    $day = get_field('day');
    $title = get_field('title');
    $contents = get_field('contents');
  ?>

    <article class="info_box cf">
      <div class="img">
        <img src="<?php echo $imgurl[0]; ?>" alt="インフォメーション<?php echo get_the_title( $ID ); ?>" width="202" height="152">
      </div><!-- //.img-->
      <dl>
        <dt><time pubdate="pubdate" datetime="<?php echo $day ; ?>"><?php echo $day ; ?></time> <?php echo $title ; ?></dt>
        <dd><?php echo $contents ; ?></dd>
      </dl>
    </article><!-- //.info_box-->
  <?php }  // end of the loop.?>

<?php } ?>

参考サイト2
こちらのサイトも参考にしてsingle-informationshop.phpも作成したのですが、作成しただけ中のコードがうまくわからず、
記事を書いて見てみた時に、記事の詳細ページはタイトル以外何も表示されず、記事一覧ページは作成した記事自体表示されません。

どうしたら良いか教えていただけないでしょうか?よろしくお願いします。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

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

  • kei344

    2016/06/13 03:34

    「うまくできない」とは「何をしたときに」「どうなると思って」「どうなったのか」をお書きください。

    キャンセル

回答 2

+1

見たところカスタムフィールドに$dayも$contentsもないからではないでしょうか?
日付とコンテンツを通常のフィールドを利用するなら、

<article class="info_box cf">
      <div class="img">
        <img src="<?php echo $imgurl[0]; ?>" alt="インフォメーション<?php echo get_the_title( $ID ); ?>" width="202" height="152">
      </div><!-- //.img-->
      <dl>
        <dt><time pubdate="pubdate" datetime="<?php the_time('Y年n月j日'); ?>"><?php the_time('Y年n月j日'); ?></time> <?php the_title(); ?></dt>
        <dd><?php the_content() ; ?></dd>
      </dl>
    </article><!-- //.info_box-->
  <?php }  // end of the loop.?>

<?php } ?>


これで表示されるのではないでしょうか?

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2016/06/13 17:03

    回答ありがとうございます。変更してみたのですが何も変わらずです。

    キャンセル

  • 2016/06/13 17:37

    「カスタムフィールドに$dayも$contentsもない」という部分は理解していますか?

    キャンセル

  • 2016/06/13 19:34

    いえ理解していないです。

    まずshingleは個別記事でarchiveは記事一覧ページというところが合ってるかってところからあまりわかってません。

    キャンセル

  • 2016/06/13 19:54

    画像をアップされているAdvanced Custom Fieldsの設定画面上にdayとcontentsの項目がないので参照しようがないのではないか、という話です。
    ですので日付は投稿時に付与される情報を、コンテンツは投稿画面に最初から用意されているフィールドに記載して、wordpressにあらかじめ用意されている関数のthe_time()とthe_content()で表示したらどうでしょう、という提案でした。

    理解が難しいようでしたら、サイトを作成する前に一度書籍などで勉強されてからのほうが良いのではないでしょうか?

    ちなみにsingleとarchiveの各テンプレートの解釈は合っています。

    キャンセル

checkベストアンサー

0

ひとまずデバッグモードにして状況を確認してみてください。エラーが出力されるようになるので、問題が解決しやすくなります。その結果出力されるエラーを質問に追記していただけますでしょうか。

【WordPress初心者におすすめ!デバッグモードの使い方 | Mignon Style】
http://mignonstyle.com/debug-mode/

また、「wp-config.phpに書かれている」と書いてありますが、環境によって書かれていないことがあります。その場合はwp-config.phpの最後に追記してください。

define('WP_DEBUG', true);

追記:

【Custom Post Type UIの使い方[WordPress]】
http://kotori-blog.com/wordpress/custom_post_type_ui/

【Custom Post Type UIでカスタム投稿を作って、誰でも簡単に編集できる投稿画面を作る方法 | OXY NOTES】
http://oxynotes.com/?p=1339

【Custom Post Type UI の編集画面を日本語で徹底解説! - コスギス|新潟県長岡市】
http://kosgis.com/news/custom-post-type-ui-ja/

これも一緒に入れておくと便利だと思います。

【WordPress » カスタム投稿タイプのパーマリンクを設定するプラグイン — Custom Post Type Permalinks | MORILOG】
http://morilog.com/wordpress/post_type/custom_post_type_permalinks_plugin/

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2016/06/13 21:49

    ありがとうございます。
    デバックモード知らなかったです。今ショップ登録→項目入力してプレビューと試してみたのですが、
    Notice: Undefined index: is_no_adsense in 〜functions.php on line 93

    Warning: Cannot modify header information - headers already sent by (output started at 〜functions.php:3897) in pluggable.php on line 1171
    と出ました。

    functions.phpの93行目は
    $is_no_adsense = $_POST["is_no_adsense"];
    とあります。

    キャンセル

  • 2016/06/13 22:18

    プレビューではなく当該ページで確認されたほうが良いと思います。また、どのようなテンプレートを使用されているかもあわせてかかれたほうがよいでしょう。少なくともかなり特殊なもののようです。(たとえば$is_no_adsense がどのような使われ方をするのかがわからないため、前後が無いとわかりません)

    キャンセル

  • 2016/06/13 22:34

    テンプレートはMaterialを使用しています。

    そのページの上の部分を見てみるとこういうエラーが出ました。

    Notice: register_post_type が誤って呼び出されました。投稿タイプ名の長さは1から20文字でなければいけません。 詳しくは WordPress のデバッグをご覧ください。 (このメッセージはバージョン 4.2 で追加されました) in 〜wp-includes/functions.php on line 3897

    Notice: Undefined variable: max_page in 〜themes/wp_material_child/header.php on line 94

    Notice: Undefined variable: label in 〜themes/wp_material_child/header.php on line 98

    キャンセル

  • 2016/06/13 22:36

    header.phpの94から98を載せます。

    if ( !$max_page )$max_page = $wp_query->max_num_pages;
    if ( !$paged )
    $paged = 1;
    $nextpage = intval($paged) + 1;
    if ( null === $label )$label = __( 'Next Page &raquo;' );

    キャンセル

  • 2016/06/14 02:02

    > Notice: Undefined variable:
    PHPのエラー文で検索されると解法が出てくることが多いです。

    【「Notice: Undefined index」「Notice: Undefined variable」の解決と解説 - 地中へのはしご】
    http://d.hatena.ne.jp/sagra-da/20120405/1333587852

    > Notice: register_post_type
    たぶんご自身で書かれたカスタム投稿タイプの記述がそもそも間違っている可能性があります。カスタム投稿タイプの作成はプラグインでされたほうが良いと思います。
    また、その際はスラッグを現在と変更しないと問題が起きる可能性が高いので、変えてください。

    キャンセル

  • 2016/06/14 14:37

    なるほど。もう少し勉強して試してみます。ありがとうございます。

    キャンセル

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

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

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

  • PHP

    24510questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • WordPress

    9121questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。