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

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

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

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

PHP

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

Q&A

解決済

1回答

2746閲覧

WP 記事の公開・更新の時にカスタムフィールドに情報を取得させる方法(PHP)

退会済みユーザー

退会済みユーザー

総合スコア0

WordPress

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

PHP

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

0グッド

0クリップ

投稿2017/09/06 06:03

編集2017/09/06 07:09

WPの記事を公開・更新をした時に、date-wvrというカスタムフィールドに公開時間と日時・更新時間と日時を出力したいのですが、下記の記述だと、記事の公開の時はカスタムフィールド(date-wvr)に公開日時が出力されるのですが、更新した場合、日時と時間が出力されません(2回更新すると日時と時間出力されます)
更新ボタンを押した時に、記事の日時と時間をカスタムフィールドに出力する方法を教えてください。

//// 投稿時に投稿日時と同じ日付を表示用の日付(カスタムフィールド)に追加 function modify_date_wvr($post_id, $post, $update ) { $posted_time = get_the_date('Ymd'); vd ($post); echo '<br>----------'; the_field('date-wvr'); update_field('date-wvr', $posted_time ,$post_id); the_field('date-wvr') } add_action( 'save_post_visualgram','modify_date_wvr', 10, 3 );

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

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

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

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

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

m.ts10806

2017/09/06 06:08

プログラムコード(およびエラーメッセージ)は```で囲ってください。(わからなければ質問編集画面でコード部分を選択し<code>ボタンを押してください)
退会済みユーザー

退会済みユーザー

2017/09/06 06:48

コードはYmdになってますが、質問内容は公開時間や更新時間、公開日時となっています。一体どれが正しいのでしょうか?Ymdなら時間は含みません。時間が要らないなら公開日及び更新日という表現になると思います。
退会済みユーザー

退会済みユーザー

2017/09/06 07:08

すいません、日時と時間どちらも表示したいです
退会済みユーザー

退会済みユーザー

2017/09/06 07:17

あ、あともう一つ、公開日時と更新日時の二つを保存するのでしょうか?それとも更新した場合は公開日時を上書きして更新日時を保存する意味ですか?
退会済みユーザー

退会済みユーザー

2017/09/06 08:18

公開日時と更新日時の二つを保存するのではなく、更新した場合は、公開日時を上書きし更新日時を保存で合ってます。
guest

回答1

0

ベストアンサー

更新ボタンを二回押さないと日時が変わらないのは、更新ボタンを押す時点で取得できる日時が現時点でデータベースに保存されている日時だからだと思います。
二度押す事で変わるのは最初に押した事で変わった日時を取得しているからでしょう。
ただget_the_date()で取得できるのはその投稿の新規投稿日時だと思うので提示されたコードでそのような動きをしていたのかどうか…
あと、何故the_field()やechoがそこにあるのか理解できてませんが…

とりあえず簡単な解決策はボタンを押した時点の現在日時を入れてしまえば良いかと思います。
そのカスタム投稿にそのカスタムフィールドが必須なら条件分岐は要りません。

function modify_date_wvr( $post_ID ) { if ( get_post_meta( $post_ID, 'date-wvr', true ) ){ $posted_time = current_time( 'Y-m-d H:i:s' ); update_post_meta( $post_ID, 'date-wvr', $posted_time ); } } add_action( 'save_post_visualgram', 'modify_date_wvr' );

余談ですが、もしAdvanced Custom Fieldsが使えなくなった場合、コードを探し出して全て変更しなければならないので、プラグイン固有の関数をテーマ等に含めるのは極力避けた方が良いと思います。

投稿2017/09/06 08:41

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問