发布元选择输入,IF语句

时间:2013-06-27 作者:Jacob

我创建了一个带有选择输入(下拉菜单)的元框。它有几个值,我想根据用户选择的值显示不同的内容。我只是不确定如何用post meta select框显示此条件内容。

<label for="item_one">Item One Select:</label>
<select name="item_one" id="item_one">
    <option value="option1" <?php selected( $item_one_selected, \'option1\' ); ?>>Something 1</option>
    <option value="option2" <?php selected( $item_one_selected, \'option2\' ); ?>>Something 2</option>
    <option value="option3" <?php selected( $item_one_selected, \'option3\' ); ?>>Something 3</option>
</select>
我是否可以执行类似于复选框的操作,如:

<?php if (get_post_meta($post->ID, \'metavaluehere\', true)) { ?>
//do something 
<? } else { ?>
//do something else
<? } else { ?>
//do something else
<?php } ?>
我只是不确定使用metabox select输入来形成此条件语句的正确方式。

用通俗易懂的英语,我想用最上面的例子:

如果选择了选项1,则执行此操作;如果选择了选项2,则执行此操作;如果选择了选项3,则执行此操作。。。

任何帮助都将不胜感激!

此处为完整代码:

<?php
add_action( \'add_meta_boxes\', \'post_options_box\' );
function post_options_box()
{
    add_meta_box( \'post-options-box\', \'Post Options\', \'post_options_callback\', \'post\', \'normal\', \'high\' );
}


function post_options_callback( $post ){
    $options_values = get_post_custom( $post->ID );
    $item_one_selected = isset( $options_values[\'item_one\'] ) ? esc_attr( $options_values[\'item_one\'][0] ) : \'\';
    wp_nonce_field( \'my_post_options_meta_nonce\', \'post_options_meta_nonce\' );
 ?>
 <p>
 <label for="item_one">Item One Select:</label>
    <select name="item_one" id="item_one">
        <option value="option1" <?php selected( $item_one_selected, \'option1\' ); ?>>Something 1</option>
        <option value="option2" <?php selected( $item_one_selected, \'option2\' ); ?>>Something 2</option>
        <option value="option3" <?php selected( $item_one_selected, \'option3\' ); ?>>Something 3</option>
    </select>
   </p>


   <?php    
}

add_action( \'save_post\', \'post_options_save\' );
function post_options_save ( $post_id )
{
    if( defined( \'DOING_AUTOSAVE\' ) && DOING_AUTOSAVE ) return;

    if( !isset( $_POST[\'price_meta_nonce\'] ) || !wp_verify_nonce( $_POST[\'price_meta_nonce\'], \'my_price_meta_nonce\' ) ) return;

    if( !current_user_can( \'edit_post\' ) ) return;



    if( isset( $_POST[\'item_one\'] ) )
        update_post_meta( $post_id, \'item_one\', esc_attr( $_POST[\'item_one\'] ) );


}
?> 

1 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

我无法对此进行测试,但它看起来像是您应该使用的:

if (\'option1\' == get_post_meta($post->ID, \'item_one\', true)) { 
  //do something 
} elseif (\'option2\' == get_post_meta($post->ID, \'item_one\', true)) {
  //do something else
} else { 
  //do something else
} 
您不需要所有这些开始和结束标记,其中一些会导致奇怪的结果。

结束

相关推荐

如何将php的等价物添加到一个页面(作为插件?)

我是Wordpress的新手。我有一个自己编写的网站。其中一个页面具有PHP函数,可以获取google日历提要(带有硬编码的登录信息)并根据需要显示它。我现在正在wordpress上建立一个新站点,在那里我想使用相同的代码。我的阅读表明,我应该将其作为创建新插件来处理,这样我就不会用任何主题更新来覆盖它。我的问题是:如何简单地将PHP代码复制到它自己的插件文件夹中的一个文件中,然后使用一个快捷码像include一样访问它?具体地说,我不明白我是否能够使用shortcode作为<php? includ