web-dev-qa-db-fra.com

Comment supprimer les slugs de plusieurs types de publication personnalisés

J'ai récemment vu plusieurs publications avec des personnes retirant facilement les slugs d'un d'un seul type personnalisé via la fonction suivante:

function hf_remove_slug( $post_link, $post, $leavename ) {

    if(('pop-tags' == $post->post_type || 'furniture-type' == $post->post_type) && 'publish' == $post->post_status) {
        return $post_link;
    }

    $post_link = str_replace( '/' . $post->post_type . '/', '/', $post_link 
);

   return $post_link;
}
add_filter( 'post_type_link', 'hf_remove_slug', 10, 3 );

function hf_parse_request( $query ) {

    if ( ! $query->is_main_query() || 2 != count( $query->query ) || ! isset( $query->query['page'] ) ) {
        return;
    }

    if ( ! empty( $query->query['name'] ) ) {
        $query->set( 'post_type', array( 'post', 'pop-tags', 'furniture-type', 'page' ) );
    }
}
add_action( 'pre_get_posts', 'hf_parse_request' );

Cependant, je n'ai pas réussi à ce que cela fonctionne lorsque j'ajoute plusieurs types d'articles personnalisés. Quelqu'un peut-il aider avec ceci/expliquer?

1
Laurel

On dirait que tu as ton si tu fais le contraire de ce que tu veux. Vous renvoyez le lien non modifié si vous êtes sur "type de meuble" ou "balises pop".

Cela devrait fonctionner:

function hf_remove_slug( $post_link, $post, $leavename ) {

    if(('pop-tags' == $post->post_type || 'furniture-type' == $post->post_type) && 'publish' == $post->post_status) {
        $post_link = str_replace( '/' . $post->post_type . '/', '/', $post_link);
        return $post_link;
    }

   return $post_link;
}
1
jbwagner