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

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

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

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

Q&A

解決済

1回答

2146閲覧

functions.phpから作るカスタムフィールド

noriBanana

総合スコア12

WordPress

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

0グッド

0クリップ

投稿2018/06/04 08:04

前提・実現したいこと

管理画面左「投稿」ボタンの下に「新着情報」を入力できるカスタムフィールドを作成しました。
その内容をfront-page.phpの該当箇所に出力したいです。
プラグインは使わずfunctions.phpに書いてます。

トップページに日付と1行程度の内容を表示したいです。
簡易な新着情報欄です。

発生している問題・エラーメッセージ

front-page.phpへ出力する記述方法がよくわかりません。

###functions.phpの内容

function new_post() { register_post_type( 'news', array( 'label' => 'ニュース登録', 'labels' => array( 'name' => __('ニュース一覧'), 'singular_name' => __('ニュース登録'), 'add_new' => __('ニュース登録'), 'add_new_item' => __('ニュース登録'), 'edit_item' => __('ニュース編集'), 'new_item' => __('新しいニュース'), 'view_item' => __('ニュースを見る'), 'search_items' => __('ニュースを探す'), 'not_found' => __('ニュースはありません'), 'not_found_in_trash' => __('ゴミ箱にニュースはありません'), 'parent_item_colon' => '' ), 'public' => true, 'exclude_from_search' => false, 'show_ui' => true, 'show_in_menu' => true, 'menu_position' => 5, 'hierarchical' => true, 'has_archive' => true, 'supports' => array( 'title', 'thumbnail', 'post-formats', 'page-attributes', 'revisions' ), ) ); } add_action( 'init', 'new_post', 1 ); add_action( 'admin_menu', 'add_custom_field' ); function add_custom_field() { add_meta_box( 'custom-date', '日付', 'item_date', 'news', 'normal' ); add_meta_box( 'custom-content', '内容', 'item_content', 'news', 'normal' ); } function item_date() { $keyname = '日付'; global $post; $get_value = get_post_meta( $post->ID, $keyname, true ); wp_nonce_field( 'action-' . $keyname, 'nonce-' . $keyname ); echo '<input type="date" name="' . $keyname . '" value="' . $get_value . '" size="40" >'; } function item_content(){ $keyname ='内容'; global $post; $get_value = get_post_meta ( $post->ID, $keyname, true); wp_nonce_field('action-' .$keyname, 'nonce-' .$keyname); echo '<input type="text" name="' . $keyname . '" value="' . $get_value . '" size="80" >'; } // カスタムフィールドの保存 function save_custom_field( $post_id ) { if(!empty($_POST['日付'])){ update_post_meta($post_id, '日付', $_POST['日付'] ); }else{ delete_post_meta($post_id, '日付'); } if(!empty($_POST['内容'])){ update_post_meta($post_id, '内容', $_POST['内容'] ); }else{ delete_post_meta($post_id, '内容'); } } add_action('save_post', 'save_custom_field');

front-page.phpの該当箇所

<?php $news = get_field("news"); echo get_post_meta($post->ID , 'custom-date' , true); echo get_post_meta($post->ID , 'custom-content' , true); ?>

さっぱりわからなくて困ってますm(_ _)m

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2018/06/04 11:26

まだ質問が「受付中」になっていますが、「ベストアンサー」を選び「解決済」にされてはいかがでしょうか。
noriBanana

2018/06/04 12:24

ご連絡ありがとうございます。不慣れなものでうっかりしてました。ありがとうございました。
guest

回答1

0

ベストアンサー

item_dateitem_content を見れば分かりますが、それぞれ「日付」「内容」という名前のメタキーで保存されているので、表示するときもメタキーを「日付」「内容」にしなければならないんじゃないでしょうか。

php

1echo get_post_meta($post->ID , '日付' , true); 2echo get_post_meta($post->ID , '内容' , true);

投稿2018/06/04 08:23

yhg

総合スコア2161

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

noriBanana

2018/06/04 08:32

回答ありがとうございます! やってみましたがエラーでしたm(_ _)m エラー内容 Fatal error: Uncaught Error: Call to undefined function get_field() in (ファイルへのパス)/front-page.php:100 Stack trace: #0 (ファイルへのパス)/wp-includes/template-loader.php(74): include()
yhg

2018/06/04 08:37

get_field() が無いためエラーが出ているようですが、 Advanced Custom Field プラグインがインストールされていないんじゃないでしょうか? get_field() は Advanced Custom Field プラグインで作ったカスタムフィールドの値を取得するための関数です。
noriBanana

2018/06/04 10:19

そうなんですね! 色々試してみて、下記の記述で表示できました。 回答いただき本当にありがとうございました! ``` <ul> <?php $args = array( 'numberposts' => 10, 'post_type' => 'news' ); $posts = get_posts( $args ); if( $posts ) : foreach( $posts as $post ) : setup_postdata( $post ); ?> <li><?php the_time("Ymd"); ?><?php echo get_post_meta($post->ID, '内容', true); ?></li> <?php endforeach; ?> <?php else : //記事が無い場合 ?> <li><p>新着情報ありません。</p></li> <?php endif; wp_reset_postdata(); //クエリのリセット ?> </ul> ```
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問