Product URL without Type

Veröffentlicht von Marco Betschart am

Um Produkte in WooCommerce direkt aufzurufen, ohne den /product Slug in der URL zu haben, kann folgender Schnipsel verwendet werden:

add_filter('post_type_link',function($permalink, $post, $leavename){
    if (!gettype($post) == 'post') {
        return $permalink;
    }
  
    switch ($post->post_type) {
        case 'product':
            if( !strpos($permalink,'?') ){
                $permalink = get_home_url() . '/' . $post->post_name . '/';
            }
            break;
    }
 
    return $permalink;
},10,3);

add_action('pre_get_posts',function( $query ){
    global $wpdb;
 
    if(!$query->is_main_query()) {
        return;
    }
    $post_name = $query->get('pagename');

    $post_type = $wpdb->get_var(
        $wpdb->prepare(
            'SELECT post_type FROM ' . $wpdb->posts . ' WHERE post_name = %s AND post_type != \'attachment\' LIMIT 1',
            $post_name
        )
    );
 
    switch($post_type) {
        case 'product':
            $query->set('product', $post_name);
            $query->set('post_type', $post_type);
            $query->is_single = true;
            $query->is_page = false;
            break;
    }
});
Kategorien: Technologie

Marco Betschart

nerdpreneur out of conviction. lover of the never ending journey of exploration. self growth and tech enthusiast. ambitious rock climber and from time to time, adrenaline junkie.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.