Случайный ключ постоянной ссылки в wordpress


Я хочу иметь пользовательскую постоянную ссылку для каждого нового сообщения в WordPress, например: http://mysite.com/x5Kvy6 (например bit.ly).

Я попробовал этот небольшой скрипт, но он добавляет только 5-значные числа к заголовку сообщения в постоянной ссылке.

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-адресов или методы перенаправления.

Любая идея приветствуется!

Author: Don, 2012-08-01

4 answers

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() - черт возьми, следите за интервалом между именами. Wordpress уже использует это имя функции

 3
Author: Mwayi, 2012-08-01 15:35:53
if($slug!=""){
   $random=rand(11111,99999); //I needed 5 digit random
   $slug = $random;
}

.= предназначен для объединения строк.

 1
Author: Sutuma, 2012-08-01 15:05:25

Правильный способ использования Ответа 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;
}
 1
Author: brasofilo, 2017-05-23 12:18:16

Для SEO вам лучше сохранить слизняк как можно более значимым, т. Е. не меняйте постоянную ссылку на случайную последовательность. Используя Этот плагин , вы все еще можете использовать http://example.com/raNd0m постоянная ссылка для обмена в социальных сетях или изображениями с вашего сайта.

Таким образом, вы выигрываете как SEO, так и короткие ссылки


Я использовал http://ijassar.info/underrated написать пост на эту конкретную тему

 0
Author: iJassar, 2014-10-22 13:36:27