it-swarm.com.de

Zufällige alphanumerische Schlüssel-URLs

Ich benötige zufällige (und eindeutige) alphanumerische Permalinks. Ich habe mir mehrere Plugins angesehen, aber sie scheinen alle auf eine längere URL umzuleiten. Das ist nicht was ich will, ich möchte, dass der Permalink geändert wird.

Grundsätzlich möchte ich URLs wie bit.ly oder 9gag.com.

Ich habe nachgeschaut, bin aber bei meinen Suchanfragen leer ausgegangen. Gibt es ein Plugin, das dies tut? Wenn nicht, könnte mich jemand in die richtige Richtung weisen, wie ich das erreichen könnte? Ich bin ziemlich autark in PHP, aber ich bin noch nicht sehr vertraut mit WordPress.

Der einfachste Weg, den ich mir vorstellen kann, ist so 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 ...

Um ehrlich zu sein, wäre mir etwas lieber: example.com/prefix/hf434g5ay/postname Da der /prefix/alphanumeric-key erforderlich ist, wird der Postname für SEO verwendet.

2
user1960364

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

Wenn Sie eine eindeutige ID wünschen, können Sie statt möglicher Duplikate auch die Post-ID verwenden, die bei einem MySQL-Primärindex garantiert eindeutig ist. Sie können sie bei Bedarf in eine Base36-Nummer konvertieren 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 );

Ändern Sie dann Ihre Permalinks-Struktur in /%my_id%/%postname%/ in Einstellungen - Permalinks. Wenn Sie mehr als 0-9 und Kleinbuchstaben möchten, können Sie nach base 62 -Implementierungen suchen, obwohl ich kein großer Fan von URLs mit Groß- und Kleinschreibung bin.

Hoffentlich hilft das.

5
kovshenin

So hängen Sie einen zufälligen Slug an einen Beitrag 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 Duplikate mit diesem Filter verarbeitet (standardmäßig), sodass Sie nicht selbst nach ihnen suchen müssen.

Sie können ein Präfix manuell in der Administratoreinstellung für Permalinks hinzufügen, indem Sie es auf /prefix/%postname%/ setzen.

Es ist möglicherweise besser, eine Kategorie oder eine benutzerdefinierte Taxonomie für das Präfix zu verwenden. Was das Setzen des zufälligen Slugs vor dem Postnamen wie prefix/hf434g5ay/postname angeht, würde es meiner Meinung nach erforderlich sein, die http://codex.wordpress.org/Rewrite_API zu verwenden. Es wäre einfacher, einen benutzerdefinierten Post-Typ zu erstellen, um dies zu tun, anstatt zu mangeln die Standard "Beiträge".

1
Wyck