отображать метаданные сообщения wordpress в редакторе после сохранения

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

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

    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);
}
}

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


person Eyal Binehaker    schedule 05.02.2015    source источник


Ответы (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">$';
    }
person Vidya L    schedule 05.02.2015
comment
Отлично спасибо! это сработало, но по какой-то причине он сохраняет только значение поля ввода текста, но не выбор переключателя (он также не будет отображаться, когда я показываю содержимое мета-поля в single.php) есть идеи? - person Eyal Binehaker; 05.02.2015
comment
потому что вы только обновляете значение текстового поля, сохраните значение переключателя так же, как мы сделали для текстового поля - person Vidya L; 06.02.2015