wp_insert_postのpost_dateの適切なフォーマット?


10

wp_insert_postTrac)を使用してフロントエンドから投稿を送信するときに、投稿日を定義する適切な方法は何ですか?

私のスニペットはmysql時間で公開しています...

if (isset ($_POST['date'])) {
    $postdate = $_POST['Y-m-d'];
}
else {
    $postdate = $_POST['2011-12-21'];
}

// ADD THE FORM INPUT TO $new_post ARRAY
$new_post = array(
'post_title'    =>   $title,
'post_content'  =>   $description,
'post_date'     =>   $postdate,
'post_status'   =>   'publish',
'post_parent' => $parent_id,
'post_author' => get_current_user_id(),
);

//SAVE THE POST
$pid = wp_insert_post($new_post);

回答:


23

post_dateを追加しない場合、WordPressは現在の日付と時刻を自動的に入力します。

別の日付と時刻を設定すること[ Y-m-d H:i:s ]は正しい構造です。以下のコードを使用した例。

$postdate = '2010-02-23 18:57:33';

$new_post = array(
   'post_title'    =>   $title,
   'post_content'  =>   $description,
   'post_date'     =>   $postdate,
   'post_status'   =>   'publish',
   'post_parent'   =>   $parent_id,
   'post_author'   =>   get_current_user_id(),
);

//SAVE THE POST
$pid = wp_insert_post($new_post);

ロブありがとう!追加すると、$postdate = date('2010-02-23 18:57:33');実際には入力ボックスが機能しなくなりますが、Chromeのバグかもしれません...
m-torin

1
私は自分で試してみましたが、うまくいきました。多分あなたの問題はあなたのコードのどこかにあります。
Rob Vermeer

私はその日付フォーマットを使用してみましたが、それが戻ってきましたNotice: A non well formed numeric value encountered in C:\xampp\htdocs\wordpress\wp-includes\functions.php on line 4028
Ari

2
する必要があります$postdate = '2010-02-23 18:57:33';ので、date()プロセス、ない番号にリテラル日付フォーマットが必要です。または$postdate = date('Y-m-d H:i:s', strtotime('2010-02-23 18:57:33'));
Alex K

3

日付をWordpress(MySQL DATETIME)形式に変換するには、次を試してください:

$date_string = "Sept 11, 2001"; // or any string like "20110911" or "2011-09-11"
// returns: string(13) "Sept 11, 2001"

$date_stamp = strtotime($date_string);
// returns: int(1000166400)

$postdate = date("Y-m-d H:i:s", $date_stamp);
// returns: string(19) "2001-09-11 00:00:00"

$new_post = array(
    // your other arguments
   'post_date'     =>   $postdate
);

$pid = wp_insert_post($new_post);

または、本当にセクシーになりたい場合は、次のようにします。

'post_date'     => date("Y-m-d H:i:s", strtotime("Sept 11, 2001"))

これは、Unixタイムスタンプ、特にdate("Y-m-d H:i:s", $date_stamp)コードのフォーマットに非常に役立ちます。
デビッド

2

次の$_POST['date']ようにフォーマットすることはできません... $_POST['date']次のようなものから実行する必要が$postdate = date( $_POST['date'] )あります...ブログ設定に対してget_optionを呼び出す可能性もあります。Codexのオプションリファレンスを参照してください。


日付を使用すると、実際に投稿が中断され、404エラーが返されます。方向性についてはカイザーに感謝します!
m-torin

2

コミュニティのためにここに私の最終的な作業コードがあります:

ヘッダ

$year = $_REQUEST['year'];
$month = $_REQUEST['month'];
$day = $_REQUEST['day'];
$postdate =  $year . "-" . $month . "-" . $day . " 08:00:00";

$new_post = array(
    'post_title'    =>  $title,
    'post_content'  =>  $description,
    'post_status'   =>  'publish',
    'post_author'   =>  get_current_user_id(),
    'post_date'     =>  $postdate
);

0

グーグルを通して出くわした。私はその古いことを知っていますが、明確な答えはありません。ワードプレスのコードはcurrent_time( 'mysql' )wp_update_post関数で日付/時刻を保存するために使用します!これにより、目的の日付形式が生成されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.