将下拉选择添加到WP自定义帖子类型

时间:2014-10-15 21:56:41

标签: wordpress selection custom-post-type meta

我正在尝试将“价格范围”下拉选项添加到我的自定义帖子类型中的元框中。有三种选择:$ / $$ / $$$

以下是我目前用于创建选择框的内容:

<p>
    <label for="price_range" class="prfx-row-title"><?php _e( 'Price Range', 'prfx-textdomain' )?></label><br/>
    <select type="text" name="price_range" id="website_url" value="<?php if ( isset ( $prfx_stored_meta['price_range'] ) ) echo $prfx_stored_meta['price_range'][0]; ?>" />
        <option>$</option>
        <option>$$</option>
        <option>$$$</option>
    </select>
</p>

以下是我目前用来保存选择框的内容:

if( isset( $_POST[ 'price_range' ] ) ) {
    update_post_meta( $post_id, 'price_range', sanitize_text_field( $_POST[ 'price_range' ] ) );
}

选择框在WP中显示正常,但在我发布帖子时它不会保存我的选择。

最后,我需要在页面模板中显示价格范围:

<!-- DISPLAY PRICE RANGE IF ONE EXISTS -->
<?php if ( get_post_meta($post->ID, 'price_range', true) ) { ?>
<strong>Price Range: </strong>
<?php $meta_value = get_post_meta( get_the_ID(), 'price_range', true ); // Retrieves the stored value from the database
if( !empty( $meta_value ) ) { // Checks and displays the retrieved value
echo $meta_value;
}
?>
<?php } ?>

我还没有测试过这个,因为我没有成功保存我的价格范围元 - 但这会有效吗?

2 个答案:

答案 0 :(得分:0)

您必须添加保存条目时执行的功能

add_action( 'save_post', 'save_custom_meta' );
    function save_custom_meta( ) {
    global $post;
      if( isset( $_POST[ 'price_range' ] ) ) {
        update_post_meta( $post->ID, 'price_range', sanitize_text_field( $_POST[ 'price_range' ] ) );
      }
    }

答案 1 :(得分:0)

我找到了我错的地方:

<p>
<label for="meta-select" class="prfx-row-title"><?php _e( 'Example Select Input', 'prfx-textdomain' )?></label>
<select name="meta-select" id="meta-select">
    <option value="select-one" <?php if ( isset ( $prfx_stored_meta['meta-select'] ) ) selected( $prfx_stored_meta['meta-select'][0], 'select-one' ); ?>><?php _e( 'One', 'prfx-textdomain' )?></option>';
    <option value="select-two" <?php if ( isset ( $prfx_stored_meta['meta-select'] ) ) selected( $prfx_stored_meta['meta-select'][0], 'select-two' ); ?>><?php _e( 'Two', 'prfx-textdomain' )?></option>';
</select>

然后:

if( isset( $_POST[ 'price_range' ] ) ) {
    update_post_meta( $post_id, 'price_range', $_POST[ 'price_range' ] );
}