自定义add_action('save_post')会导致html标记消失!

时间:2010-04-03 12:37:10

标签: php wordpress

我在主题中添加了自定义“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 :(得分:0)

我对与保存帖子相关的Wordpress钩子并不是很精通,但基于你的PHP,我发现你的custom_add_save()函数在处理时没有返回post id手动保存(即单击Wordpress UI上的“保存草稿/发布”按钮时)。

当然,在自动保存期间(根据您输入custom_add_save时的第一个代码块),它肯定会返回post id。

也许你想调查一下。 :)

答案 1 :(得分:0)

您还需要添加一个nonce值以防止并发

在表单中添加隐藏的输入:

<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标记