web-dev-qa-db-fra.com

Changer le slug avec un champ personnalisé

Je veux changer le slug d'une publication avec un champ personnalisé.

Par exemple, si le champ personnalisé est "mot clé", mon lien de publication deviendra:monsite.com/keyword.

Si le champ personnalisé est vide, je souhaite générer une clé aléatoire telle quemysite.com/xV5f7A.

Comment puis-je faire cela sans changer le noyau wordpress?

Toutes les idées sont les bienvenues! Merci.

2
user1568901

Le slug est enregistré sur wp_posts tandis que les champs personnalisés sont sur wp_posts_meta. Si vous voulez le faire comme cela, vous pouvez utiliser un hook d’action sur save_post qui obtiendra la valeur des champs personnalisés et l’enregistrera sous le slug de publication.

Voici le code

add_action('save_post', 'set_slug');

function set_slug($post_id){
    $new_slug = get_post_meta($post_id,'custom-slug', true);    
    $post_args = array(
        'ID' => $post_id,
        'post_name' => $new_slug,
    );

    wp_update_post($post_args);
}
3
ifdion