wp_insert_post로 게시 할 분류 데이터 첨부


17

여러 드롭 다운 선택 필드에 분류 데이터를 보여주는 프런트 엔드 게시 시스템을 구현하려고합니다. 각 드롭 다운 이름은의 "이름" $arg을 사용하여 지정됩니다 wp_dropdown_categories().

wp_dropdown_categories( array(
    'taxonomy'      => 'location',
    'hide_empty'    => 0,
    'orderby'       => 'name',
    'order'         => 'ASC',
    'name'          => 'location',
) );

보시다시피 분류는 "location"이고 선택 이름은 "location"입니다.

그런 다음 post_title, post_content 등과 함께 분류 선택 선택 드롭 다운 각각에 대한 변수를 추가합니다.

$title          = trim( $_POST['wpuf_post_title'] );
$content        = trim( $_POST['wpuf_post_content'] );
$tags           = wpuf_clean_tags( $_POST['wpuf_post_tags'] );
$customcategory = trim( $_POST['customcategory'] );
$cat            = trim( $_POST['cat'] );
$location       = trim( $_POST['location'] );
$sale_rental    = trim( $_POST['sale_rental'] );
$price          = trim( $_POST['price'] );

마지막으로에 의해 보낼 준비가 된 추가 정보를 배열에 추가합니다 wp_insert_post(). 나는 tax_input내가해야 할 코덱에서 이해하기 때문에 아래와 같이 배열 에 추가하여 올바른 일을하고 있는지 여부에 상당히 붙어있다 .

'tax-input' => array( 
    $location,
    $sale_rental,
    $price
),

그래서 모든 것이 다음과 같이 보입니다.

$my_post = array(
    'post_title'    => $title,
    'post_content'  => $content,
    'post_status'   => $post_status,
    'post_author'   => $userdata->ID,
    'post_category' => array( $_POST['cat'] ),
    'post_type'     => $customcategory,
    'tags_input'    => $tags,
    'tax_input'     => array( 
        $location,
        $sale_rental,
        $price
    ),
);

$post_id = wp_insert_post( $my_post );

그러나 새 게시물을 제출하면 모든 표준 게시물 데이터 (및 사용자 정의 게시물 유형)는 정상적으로 처리되지만 분류는 그렇지 않습니다. 분명히 뭔가 잘못하고 있지만 무엇입니까?

답변:


25

wp_set_object_terms각 분류에 대한 게시물 ID를 얻은 후에 사용하십시오 .

...
$post_id = wp_insert_post( $my_post );
wp_set_object_terms( $post_id, $location, 'location' );
wp_set_object_terms( $post_id, $sale_rental, 'sale_rental' );
wp_set_object_terms( $post_id, $price, 'price' );

난 당신의 도움없이 어디로 갔는지 모르고 처음으로 일했습니다 ... 많은 감사 Bainternet. 답변으로 표시됨
MartinJJ

기쁘다 내가 도울 수 :)
Bainternet

정수 또는 문자열의 $ location 및 $ sale_rental 배열입니까?
Doug

5

wp_insert_post를 사용하여 수행 할 수 있지만에서 분류 체계도 지정해야 tax_input하므로 다음과 같아야합니다.

$item['tax_input'] = array (
    'location'      => implode( ',', $location ),
    'sale_rental'   => implode( ',', $sale_rental ),
    'price'         => implode( ',', $price ),
)

여러 용어로 구성된 배열이 될 수 implode()있도록 사용 $location합니다.

또한 이것은 비 계층 분류법에만 적용됩니다. 계층 적 분류법의 경우 astring 대신 배열을 제공해야합니다.


2

문제의 원인

이 주제에 대한 조사가 끝나면 내부를 확인하라는 지시를 받았습니다 (내가 한). 외부 피드에서 맞춤 게시물 유형으로 게시물을 가져 -1오면서 봇 사용자를 추가하는 대신 사용자를 설정했습니다 . 내가 겪었던 문제 wp_insert_post()tax_input세트 를 사용하여 내부적으로 사용자 기능을 검사한다는 것인데, 기존 사용자가 아닌 사용자에게는 분명히 없습니다.

구조를위한 SysBot

해결책은 SysBot 플러그인을 작성하는 것이 었습니다 . 이런 식으로 SysBot 사용자 ( 편집자 역할 을하는)를 새로 작성된 게시물에 첨부 할 수 있었고 모든 것이 예상대로 작동했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.