为wordpress中新生成的自定义帖子类型分配唯一的代码ID

时间:2018-08-16 10:40:53

标签: wordpress

我创建了一个新的自定义帖子类型“工作”。我想添加为每个新职位发布生成的唯一字母数字值。

我该怎么做?我找不到解决方案,这就是为什么我要问这个问题。

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:0)

请参阅此处,它是有效的版本代码,

// function to save the randomString as custom field value
function generate_AlphanumericID( $post_id ) {

    $postTypes = array('profile', 'article');
    $postType = get_post_type( $post_id );

    if (in_array( $postType, $postTypes ) ) {


        $characters = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ-_~'!,";

        $charactersLength = strlen($characters);
        $randomString = '';
        for ($i = 0; $i < 11; $i++) {
            $randomString .= $characters[rand(0, $charactersLength - 1)];
        }

         /**
         * Now check here if the string is in the database
         */
        $args = array(
        'post_type'     =>  array(
                $postTypes 
            ),
        'meta_query'    =>  array(
            array(
                'meta_key'  =>  '_alphanumeric_id'
            )
        )
        );
        $posts = new WP_Query( $args );


        $meta_values = '';
        if( $posts->have_posts() ) {
          while( $posts->have_posts() ) {
            $posts->the_post();

            $meta_values[] = get_post_meta( get_the_ID(), '_alphanumeric_id', true );
          }
        } 
        wp_reset_postdata();


        if (in_array( $randomString, $meta_values )) {
            // "Match found"
            return generate_AlphanumericID;

        }  else {
            // "Match not found"
            add_post_meta($post_id, '_alphanumeric_id', $randomString);
            return $randomString;
        }

    }

}
add_action('draft_to_publish', 'generate_AlphanumericID', 10, 3);

注意:

要将此密钥用作永久链接标记,我建议您使用此https://github.com/athlan/wordpress-custom-fields-permalink-plugin

答案 1 :(得分:0)

每个帖子都有一个ID。

此ID是一个数字,并且是唯一的,因此您可以使用get_the_ID()获得该作业的标识符。