Я хочу иметь постоянную ссылку для каждого нового сообщения в WordPress, например: http://mysite.com/x5Kvy6 (например, bit.ly).
Я попробовал этот маленький скрипт, но он добавляет только 5-значные числа к заголовку сообщения в permalink.
function wp_unique_post_slug( $slug, $post_ID, $post_status, $post_type, $post_parent ) { if($slug!=""){ $random=rand(11111,99999); //I needed 5 digit random $slug .= "-" . $random; } return $slug; }
Как я могу сделать случайный ключ вместо заголовка сообщения?
Я не изучал укороченные URL-адреса или методы перенаправления.
Любая идея приветствуется!
function wp_unique_post_slug($col,$table='wp_posts'){ global $wpdb; $alphabet = array_merge( range(0, 9), range('a','z') ); $already_exists = true; do { $guidchr = array(); for ($i=0; $i<32; $i++) $guidchr[] = $alphabet[array_rand( $alphabet )]; $guid = sprintf( "%s", implode("", array_slice($guidchr, 0, 12, true)) ); // check that GUID is unique $already_exists = (boolean) $wpdb->get_var(" SELECT COUNT($col) as the_amount FROM $table WHERE $col = '$guid' "); } while (true == $already_exists); return $guid; }
Это можно оптимизировать несколькими способами.
Также в отношении этого wp_unique_post_slug()
– yikes отслеживают расстояние между именами. WordPress уже использует это имя функции
if($slug!=""){ $random=rand(11111,99999); //I needed 5 digit random $slug = $random; }
. = для конкат строк.
Правильный способ использования ответа Mwayi – использовать фильтр wp_unique_post_slug
, поскольку function wp_unique_post_slug()
будет конфликтовать с собственной функцией WP. Внутри функции WP мы находим этот фильтр.
add_filter( 'wp_unique_post_slug', 'unique_slug_so_11762070', 10, 6 ); function unique_slug_so_11762070( $slug, $post_ID, $post_status, $post_type, $post_parent, $original_slug ) { $new_slug = so_11762070_unique_post_slug('guid'); return $new_slug; } # From: https://stackoverflow.com/a/11762698 function so_11762070_unique_post_slug($col,$table='wp_posts'){ global $wpdb; $alphabet = array_merge( range(0, 9), range('a','z') ); $already_exists = true; do { $guidchr = array(); for ($i=0; $i<32; $i++) $guidchr[] = $alphabet[array_rand( $alphabet )]; $guid = sprintf( "%s", implode("", array_slice($guidchr, 0, 12, true)) ); // check that GUID is unique $already_exists = (boolean) $wpdb->get_var(" SELECT COUNT($col) as the_amount FROM $table WHERE $col = '$guid' "); } while (true == $already_exists); return $guid; }
Для SEO лучше держать слизню как можно более значимой, т.е. не изменяйте постоянную ссылку на случайную последовательность. Используя этот плагин , вы по-прежнему можете использовать постоянную ссылку http://example.com/raNd0m для совместного использования в социальных сетях или изображениях с вашего сайта.
Таким образом, вы выигрываете как SEO, так и короткие ссылки
Я использовал http://ijassar.info/underrated, чтобы написать сообщение об этом конкретном предмете