Schimbă permalink-ul pentru tipul de postare personalizat

16 sept. 2014, 10:35:11
Vizualizări: 26K
Voturi: 1

Am o categorie de proiecte în tema mea (tip de postare personalizat).

link-ul meu arată așa

http://shaowtriger.com/project/naim/

link-ul dorit este

http://shaowtriger.com/brands/naim/

Am și o pagină ca

http://shaowtriger.com/brands

Sunt confuz cum să obțin acest lucru.

Aveți sugestii pentru regulile de rescriere?

1
Comentarii

Nu cere recomandări de pluginuri. Acest lucru este off topic.

Pieter Goosen Pieter Goosen
16 sept. 2014 11:58:20
Toate răspunsurile la întrebare 1
7

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ă.

16 sept. 2014 10:51:16
Comentarii

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

user1145009 user1145009
16 sept. 2014 11:12:19

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

Robert hue Robert hue
16 sept. 2014 11:25:39

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

user1145009 user1145009
16 sept. 2014 12:02:17

Î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.

Robert hue Robert hue
16 sept. 2014 12:17:28

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.

Pieter Goosen Pieter Goosen
16 sept. 2014 12:48:14

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

Slam Slam
10 oct. 2017 00:07:17

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...

Merc Merc
2 nov. 2018 12:44:36
Arată celelalte 2 comentarii