it-swarm-eu.dev

Náhodné alfanumerické klíčové adresy URL

Potřebuji náhodné (a unikátní) alfanumerické permalinky. Díval jsem se na několik pluginů, ale zdá se, že všechny formy přesměrování na delší URL. To není to, co chci, chci změnit permalink.

V podstatě chci URL jako bit.ly nebo 9gag.com.

Hledal jsem, ale při vyhledávání jsem přišel prázdný - existuje plugin, který to dělá? Pokud ne, mohl by mě někdo nasměrovat správným směrem, jak to dosáhnout? Jsem dost sebevědomý v PHP, ale zatím jsem s WordPressem velmi dobře neznal.

Nejjednodušší způsob, jak jsem si myslel, je něco jako add_filter("post_slug", md5(Rand())) (pokud to byl vlastně platný kód). Samozřejmě bych musel zkontrolovat duplikáty slimáků a co ne ...

Upřímně řečeno, co bych raději raději preferoval, je něco jako: example.com/prefix/hf434g5ay/postname V tom je /prefix/alphanumeric-key vyžadováno, ale pro SEO je použito poštovní jméno.

2
user1960364

Pokud byste chtěli, aby vaše slimáci pro SEO, pak budete chtít definovat nový přepis tag a ponechat výchozí chování pro post slugs.

Chcete-li mít jedinečné ID, pak místo vyhledání možných duplikátů, proč nejen znovu použít ID příspěvku, který je zaručen jedinečným vzhledem k primárnímu indexu MySQL - můžete jej převést na číslo base36, pokud chcete. vypadat spíš jako bitly.

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

Pak změňte strukturu permalinks na /%my_id%/%postname%/ v Nastavení - Permalinks. Pokud chcete více než 0-9 a malá písmena, můžete se podívat na některé implementace základny 62 , i když nejsem velkým fanouškem případových případů. citlivých adres URL.

Doufám, že to pomůže.

5
kovshenin

Chcete-li k příspěvku připojit něco náhodného:

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

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

Jsem si docela jistý, že WP zvládne duplikáty pomocí tohoto filtru (standardně), takže je nemusíte kontrolovat sami.

Předponu můžete přidat ručně v nastavení administrátora permalinks nastavením na něco jako /prefix/%postname%/

Pro předponu může být lepší použít kategorii nebo vlastní taxonomii. Pokud jde o nastavení náhodné slug před poštovním jménem, ​​jako je prefix/hf434g5ay/postname myslím, že by to vyžadovalo použití http://codex.wordpress.org/Rewrite_API , být snazší vytvořit vlastní typ příspěvku místo toho, aby se nastavovaly výchozí příspěvky.

1
Wyck