Zufällige alphanumerische Schlüssel-URLs

Ich brauche zufällige (und eindeutige) alphanumerische Permalinks. Ich habe mir mehrere Plugins angeschaut, aber alle scheinen eine Art Umleitung zu einer längeren URL zu machen. Das will ich nicht, ich möchte, dass der Permalink geändert wird.

Im Grunde möchte ich URLs wie bit.ly oder 9gag.com.

Ich habe gesucht, aber in meinen Suchen leer ausgegangen – existiert ein Plugin, das das tut? Wenn nicht, könnte mir jemand in die richtige Richtung weisen, wie ich es erreichen könnte? Ich bin ziemlich autark in PHP, aber ich bin noch nicht sehr vertraut mit WordPress.

Der einfachste Weg, an den ich denken könnte, ist etwas wie add_filter("post_slug", md5(rand())) (wenn das tatsächlich gültiger Code wäre). Natürlich müsste ich nach doppelten Schnecken suchen und was nicht …

Ehrlich gesagt, was ich lieber bevorzuge ist etwas wie: example.com/prefix/hf434g5ay/postname Dabei ist der /prefix/alphanumeric-key erforderlich, aber postname wird für SEO verwendet.

Solutions Collecting From Web of "Zufällige alphanumerische Schlüssel-URLs"

Wenn Sie Ihre Slugs für SEO beibehalten möchten, sollten Sie ein neues Rewrite-Tag definieren und das Standardverhalten für Post-Slugs beibehalten.

Wenn Sie eine eindeutige ID wünschen, dann sollten Sie, anstatt nach möglichen Dubletten zu suchen, einfach die Post-ID wiederverwenden, die bei einem primären MySQL-Index garantiert einmalig ist – Sie können sie in eine base36-Nummer konvertieren, wenn Sie möchten eher wie ein bisschen aussehen.

 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 ); 

Dann ändere deine Permalinks-Struktur in /%my_id%/%postname%/ unter Einstellungen – Permalinks. Wenn Sie mehr als 0-9 und Kleinbuchstaben möchten, können Sie nach einigen Basis 62- Implementierungen suchen, obwohl ich kein großer Fan von Groß-und Kleinschreibung URLs bin.

Ich hoffe, das hilft.

So fügen Sie einen zufälligen Slug an einen Post an:

 add_filter( 'wp_unique_post_slug', 'unique_slug_108286', 10, 4 ); function unique_slug_108286( $slug) { $slug = mt_rand(); //just an example return $slug; } 

Ich bin mir ziemlich sicher, dass WP mit diesem Filter Duplikate verarbeiten wird (standardmäßig), so dass Sie nicht selbst danach suchen müssen.

Sie können ein Präfix manuell in Ihrer Permalinks Admin-Einstellung hinzufügen, indem Sie es auf etwas wie /prefix/%postname%/

Es ist möglicherweise besser, eine Kategorie oder benutzerdefinierte Taxonomie für das Präfix zu verwenden. prefix/hf434g5ay/postname ich den Zufalls-Slug vor dem postnamenähnlichen prefix/hf434g5ay/postname ich, dass es die Verwendung von http://codex.wordpress.org/Rewrite_API erfordern würde, wäre es einfacher, einen benutzerdefinierten Post-Typ dafür zu erstellen, anstatt dies zu tun der Standard “posts”.