我需要分配一个唯一标识符字符串,例如524bbc5a3771d
我的站点中的每个和所有帖子(每个帖子的唯一字符串)。所以我试着通过收集零碎的东西来组合一个代码from here 然后最终生成了一个字符串。这是代码。
function unique_post_id_generation($post){
global $post;
$generated_id = uniqid();
$update_query = new WP_Query(\'posts_per_page=-1\');
while ( $update_query->have_posts() ) : $update_query->the_post();
add_post_meta($post->ID, \'unique_post_identifier\', $generated_id, true);
endwhile;
}
add_action( \'init\', \'unique_post_id_generation\' );
我使用
uniqid()
而不是
wp_rand()
是我发现的
uniqid()
生成我认为更加多样化的字母数字值。
我把它与我的单曲相呼应。根据需要使用php,使用:<?php echo get_post_meta($post->ID, \'unique_post_identifier\', true);?>
. 它显示一个很好的随机字符串,例如。524bbc5a3771d
但问题是,它在所有帖子中显示相同的字符串。在建议更正时,我还请您记住另外两件事:
我希望生成的更正将non-repeated-unique-strings. 我需要生成一个唯一的字符串only once for each post 因此,上面的代码使用的是add\\u post\\u meta,所以请为我提供上面这样的代码,它只需运行一次,但也可以建议其他更好、更具可扩展性的方法(不需要大量资源)我需要显示字符串on posts only, 没有其他地方,例如附件页等string value should not change 在任何帖子更新中这一定是很基础的,因为我正处于学习阶段,我的任何方法都可能是错误的。请告诉我是否应该尝试与建议的sql查询完全不同的解决方案here.
最合适的回答,由SO网友:Max Yudin 整理而成
有一种更简单的方法来做你想做的事情:
function add_unique_post_identifier( $post_id ) {
$unique_post_identifier = get_post_meta($post_id, \'unique_post_identifier\', true);
// do nothing if post type is not \'post\' or identifier is already set
if (\'post\' != get_post_type( ( $post_id ) ) || !empty($unique_post_identifier) )
return;
$generated_id = uniqid();
update_post_meta($post_id, \'unique_post_identifier\', $generated_id);
}
// run when post is created or updated
add_action( \'save_post\', \'add_unique_post_identifier\' );