Home / Archive / CCT Overrides CPT Slug
Duplicate Snippet

Embed Snippet on Your Site

CCT Overrides CPT Slug

Code Preview
php
<?php
// 1. Zachytíme dáta tesne pred zápisom do DB
add_filter( 'wp_insert_post_data', function( $data, $postarr ) {
    // Overíme, či ide o CPT, ktoré má prepojenie na CCT (Has Single Page)
    // JetEngine posiela v $_POST dáta z CCT pri ukladaní
    if ( isset( $_POST['slug'] ) && !empty( $_POST['slug'] ) ) {
        
        $new_slug = sanitize_title( $_POST['slug'] );
        
        // Vynútime zmenu slugu v poli, ktoré ide do DB
        $data['post_name'] = $new_slug;
    }
    return $data;
}, 99, 2 );
// 2. Ak aktualizujete cez CCT rozhranie, JetEngine niekedy volá update inak
add_action( 'jet-engine/custom-content-types/item/after-update', function( $item_data, $cct ) {
    
    $post_id_column = $cct->args['single_page_config']['post_id_col'] ?? 'cpt_post_id';
    $post_id = isset( $item_data[ $post_id_column ] ) ? intval( $item_data[ $post_id_column ] ) : 0;
    if ( $post_id > 0 && isset( $item_data['slug'] ) ) {
        global $wpdb;
        
        $new_slug = sanitize_title( $item_data['slug'] );
        // Natvrdo prepíšeme slug v DB podľa ID postu
        $wpdb->query( $wpdb->prepare(
            "UPDATE $wpdb->posts SET post_name = %s WHERE ID = %d",
            $new_slug,
            $post_id
        ) );
        clean_post_cache( $post_id );
    }
}, 99, 2 );

Comments

Add a Comment