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

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

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

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

PHP

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

プラグイン

プラグイン(plug-in)は、ソフトウェアアプリケーションの機能拡張の為に開発された、一組のソフトウェアコンポーネントのことを指します。

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

Q&A

解決済

2回答

1574閲覧

WordPressのカスタム投稿タイプのカスタムフィールドに投稿作成時または更新時に自動入力したい

raberu

総合スコア3

WordPress

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

PHP

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

プラグイン

プラグイン(plug-in)は、ソフトウェアアプリケーションの機能拡張の為に開発された、一組のソフトウェアコンポーネントのことを指します。

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

0グッド

0クリップ

投稿2020/08/07 02:08

前提・実現したいこと

WordPressのカスタム投稿タイプのカスタムフィールドに投稿保存時に自動でフィールドとその中の値が入力されるようにして、それをアーカイブページに表示できるようにしたいです。

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

下記コードをfuctions.phpに入力したが、アーカイブページの表示したい場所に<?php the_field('age'); ?>を入力してもフィールド(age)に登録されたはずの値(1)が表示されません。
これを表示させるようにしたいです。
下記コードに問題点はありますでしょうか。
よろしくお願いいたします。

該当のソースコード

functions.php

1/** 2 * 投稿が保存されたとき投稿メタデータも保存する。 3 * 4 * @param int $post_ID 投稿 ID。 5 * @param post $post 投稿オブジェクト。 6 * @param bool $update 既存投稿の更新か否か。 7 */ 8function add_auto_post_meta( $post_ID, $post, $update ) { 9 /* 10 * 本番環境のコードでは、スラッグはプラグイン内で一度だけセットすべきです。 11 * クラスのプロパティが良いでしょう。必要とする関数ごとにスラッグを書くのではなく。 12 */ 13 $post_type = get_post_type( $post_ID ); 14 15 // 'sales' の投稿でなければ、更新しない。 16 if ( "sales" != $post_type ){ 17 return; 18 } else { 19 add_post_meta($post_ID, 'age', '1', true); 20 } 21} 22add_action('save_post', 'add_auto_post_meta', 10, 3 );

補足情報(FW/ツールのバージョンなど)

使用プラグイン
・Advanced Custom Fields
カスタムフィールドでageの蘭は自動で作られるはずなので、作っていません。

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

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

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

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

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

guest

回答2

0

fuctions.phpというファイル名では任意で読み込む設定をしていない限り何を書いても動かん

投稿2020/08/07 08:51

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

ベストアンサー

the_fieldはACFで登録されたカスタムフィールドを出力する関数です。
get_post_metaでも表示されませんか?

そもそもACFを使用しているならdefaultの値をセットして(編集不可にしたいなら)フィールドをcssで隠すなり、単一のラジオボタンなどにした方がいいような気はします。

投稿2020/08/07 02:38

gogoweb_ikeda

総合スコア1426

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

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

raberu

2020/08/07 03:15

ご回答ありがとうございます。 get_post_metaでも表示されませんでした。 今回仮で1をACFのageに入れようとしているのですが、本当は function nobita_age() { global $post; $now = date( "Ymd" ); $year = sprintf( '%04d', get_post_meta($post->ID,'year',true ) ); $month = sprintf( '%02d', get_post_meta($post->ID,'month',true ) ); $date = sprintf( '%02d', get_post_meta($post->ID,'date',true ) ); if( ! checkdate($month,$date,$year) ) { return 'invalid date'; } $birth = (int) $year . $month . $date; return floor( ($now - $birth) / 10000 ); } 上記関数の返り値を表示したいのです。 そもそも保存時にカスタムフィールドに自動で値が入っているのか確認したくて仮で1を入れていました。
gogoweb_ikeda

2020/08/07 04:39

上記コードを試したところsales保存時にage=1のカスタムフィールドが作成されました。 投稿タイプ名はsalesであっていますか? (なお、投稿タイプsalesの保存時にのみフックする場合はsave_post_salesでOKです。) get_post_metaの際に投稿IDはあっていますか?フィールド名も。 後最後の返り値は現在より1年前かどうかを調べたいのでしょうか? だとしたらstrtotimeでタイムスタンプに変換して比較したほうがいいと思います *strtotime("-1 year")で一年前のタイムスタンプが取得できます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問