programing

WordPress "save_post" 액션 문제

copyandpastes 2023. 3. 27. 22:02
반응형

WordPress "save_post" 액션 문제

커스텀 투고 타입의 투고가 저장되었을 때 추가 처리가 필요한 WordPress 플러그인을 개발했습니다.

가장 논리적인 해결책은 "save_post" 액션을 이용하는 것이었습니다.호출되면 작업 핸들러는 사용자 지정 테이블에 데이터베이스 레코드를 만들거나 업데이트합니다("게시물 작성" 또는 "게시물 업데이트" 클릭 여부에 따라 다름).

이것을 실장해, 정상적으로 동작하고 있는 것 같았습니다만, 작은 문제가 있어, 해결하고 싶습니다.「Create Post(게시 작성)」페이지를 처음으로 로드할 때(즉, 유저의 입력이 입력되기 전, 신규/변경 송신 버튼을 누르기 전)에도, 「save_post(저장 포스트)」가 트리거 되는 것 같습니다.

즉, 커스텀 데이터베이스 테이블은 저장된 새로운 투고마다 하나의 빈 행으로 채워집니다.또한 게시물 추가 페이지가 로드될 때마다 공백 행이 하나씩 있음을 의미합니다.

다음은 "save_post" 핸들러의 간략화된 버전입니다.

function do_save_post($post_id) {
    if (get_post_type($post_id) !== 'mycustomtype')
        return $post_id;

    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE)
        return $post_id;

    if (!current_user_can('edit_mycustomtype'))
        return $post_id;

    echo 'This happens when selecting "Add New" from admin sidebar.';
    echo 'Even though post has not been saved or updated.';
    echo 'This should only happen when button on right of editor is clicked.';
}

게시물이 실제로 저장되고 있는지 여부를 어떻게 확인할 수 있습니까?

저도 같은 문제가 있어서 post.php의 관련 섹션을 보았습니다.save_post는 post.php가 실행될 때마다 호출되므로 포스트 작성, 리스트 등에서 실행할 수 있습니다.

WP 3.1에서 "post_updated"는 post.php의 저장/작성 이벤트에 대해서만 호출됩니다.그래서 저는 다음과 같이 했습니다.

add_action('post_updated', 'some_function');

이게 당신에게도 효과가 있기를 바랍니다.

post_updated' 후크를 사용하는 것은 특히 커스텀 포스트 타입을 사용하는 경우 문제가 되는 경향이 있습니다.대신 다음과 같은 솔루션을 사용했습니다.

   function do_save_post($post_id){
        $post = get_post($post_id);
        if($post->post_status == 'trash' or $post->post_status == 'auto-draft'){
                return $post_id;
        }
        echo "do stuff";
    }

아이템이 휴지통으로 보내졌을 때 어떤 액션도 하고 싶지 않았습니다.

이 후크는 Import, Post/Page Edit Form, xmlrpc 또는 Post by E-메일을 통해 게시물 또는 페이지가 생성 또는 업데이트될 때마다 실행됩니다.리비전 후 저장 시에도 실행될 수 있습니다.만약 내가 당신이 있는 곳에 게시물을 확인된다면ID 가 설정됩니다(훅 함수가 취득할 필요가 있는 유일한 인수).이 ID 가 리비전인 경우wp_is_post_revision().

데이터가 실제로 게시되었는지 확인하는 것이 좋습니다.

if(isset($_POST['post_title'])){
    //do stuff
}

언급URL : https://stackoverflow.com/questions/5434219/problem-with-wordpress-save-post-action

반응형