Schimbă permalink-ul pentru tipul de postare personalizat
Am o categorie de proiecte în tema mea (tip de postare personalizat).
link-ul meu arată așa
link-ul dorit este
Am și o pagină ca
Sunt confuz cum să obțin acest lucru.
Aveți sugestii pentru regulile de rescriere?

Puteți folosi argumentul rewrite în register_post_type. Puteți avea un nume de tip de postare personalizat diferit de slug-ul din rewrite. De exemplu, aici este un cod exemplu cu tipul de postare personalizat "project" și afișează paginile cu http://shaowtriger.com/brands/naim/
Observați rewrite în $args
add_action( 'init', 'codex_brand_init' );
function codex_brand_init() {
$labels = array(
'name' => _x( 'Brands', 'post type general name', 'your-plugin-textdomain' ),
'singular_name' => _x( 'Brand', 'post type singular name', 'your-plugin-textdomain' ),
'menu_name' => _x( 'Brands', 'admin menu', 'your-plugin-textdomain' ),
'name_admin_bar' => _x( 'Brand', 'add new on admin bar', 'your-plugin-textdomain' ),
'add_new' => _x( 'Add New', 'brand', 'your-plugin-textdomain' ),
'add_new_item' => __( 'Add New Brand', 'your-plugin-textdomain' ),
'new_item' => __( 'New Brand', 'your-plugin-textdomain' ),
'edit_item' => __( 'Edit Brand', 'your-plugin-textdomain' ),
'view_item' => __( 'View Brand', 'your-plugin-textdomain' ),
'all_items' => __( 'All Brands', 'your-plugin-textdomain' ),
'search_items' => __( 'Search Brands', 'your-plugin-textdomain' ),
'parent_item_colon' => __( 'Parent Brands:', 'your-plugin-textdomain' ),
'not_found' => __( 'No brands found.', 'your-plugin-textdomain' ),
'not_found_in_trash' => __( 'No brands found in Trash.', 'your-plugin-textdomain' )
);
$args = array(
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'brands' ),
'capability_type' => 'post',
'has_archive' => true,
'hierarchical' => false,
'menu_position' => null,
'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments' )
);
register_post_type( 'project', $args );
flush_rewrite_rules();
}
Deși având doar pagina de bază http://shaowtriger.com/brands/
nu ar trebui să interfereze cu slug-ul CPT și funcționalitatea, având subpagini la pagina brands nu va funcționa deoarece WordPress va căuta elementul CPT în loc de subpagină.

am deja asta în functions.php cu Proiecte în loc de Branduri.. am schimbat acel slug dar nu funcționează

Va trebui să folosești și flush_rewrite_rules();
și apoi să vizitezi din nou pagina de setări pentru permalinkuri.

nu te-am înțeles.. unde ar trebui să folosesc flush_rewrite_rules();

Îl poți folosi când înregistrezi CPT. Am actualizat codul meu mai sus și am adăugat flush_rewrite_rules();
. Poți adăuga asta în funcția ta în mod similar.

Nu păstra niciodată flush_rewrite_rules();
Este o funcție foarte costisitoare de utilizat. Folosește-o o singură dată și apoi șterge-o, sau altfel conecteaz-o la o acțiune care rulează o singură dată, cum ar fi atunci când o temă sau un plugin este activat.

Dacă ești familiarizat cu interfața liniei de comandă, poți instala wp-cli și folosi comanda wp rewrite flush

Ce se întâmplă dacă aș dori să modific permalink-ul în continuare la http://shaowtriger.com/brands/2018/naim/
Adică: /brands/%year%/%postname%
?
Am găsit asta: https://wordpress.stackexchange.com/questions/216337/change-permalink-structure-for-custom-post-type/216470#216470
Dar cumva acest lucru nu are niciodată efect. Știe cineva un exemplu cu puțin mai mult cod, de exemplu incluzând înregistrarea postului ca mai sus? Acest lucru m-ar putea ajuta puțin...
