wp_insert_post에 대한 post_date 형식이 적절합니까?


10

wp_insert_post ( Trac )를 사용하여 프런트 엔드에서 게시물을 제출할 때 게시 날짜를 정의하는 올바른 방법은 무엇입니까 ?

내 스 니펫은 이제 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);

고마워 Rob! $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"))

이것은 유닉스 타임 스탬프, 특히 date("Y-m-d H:i:s", $date_stamp)코드 를 포맷하는데 매우 도움이됩니다 .
David

2

당신은 포맷 할 수 없습니다 $_POST['date']이런을 ... 당신은 실행해야합니다 에서이 $_POST['date']같은 것을 통해 $postdate = date( $_POST['date'] )블로그 설정에 대한 호출 get_option에 대한 가능성도있다 .... 코덱의 옵션 참조를 참조하십시오.


Date를 사용하면 실제로 게시가 중단되어 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.