【你如何根据使用它的帖子数量来停用wordpress帖子中自定义字段的值()】我正在尝试创建一个具有3个值的自定义字段天-星期六, 星期日和星期一。现在, 如果创建了10个选择星期日的帖子, 则自定义字段中的值将显示为灰色, 以供将来的贡献者使用(你无法再选择它)。有什么办法吗?任何建议将不胜感激。
#1据我所知, 你有几种选择。最简单的方法可能是在save_post挂钩上添加带有update_option()和get_option()的选项, 以对选择的天数进行计数。
注意:save_post挂钩在保存数据后运行, (因此, 当你在该挂钩中访问它时, post meta就会更改)这样的事情会让你入门。你可以添加更多验证和内容, 但是通常的想法是获取post_meta, 如果是有效的一天并且还不存在10个, 则增加计数。
add_action( 'save_post', 'so60062764_tally_num_days', 12, 1 );
function so60062764_tally_num_days( $post_id ){
// Prevent Saving Relations for Autodrafts
if( defined( 'DOING_AUTOSAVE' ) &
&
DOING_AUTOSAVE )
return;
// Does this post have a $day?
if( $day = get_post_meta( $post_id, 'day_chosen', true ) ){
// Yup, build valid days (prevent arbitrary values)
$day = strtolower( $day );
// Normalize the string
$valid_days = array( 'saturday', 'sunday', 'monday' );
// Is the saved day in our list of valid ones?
if( in_array($day, $valid_days) ){
$current_num_days = absint( get_option( "num_$day" ) );
// absint converts strings to int, and false to 0// Did they somehow save this with 10 already existing?
if( $current_num_days >
= 10 ){
// Yes, abort and revert
delete_post_meta( $post_id, 'day_chosen' );
} else {
// update our "global tally"
update_option( "num_$day", $current_num_days + 1 );
}
}
}
}
然后, 在你的元框中, 可以仅在输出选项之前检查所选天数的当前全局计数。这是一个简单的简单示例, 它利用PHP的三元运算符来节省空间:
echo '<
select name="day_chosen">
';
$days = array( 'saturday', 'sunday', 'monday' );
foreach( $days as $day ){
$disabled = (get_option("num_$days") >
= 10) ? 'disabled="disabled"' : '';
printf( '<
option %s value="http://www.srcmini.com/%s">
%s<
/option>
', $disabled, $day, ucwords($day) );
}
echo '<
/select>
';
推荐阅读
- 你如何链接到帖子作者的个人资料页面()
- web技术分享| webRTC 媒体流录制
- python中SMTPAuthenticationError:解决方法
- Linux 内核和 Windows 内核有什么区别()
- [设计模式系列] 简单工厂
- 一起玩转树莓派(13)——雨滴检测传感器
- OpenMLDB: 拓展Spark源码实现高性能Join
- 关于atlias读写分离问题
- 网络--办公网线布局,网络层协议与应用,广播和广播域概述,ARP协议,ICMP,ping