URL de clave alfanumérica aleatoria

2

Necesito enlaces permanentes alfanuméricos aleatorios (y únicos). He visto varios complementos, pero todos parecen hacer algún tipo de redirección a una URL más larga. Eso no es lo que quiero, quiero que se cambie el enlace permanente.

Básicamente, quiero URL como bit.ly o 9gag.com.

He buscado, pero aparecí vacío en mis búsquedas. ¿Existe un complemento que haga esto? Si no, ¿podría alguien indicarme la dirección correcta en cuanto a cómo podría lograrlo? Soy bastante autosuficiente en PHP pero todavía no estoy muy familiarizado con WordPress.

La forma más fácil en la que puedo pensar es algo como add_filter("post_slug", md5(rand())) (si realmente fuera un código válido). Obviamente, tendría que verificar si hay duplicados babosas y qué no ...

Honestamente, lo que preferiría es algo como: example.com/prefix/hf434g5ay/postname En que se requiere /prefix/alphanumeric-key pero postname se usa para SEO.

    
pregunta user1960364 30.07.2013 - 04:09

2 respuestas

5

Si desea mantener sus slugs para SEO, entonces querrá definir una nueva etiqueta de reescritura y dejar el comportamiento predeterminado para post slugs.

Si desea una ID única, entonces en lugar de buscar posibles duplicados, ¿por qué no reutilizar la ID de publicación que se garantiza que sea única dado un índice primario de MySQL? Puede convertirlo a un número base36 si quieres que se vea más como un poco.

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

Luego, cambie su estructura de enlaces permanentes a /%my_id%/%postname%/ en Configuración - Permalinks. Si desea más de 0-9 y caracteres en minúscula, puede buscar algunos base 62 implementaciones, aunque no soy un gran fanático de las URL que distinguen entre mayúsculas y minúsculas.

Espero que ayude.

    
respondido por el kovshenin 07.06.2016 - 16:20
1

Para añadir una bala aleatoria a una publicación usando algo como:

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

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

Estoy bastante seguro de que WP manejará duplicados usando este filtro (lo hace de manera predeterminada), por lo que no es necesario que los compruebe usted mismo.

Puedes agregar un prefijo manualmente en la configuración de administración de los enlaces permanentes configurándolo en algo como /prefix/%postname%/

Podría ser mejor usar una categoría o taxonomía personalizada para el prefijo. En cuanto a configurar la barra aleatoria antes del nombre post como prefix/hf434g5ay/postname , creo que requeriría el uso del enlace , sería más fácil de crear un tipo de publicación personalizada para hacer esto en lugar de alterar las "publicaciones" predeterminadas.

    
respondido por el Wyck 30.07.2013 - 06:29

Lea otras preguntas en las etiquetas