Пользовательское add_action ('save_post') приводит к исчезновению HTML-разметки! - PullRequest
2 голосов
/ 03 апреля 2010

Я добавил в свою тему специальное действие «save_post» (код ниже). Однако, когда я размещаю изображения или видеокод в посте, его удаляют. Единственный способ, которым я могу это сделать - это закомментировать строку add_action. Что мне нужно сделать, чтобы сохранить всю информацию о посте без изменений?

add_action('save_post', 'custom_add_save');

function custom_add_save($postID){
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
        return $postID;
    }
    else
    {
        // called after a post or page is saved
        if($parent_id = wp_is_post_revision($postID))
        {
        $postID = $parent_id;
        }

        if ($_POST['my_customHeader']) 
        {
            update_custom_meta($postID, $_POST['my_customHeader'], 'my_customHeader');
        }
        else
        {
            update_custom_meta($postID, '', 'my_customHeader');
        }
        if ($_POST['my_customTitle']) 
        {
            update_custom_meta($postID, $_POST['my_customTitle'], 'my_customTitle');
        }
        else
        {
            update_custom_meta($postID, '', 'my_customTitle');
        }
    }
}

function update_custom_meta($postID, $newvalue, $field_name) {
    // To create new meta
    if(!get_post_meta($postID, $field_name)){
    add_post_meta($postID, $field_name, $newvalue);
    }else{
    // or to update existing meta
    update_post_meta($postID, $field_name, $newvalue);
    }
}

Ответы [ 2 ]

0 голосов
/ 07 апреля 2010

вам также нужно добавить одноразовое значение для предотвращения параллелизма

добавить скрытый ввод в вашу форму:

<input type="hidden" name="customCategory_noncename" id="customCategory_noncename" value="<?= wp_create_nonce('customCategory'); ?>" />

и добавьте это к своему коду сохранения

// verify this with nonce because save_post can be triggered at other times
    if (!wp_verify_nonce($_POST['_noncename'], 'my_customHeader')) return $post_id;

также по умолчанию я думаю, что WordPress убирает форматирование html в редакторе в пользу собственной «умной» html-пометки

0 голосов
/ 03 апреля 2010

Я не очень хорошо разбираюсь в ловушках Wordpress, связанных с сохранением постов, но, основываясь только на вашем PHP, я вижу, что ваша функция custom_add_save() не возвращает идентификатор поста при обработке ручного сохранения (т.е. когда вы нажимаете кнопку «Сохранить черновик / публикацию» в пользовательском интерфейсе Wordpress).

Это, конечно, возвращает идентификатор записи во время автосохранения (согласно первому блоку кода при вводе custom_add_save).

Может быть, вы хотите посмотреть на это. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...