2015-02-05 7 views
0

Я пытаюсь написать небольшой плагин в wordpress, у меня есть небольшой мета-ящик с текстовым вводом и переключатель, в котором пользователь должен добавить информацию, и я хочу, чтобы информация, сохраняется в метатеге сообщения после сохранения (в текущем состоянии входной текст сбрасывается до значения по умолчанию после сохранения).display wordpress post meta в редакторе после сохранения

это соответствующий код:

add_action('add_meta_boxes', 'asset_price'); 
function asset_price() { 
    add_meta_box( 
     'asset_price', 
     __('asset price', 'myplugin_textdomain'), 
     'asset_price_box_content', 
     'asset', 
     'normal', 
     'high' 
    ); 
} 

function asset_price_box_content($post) { 
    wp_nonce_field(plugin_basename(__FILE__), 'asset_price_box_content_nonce'); 
    echo '<label for="asset_price"></label> 
     <input type="text" id="asset_price" name="asset_price" placeholder="insert price" /> 
     <input type="radio" name="currency" value="percent" checked="checked">% 
     <input type="radio" name="currency" value="Dollar">$'; 
    } 

add_action('save_post', 'asset_price_box_save'); 
function asset_price_box_save($post_id) { 

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

    if (!wp_verify_nonce($_POST['asset_price_box_content_nonce'], plugin_basename(__FILE__))) 
    return $post_id; 

    if ('page' == $_POST['post_type']) { 
    if (!current_user_can('edit_page', $post_id)) 
    return $post_id; 
    } else { 
    if (!current_user_can('edit_post', $post_id)) 
    return $post_id; 
    } 
    $old = get_post_meta($post_id, "asset_price", true); 
$new = $_POST["asset_price"]; 
if ($new && $new != $old) { 
    $product_price = $_POST['asset_price']; 
    update_post_meta($post_id, 'asset_price', $product_price); 
} elseif ('' == $new && $old) { 
delete_post_meta($post_id, "asset_price", $old); 
} 
} 

Заранее спасибо

ответ

1

Вы можете получить значение мета окна с помощью функции get_post_meta() и отобразить его в текстовом поле

function asset_price_box_content($post) { 
    $price = get_post_meta($post->ID, "asset_price", true); 
    wp_nonce_field(plugin_basename(__FILE__), 'asset_price_box_content_nonce'); 
    echo '<label for="asset_price"></label> 
     <input type="text" id="asset_price" name="asset_price" placeholder="insert price" value="'.$price.'" /> 
     <input type="radio" name="currency" value="percent" checked="checked">% 
     <input type="radio" name="currency" value="Dollar">$'; 
    } 
+0

Отлично спасибо! это сделало эту работу, но по какой-то причине она только сохраняет значение поля ввода текста, но не выбор переключателя (он также не будет отображаться, когда я покажу содержимое мета-окна в файле single.php), какую-либо идею? –

+0

, потому что вы только обновляете значение текстового поля, сохраняете значение переключателя так же, как и то, что мы делали для текстового поля. –

+0

Thamls Vidya, я получил эту часть, разработанную к настоящему времени ... –

Смежные вопросы