我想update_post_meta( $post_id, \'HD\', $mydata );
其论点顺序错误,应update_post_meta( $post_id, \'quality\', \'HD\');
或者,如果需要自定义字段,但它不存在,为什么不使用“HD”作为默认值?e、 g。
global $post;
$theQuality = empty(get_post_meta( $post->ID, \'quality\') ? \'HD\' : get_post_meta( $post->ID, \'quality\', true);
或者,
if you can\'t get it to work on save, 然后在函数中尝试此操作。php:
function my_add_default_cf() {
global $post;
if ( empty(get_post_meta( $post->ID, \'quality\', true)) ) {
// (if necessary) add additional conditional to limit which posts/pages are checked
update_post_meta( $post->ID, \'quality\', \'HD\',true);
}
}
add_action( \'pre_get_posts\', \'my_add_default_cf\' );
从理论上讲,每一个岗位的执行效率都很低,但事实上,处理过程很小,而且不明显。
Edit
我已删除是否已发布的检查(
get_post_status( $post->ID ) == \'publish\'
) 根据以上代码(我的错误假设)。
Tested 适用于我的WP 4.9.4。If a post/page does not already have cust field "quality" or it has no value, then it is added as "HD" in the following circumstances:保存草稿或出版时;打开现有帖子/页面进行编辑时;预览(虽然已完成,但编辑器页面在刷新之前不会显示);当一篇没有或没有“质量”的已发布帖子被访问时。
如果您不想将此回顾性应用于以前发布的帖子,请更改if ( empty(get_post_meta( $post->ID, \'quality\', true)) ) {
到
if (get_post_status( $post->ID ) == \'draft\' && empty(get_post_meta( $post->ID, \'quality\', true)) ) {
附加测试/
diagnostics (如果需要,暂时将其添加到functions.php):
function my_custfield_test($post_id) {
global $post;
?>
<meta name="mypostid" content="<?php echo $post->ID; ?>" />
<meta name="mypoststatus" content="<?php echo get_post_status( $post->ID ); ?>" />
<meta name="myquality" content="<?php echo get_post_meta( $post->ID,\'quality\', true); ?>" />
<?php
}
add_action( \'wp_head\', \'my_custfield_test\' );
然后查看实时或预览页面的HTML源以及
<head>
:
Your original code我不熟悉
save_post
行动可能
$post_id
是否未设置?
Within 您的“myplugin\\u save\\u postdata”功能:尝试添加
global $post;
作为第一行;并替换所有出现的
$post_id
通过
$post->ID
.