web-dev-qa-db-ja.com

ランダムな英数字キーURL

ランダムな(そしてユニークな)英数字のパーマリンクが必要です。私はいくつかのプラグインを調べましたが、それらはすべて、より長いURLへの何らかのリダイレクトを行っているようです。それは私が欲しいものではありません、私はパーマリンクを変えたいです。

基本的に、私はbit.lyや9gag.comのようなURLが欲しいのです。

私は見たが、私の検索で空になった - これをするプラグインは存在するか?そうでない場合、誰かが私がそれを達成する方法について正しい方向に私を向けることができますか?私はPHPでかなり自足していますが、私はまだWordPressに慣れていません。

私が考えることができる最も簡単な方法はadd_filter("post_slug", md5(Rand()))のようなものです(それが実際に有効なコードである場合)。明らかに、私は重複したナメクジをチェックしなければならないでしょう、そしてそうでないもの...

正直なところ、私が好むのは以下のようなものです。example.com/prefix/hf434g5ay/postname/prefix/alphanumeric-keyは必須ですが、postnameはSEOに使用されます。

2
user1960364

スラッグをSEO用に残しておきたい場合は、新しい書き換えタグを定義し、ポストスラッグ用のデフォルトの動作をそのまま使用します。

一意のIDが必要な場合は、重複する可能性があるものを探すのではなく、MySQLプライマリインデックスが与えられた場合に一意であることが保証されている投稿IDを再利用しないかすかに見えます。

add_action( 'init', function() {
    add_rewrite_tag( '%my_id%', '([a-z0-9]+)' );
});

add_action( 'pre_get_posts', function( $query ) {
    if ( ! $query->is_main_query() || is_admin() )
        return;

    $id = $query->get( 'my_id' );
    if ( ! empty( $id ) ) {
        $query->set( 'p', base_convert( $id, 36, 10 ) );
        $query->set( 'name', null );
    }
});

add_filter( 'post_link', function( $permalink, $post ) {
    $id = base_convert( $post->ID, 10, 36 );
    return str_replace( '%my_id%', $id, $permalink );
}, 10, 2 );

次に、設定 - パーマリンクであなたのパーマリンク構造を/%my_id%/%postname%/に変更してください。 0〜9以上の小文字が必要な場合は、 62 を基本とする実装を探すことができます。機密URL.

それが役立つことを願っています。

5
kovshenin

次のようなものを使用して、ランダムスラッグを投稿に追加するには、

add_filter( 'wp_unique_post_slug', 'unique_slug_108286', 10, 4 );

function unique_slug_108286( $slug) {    
    $slug = mt_Rand(); //just an example
    return $slug;
}

私はWPがこのフィルタを使って重複を処理することを確信しています(それはデフォルトでします)ので、あなたはそれらをあなた自身でチェックする必要はありません。

/prefix/%postname%/のように設定することで、permalinks管理者設定に手動でプレフィックスを追加することができます。

接頭辞にはカテゴリまたはカスタム分類法を使用することをお勧めします。 prefix/hf434g5ay/postnameのようにポスト名の前にランダムスラッグを設定するのは http://codex.wordpress.org/Rewrite_API を使う必要があると思いますデフォルトの "posts"をマングルにするよりも、これを行うためのカスタム投稿タイプを作成する方が簡単です。

1
Wyck