这就是我之前发布的代码。
// Create custom field on post publish
function wpse_custom_field_on_publish( $new, $old, $post ) {
if ( $new == \'publish\' && $old != \'publish\' && !get_post_meta( $post->ID, \'post_views_count\', true ) ) {
add_post_meta( $post->ID, \'post_views\', rand(829, 1013), true );
}
}
add_action( \'transition_post_status\', \'wpse_custom_field_on_publish\', 10, 3 );
让我解释一下这段代码的实际功能。发布或安排帖子时,此函数将在发布时检查名为
post_views_count
在你的岗位上。如果不存在,则会创建
post_views_count
自定义字段并在829和1013之间添加一个随机值。
我想您对这段代码有一些问题,有时会失败,所以您更改了add_post_meta
具有update_post_meta
有时也会失败,因为如果一个帖子还没有post_views_count
元字段,然后它将跳过并不做任何操作。
因此,您需要做的是为每种情况添加不同的任务,如果此字段已经存在,该怎么办,否则如果不存在,该怎么办。
// Create custom field on post publish
function wpse_custom_field_on_publish( $new, $old, $post ) {
if ( ( $new == \'publish\' || $new == \'pending\' ) && $old != \'publish\' ) {
if ( !get_post_meta( $post->ID, \'post_views_count\', true ) ) {
add_post_meta( $post->ID, \'post_views_count\', rand(829, 1013), true );
} else {
update_post_meta( $post->ID, \'post_views_count\', rand(829, 1013) );
}
}
}
add_action( \'transition_post_status\', \'wpse_custom_field_on_publish\', 10, 3 );
这里的想法还是一样的。但我们为现有字段添加了额外的任务。
现在行动有一些限制transition_post_status
它只检查post状态的更改。如果您每天/每周/等不断更改职位状态,则此功能也将不断更改post_views_count
价值
若要防止此函数执行此操作,您可以创建另一个元/自定义字段,并将其值设置为1,前提是过去至少发布过一次帖子。并在执行上述代码之前检查此新字段值。
我也会检查其他答案,看看这是否是更好的解决方案。