Подтвердить что ты не робот

Wordpress add_meta_box() странность

Нижеприведенный код работает почти безупречно, однако мое значение для названия страницы на одной из моих страниц продолжает оставаться пустым после того, как несколько страниц обновятся... Он немного утихает, а затем появляется reset для пустого. Я думаю, что у меня должен быть конфликт в коде ниже, но я не могу это понять.

Я разрешаю пользователю устанавливать настраиваемый заголовок страницы для сообщений, а также страниц через пользовательское поле ввода заголовка "пост/страница". Может ли кто-нибудь увидеть очевидную проблему здесь, которая может привести к сбросу титула страницы до пустого?

// ===================
// = POST OPTION BOX =
// ===================

add_action('admin_menu', 'my_post_options_box');

function my_post_options_box() {
    if ( function_exists('add_meta_box') ) { 
      //add_meta_box( $id, $title, $callback, $page, $context, $priority );
        add_meta_box('post_header', 'Custom Post Header Code (optional)', 'custom_post_images', 'post', 'normal', 'low');
        add_meta_box('post_title', 'Custom Post Title', 'custom_post_title', 'post', 'normal', 'high');
        add_meta_box('post_title_page', 'Custom Post Title', 'custom_post_title', 'page', 'normal', 'high');
        add_meta_box('postexcerpt', __('Excerpt'), 'post_excerpt_meta_box', 'page', 'normal', 'core');
        add_meta_box('categorydiv', __('Page Options'), 'post_categories_meta_box', 'page', 'side', 'core');
    }
}

//Adds the custom images box
function custom_post_images() {
    global $post;
    ?>
    <div class="inside">
        <textarea style="height:70px; width:100%;margin-left:-5px;" name="customHeader" id="customHeader"><?php echo get_post_meta($post->ID, 'customHeader', true); ?></textarea>
        <p>Enter your custom html code here for the post page header/image area. Whatever you enter here will override the default post header or image listing <b>for this post only</b>. You can enter image references like so &lt;img src='wp-content/uploads/product1.jpg' /&gt;. To show default images, just leave this field empty</p>
    </div>
<?php
}

//Adds the custom post title box
function custom_post_title() {
    global $post;
    ?>
    <div class="inside">
        <p><input style="height:25px;width:100%;margin-left:-10px;" type="text" name="customTitle" id="customTitle" value="<?php echo get_post_meta($post->ID, 'customTitle', true); ?>"></p>
        <p>Enter your custom post/page title here and it will be used for the html &lt;title&gt; for this post page and the Google link text used for this page.</p>
    </div>
<?php
}


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 and not on autosave
        if($parent_id = wp_is_post_revision($postID))
        {
        $postID = $parent_id;
        }

        if ($_POST['customHeader']) 
        {
            update_custom_meta($postID, $_POST['customHeader'], 'customHeader');
        }
        else
        {
            update_custom_meta($postID, '', 'customHeader');
        }
        if ($_POST['customTitle']) 
        {
            update_custom_meta($postID, $_POST['customTitle'], 'customTitle');
        }
        else
        {
            update_custom_meta($postID, '', '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);
    }
}
?>
4b9b3361

Ответ 1

Система автоматического сохранения Wordpress вполне может быть вашей проблемой, так как я думаю, что пользовательские поля не передаются для автоматического сохранения (поэтому ваши посттекстовые переменные customHeader и customTitle будут пустыми во время автоматического сохранения).

В вашей функции сохранения вы должны проверить, установлена ​​ли константа DOING_AUTOSAVE (это, по-видимому, предпочтительнее проверки действия post), и верните, если это так. Что-то вроде этого:

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

Смотрите этот билет для получения дополнительной информации: http://core.trac.wordpress.org/ticket/10744

Ответ 2

В WordPress Codex есть ссылка