将唯一字符串作为自定义字段添加到每个帖子

时间:2013-10-02 作者:gurung

我需要分配一个唯一标识符字符串,例如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 在任何帖子更新中here.

1 个回复
最合适的回答,由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\' ); 

结束

相关推荐

列出分类法:如果分类法没有POST,就不要列出分类法--取决于定制的POST-META?

这可能很难解释,我不知道是否有解决办法!?我有一个名为“wr\\u event”的自定义帖子类型和一个名为“event\\u type”的分层自定义分类法。自定义帖子类型有一个元框,用于event_date 并且与此帖子类型关联的所有帖子都按以下方式排序event_date. 我在循环中有一个特殊的条件来查询event_date 已经发生了-在这种情况下,它没有显示,但只列在我的档案中。就像你可以使用wp_list_categories() 我编写了一个自定义函数,它以完全相同的方式列出所有分类术语。现在