source

WordPress post 추가/업데이트 후 훅과 포스트 메타 삽입 후 후 후크?

lovecheck 2023. 4. 2. 10:39
반응형

WordPress post 추가/업데이트 후 훅과 포스트 메타 삽입 후 후 후크?

「비디오」라고 하는 커스텀 투고 타입이 있습니다.이 타입에는, 몇개의 커스텀 필드가 정의되어 있습니다.「동영상」의 투고를 작성하거나 갱신할 때, 기능을 실행하고 싶습니다.

아쉽게도 이 함수는 방금 작성한 투고에 대한 투고 메타 데이터 값과 일반적인 후크가 필요합니다.save_post,publish_post포스트 메타가 데이터베이스에 삽입되기 전에 실행되는 것 같기 때문에 사용할 수 없습니다.

변경하지 않고 "게시"를 클릭하는 것만으로 수동으로 게시물을 업데이트하면 정상적으로 작동합니다.

모든 메타데이터가 삽입된 후 프로세스 후반부에서 실행되는 후크가 있습니까?

내가 필요한 일을 하는 문서화되지 않은 후크라는 것이 있다.

후크 함수에 메타 ID, 오브젝트 ID(게시 ID와 동일), 메타 키 및 메타 값의 4개의 파라미터를 전달합니다.후크 기능에서는 메타 키 이름이 필요한 필드인지 확인하고 값이 필요한 경우 계속 진행합니다.

예를 들어 다음과 같습니다.

/**
 * Use value of post meta for something when the post 
 * meta changes
 * @param  integer $meta_id    ID of the meta data field
 * @param  integer $post_id    Post ID
 * @param  string $meta_key    Name of meta field
 * @param  string $meta_value  Value of meta field
 */
function saveYouTubeInfo($meta_id, $post_id, $meta_key='', 
                                             $meta_value=''){

    // Stop if not the correct meta key
    if ( $meta_key != 'my_meta_field_name') {
        return false;
    }

    // Function code goes here.
}

add_action('updated_post_meta', 'saveYouTubeInfo', 10, 4);

그건 그렇고...added_post_meta, 치환하지 않습니다.post타겟의 포스트 타입을 지정합니다.저 같은 경우 포스트 타입의 이름은videos하지만, 나는 여전히 그것을 사용해야만 했습니다.updated_post_meta그리고 아니다updated_videos_meta.

post meta를 아직 사용할 수 없는 이유는 save_post hook을 사용하여 post meta를 저장하기 때문입니다.따라서 포스트 메타가 데이터베이스에 저장된 후 후크가 실행되지 않습니다.

문제에 대한 두 가지 해결 방법.

  1. $_POST에서 데이터 가져오기

add_action(저장)_post', 'my_function');

함수 my_function(post_id){

$postmeta = $_POST['field_name'];

}

  1. 포스트 메타가 저장된 후 실행되도록 후크에 높은 우선순위를 사용합니다.

add_action "save_post", 'my_function', 12, 3);

function my_function post_id, $post, $update)

$postmeta = get_post_meta($post_id, 'meta_key', true);

}

언급URL : https://stackoverflow.com/questions/20087203/wordpress-hook-after-adding-updating-post-and-after-insertion-of-post-meta

반응형