워드프레스:wp_insert_post()를 사용하여 커스텀 투고 유형 필드 입력
커스텀 투고 타입을 작성했습니다.wrestling님은 상세 커스텀필드를 사용하여 대응하는 커스텀필드를 작성했습니다.송신시에 대시보드의 커스텀 투고 타입으로 데이터가 자동적으로 갱신되도록, 프런트 엔드의 커스텀 폼에 유저가 기입해 주었으면 합니다.이를 위해 커스텀 페이지를 만들고 필요한 폼이 포함된 커스텀템플릿을 할당했습니다.사용자가 입력해야 하는 HTML 양식 필드에는 4개가 있습니다.name,venue,main_event그리고.fee각각 다음과 같다.
고급 사용자 정의 필드를 사용하여 만든 사용자 정의 양식 필드의 이름은 다음과 같습니다.promotion_name,venue,main_event_그리고.price각각 다음과 같다.프론트 엔드에서 사용자가 입력한 데이터를 대시보드의 커스텀 포스트 유형 필드에 입력하기 위해wp_insert_post()다음과 같이 기능합니다.
$post_information = array(
'promotion_name' => $_POST['name'],
'venue' => $_POST['venue'],
'main_event_' => $_POST['main_event'],
'price' => $_POST['fee'],
'post_type' => 'wrestling',
);
wp_insert_post( $post_information );
다만, 유저가 폼을 송신하면, 커스텀 투고 타입에 새로운 엔트리(no_title)가 표시되지만, 커스텀 폼필드는 아직 비어 있습니다(아래의 이미지 참조).
이건 분명히 제가 이 제품을 사용하지 않기 때문인 것 같습니다.wp_insert_post()사용자 지정 게시 유형을 업데이트하기 위해 올바르게 설정되었습니다.여기 좀 도와주시면 정말 감사하겠습니다.감사해요.
PS: 커스텀 투고 타입은 다음과 같이 정의되어 있습니다.functions.php:
<?php
function wrestling_show_type()
{
register_post_type('wrestling',
array('labels' => array('name' => 'Wrestling Shows', 'singular_name' => 'Wrestling Show'),
'public' => true,
'has_archive' => true,
'rewrite' => array('slug' => 'wrestling')));
flush_rewrite_rules();
}
add_action('init', 'wrestling_show_type');
?>
ACF 를 사용하고 있는 경우는, 그 API 를 사용해 필드와 대화할 필요가 있습니다.원하는 대로 하는 방법이 있어요.이 방법에는 다음 3가지 파라미터가 있습니다.
update_field($field_key, $value, $post_id)
$field_key는 작성한 각 필드에 ACF가 부여하는 ID입니다.다음의 이미지는, 독자적인 메뉴얼로부터 취득한 것입니다.
편집: $field_key필드 이름도 받아들입니다.
$value그리고.$post_id이 값은 필드를 설정하는 값 및 업데이트 중인 게시물을 나타냅니다.
당신의 경우, 당신은 이것을 얻기 위해 무언가를 해야 합니다.$post_id다행스럽게도, 그게 바로wp_insert_post()돌아온다.다음과 같은 작업을 수행할 수 있습니다.
$post_information = array(
//'promotion_name' => $_POST['name'],
'post_type' => 'wrestling'
);
$postID = wp_insert_post( $post_information ); //here's the catch
아이디만 있으면 모든 게 쉬워, 전화만 하면 돼.update_field()업데이트하려는 각 필드에 대해 선택합니다.
update_field('whatever_field_key_for_venue_field', $_POST['venue'], $postID);
update_field('whatever_field_key_for_main_event_field', $_POST['main_event'], $postID);
update_field('whatever_field_key_for_fee_field', $_POST['fee'], $postID);
따라서 기본적으로는 먼저 게시물을 만들고 다음으로 값을 사용하여 게시물을 업데이트합니다.
이런 거 많이 해봤는데functions.php잘 작동했어요제가 본 바로는, 당신은 이 루틴을 일종의 템플릿 파일에 사용하고 있는 것 같습니다.잘 될 것 같아요. ACF 플러그인이 활성화 되어 있는지 확인만 하면 돼요.
편집:
★★★★★★★★★를 잊어버렸다.promotion_name ㅇㅇㅇㅇ 안에 있는 를 달았습니다. 안에 있는 줄에 코멘트를 달았습니다.$post_information, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아.update_field()다른 세 명처럼요
update_field('whatever_field_key_for_promotion_name_field', $_POST['name'], $postID);
게시물을 작성할 때 사용자 정의 필드 데이터를 직접 추가하는 방법이 있습니다.이는 wp_insert_post() 문서에 기재되어 있습니다.커스텀 필드 키와 값이 포함된 어레이를 전달하기만 하면 됩니다.meta_input음음음같 뭇매하다
wp_insert_post([
'post_status' => 'publish',
'post_type' => 'wrestling',
'meta_input' => [
'my_custom_field_1' => 'beep',
'my_custom_field_2' => 'boop',
]
]);
이 접근방식을 검토하고 있는 것은 12개의 update_field() 데이터베이스 콜을 회피하고 리소스 부하를 줄이기 위해서입니다만, 이 접근방식은 실제로 백그라운드에서 데이터베이스 콜을 적게 하는 것을 아직 증명하지 못했습니다.
언급URL : https://stackoverflow.com/questions/31960870/wordpress-using-wp-insert-post-to-fill-custom-post-type-fields
'programing' 카테고리의 다른 글
| React JS:컴포넌트의 초기 상태를 전달하는 것이 안티패턴인 이유는 무엇입니까? (0) | 2023.03.20 |
|---|---|
| "요약: 참" 상태에 URL을 지정하는 이유는 무엇입니까? (0) | 2023.03.20 |
| 코드 시그니터인가 워드프레스인가? (0) | 2023.03.20 |
| Angularjs.변수를 인수로 커스텀필터에 전달하려면 어떻게 해야 하나요? (0) | 2023.03.20 |
| Wordpress 블로그에 실제로 필요한 데이터베이스 권한은 무엇입니까? (0) | 2023.03.20 |


