php - 除了在每个选项中使用 if 语句的基本方法之外,是否有任何优化方法可以仅使用 php 在页面刷新时预先选择选项?
问题描述
我有的:
一个名为 bookings 的自定义帖子类型,我在其中使用 wordpress 中的 Meta box 进行插件开发。
我想要的是:
当用户选择特定选项并单击名为预订的自定义帖子类型中的更新时,该值将保持保存。
即使在页面刷新时。
怎么了:
我的值存储在请求的变量中,但我无法将变量的值与我的选择标签绑定。我已经能够在 if 条件的帮助下实现结果,但这不是我认为的最佳方式,
所以我想问他们是否还有其他方法可以实现这一目标:
if($frequency == 'One-Time') echo"selected"
我正在使用的代码:
function meta_box2() {
add_meta_box(
'custom2', // $id
'What Needs To Be Done?', // $title
'meta_box2_fun', // $callback
'bookings', // $screen
'normal', // $context
'high' // $priority
);
}
add_action( 'add_meta_boxes', 'meta_box2' );
//.................Second Meta Box Function...........................
function meta_box2_fun($post){
$frequency = get_post_meta( $post->ID, 'frequency-save', true );
$bathroom = get_post_meta( $post->ID, 'bathroom-save', true );
$bedroom = get_post_meta( $post->ID, 'bedroom-save', true );
?>
<label for="Frequency">Frequency</label>
<select name = "frequency" >
<option value = "One-Time">One-Time</option>
<option value = "Weekly">Weekly</option>
<option value = "Every Other Week">Every Other Week</option>
<option value = "Every 4 Weeks">Every 4 Weeks</option>
<option value = "Every Monday & Friday">Every Monday&Friday</option>
</select>
<br>
<br>
<label for="bathroom">Bathroom</label>
<select name = "bathroom">
<option value = "1"> 1 </option>
<option value = "1.5">1.5</option>
<option value = "2"> 2 </option>
<option value = "2.5">2.5</option>
<option value = "3"> 3 </option>
<option value = "3.5">3.5</option>
</select>
<label for="bedroom">Bedroom</label>
<select name = "bedroom" value = "bedroom">
<option value="0" >0</option>
<option value="1" >1</option>
<option value="2" >2</option>
<option value="3" >3</option>
<option value="4" >4</option>
<option value="5" >5</option>
</select>
function meta_box2_save($post_id){
if ( !current_user_can( 'edit_post', $post_id ))
return;
update_post_meta($post_id, 'frequency-save',$_POST['frequency']);
update_post_meta($post_id, 'bathroom-save', $_POST['bathroom']);
update_post_meta($post_id, 'bedroom-save', $_POST['bedroom']);
}
add_action('save_post', 'meta_box2_save');
解决方案
尝试在数组中添加选项值,然后将 $frequency 与选项值匹配,如果相等则添加另一个变量 $select = "selected",使用它您不必一次又一次地重复代码。你只需要在数组中添加新值。就像我给你一个例子,请检查下面
$frequency_opt_val = array('one_time' => "one time", ....);
echo "<select name = "frequency" >";
foreach($frequency_opt_val as $key => $value ){
$select = '';
if( $frequency == $key ) $select = 'SELECTED';
echo "<option value='".$key."' ".$select.">" . $value . "</option>";
}
echo"</select>";
推荐阅读
- java - 使用自定义按钮 android 填充 gridview
- android - showInAppNotification - 通知不会在 Android 上关闭
- python - FTP 与 Python 的隐式 TLS 连接
- virtual-reality - 关于其轴方向的基本 VR 信息
- docker - 如何在同一个 pod 中引用我的 mysql 容器?
- javascript - 如何在不触发错误的情况下控制(异步)JavaScript 加载以下脚本?
- r - r stabsel 函数中的错误
- javascript - Laravel 如何使用控制器中的按钮进入刀片
- gatsby - 如何在 Gatsby 中的页面之间传递数据?
- python - 如何将 netCDF CMIP5 气候数据解压缩到 Python 中的数据框?