2

http://mysite.com/x5Kvy6(bit.lyなど)のように、WordPressの新しい投稿ごとにカスタムパーマリンクを作成したいと思い ます。

この小さなスクリプトを試しましたが、パーマリンクの投稿タイトルに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短縮サービスやリダイレクト方法を研究していません。

どんなアイデアでも大歓迎です!

4

4 に答える 4

3
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はすでにこの関数名を使用しています

于 2012-08-01T15:35:53.407 に答える
1
if($slug!=""){
   $random=rand(11111,99999); //I needed 5 digit random
   $slug = $random;
}

。=は文字列の連結用です。

于 2012-08-01T15:05:25.550 に答える
1

Mwayi回答を使用する正しい方法は、WP独自の関数と競合するように、フィルターを使用するwp_unique_post_slugことです。function wp_unique_post_slug()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;
}
于 2017-05-07T12:34:41.230 に答える
0

SEOの場合、スラッグをできるだけ意味のあるものに保つ方がよいでしょう。パーマリンクをランダムなシーケンスに変更しないでください。このプラグインを使用すると、ソーシャルネットワークやサイトの画像で共有する目的でhttp://example.com/raNd0mパーマリンクを引き続き使用できます。

このようにして、SEOショートリンクの両方を獲得できます


私はこの特定の主題についての投稿を書くためにhttp://ijassar.info/underratedを使用しました

于 2014-10-22T13:36:27.030 に答える