Как создать случайные числовые пули для персонализированного типа сообщения?

У меня есть этот код PHP для генерации случайной числовой строки:

function generateRandomString($length = 12) { global $generatedStrings; $characters = '0123456789'; $randomString = ''; for ($i = 0; $i < $length; $i++) { $randomString .= $characters[rand(0, strlen($characters) - 1)]; } if (isset($generatedStrings[$randomString])) { $randomString = generateRandomString($length); } $generatedStrings[$randomString] = $randomString; return $randomString; } $generatedStrings = array(); foreach(range(1, 100000) as $num) { echo "\n".$num."\t : ".generateRandomString(); } 

Мне было интересно, может ли кто-нибудь помочь выяснить, как интегрировать этот код с WordPress, чтобы автоматически генерировать строки как пули для настраиваемого типа сообщений.

Любое руководство, которое вы можете предоставить, оценено!

Solutions Collecting From Web of "Как создать случайные числовые пули для персонализированного типа сообщения?"

 function wpse_18293_get_random_string ($number_of_chars_to_use) { $upper_case_charachters = range('A', 'Z'); while($cnt < $number_of_chars_to_use) { $random_string.= $upper_case_charachters[mt_rand(0, count($upper_case_charachters)-1)]; $cnt++; } return $random_string } $random_string = wpse_18293_get_random_string('10'); 

«10» может быть любым числом, и функция вернет цепочку случайных символов, которые многие charachters длинны. Обратите внимание: имя функции может быть любым, что вы хотите, я назван как таковой, чтобы избежать конфликтов имен функций.

то, что это делает, является итерационным числом $ number_of_chars_to_use, каждый цикл выбирает случайный charachter из $ uppser_case_charachters и добавляет его в строку. Voila, мгновенная строка случайных символов.

Стоит отметить, что $ upper_case_charachters – это просто массив, заполненный алфавитом. Если вам нужны номера, вы можете легко менять диапазон ('0', '9');

Вот пример того, как вы можете автоматически генерировать числовые пули, отличные от идентификаторов сообщений:

 /** * Auto generate numeric slugs for a given custom post type (via post.php screen) * Requires PHP 5.3+ * @see http://wordpress.stackexchange.com/a/169907/26350 */ add_action( 'load-post.php', function(){ add_filter( 'wp_insert_post_data', function( $data, $postarr ) { if( 'post' === $data['post_type'] // <-- Edit the cpt to your needs! && empty( $data['post_name'] ) && isset( $postarr['post_ID'] ) && $postarr['post_ID'] * 1 > 0 ) { //---------------------------------- // Method with post ID reference (not random): // $data['post_name'] = sprintf( '%u', crc32( $postarr['post_ID'] ) ); //---------------------------------- // Method without post ID reference (random): // // $data['post_name'] = rand( 10000000, 99999999 ); } return $data; }, 10, 2 ); }); 

где вы можете изменить тип сообщения в соответствии с вашими потребностями.

Это будет post.php экране post.php а не на экране post-new.php .

Вы можете легко протестировать столкновение функции crc32() PHP, для пост-идентификатора от 1 до 100 000, используя сценарий в этом ответе . Я проверил его до миллиона без каких-либо столкновений.

Обратите внимание, что если маловероятная вещь произойдет, вы wp_unique_post_slug() предыдущий существующий пул, тогда WordPress позаботится об этом, как обычно, с помощью функции wp_unique_post_slug() .

Надеюсь, вы сможете изменить это в соответствии с вашими потребностями.