slug personalizat pentru tipul de postare personalizată

9 dec. 2011, 21:02:42
Vizualizări: 14K
Voturi: 8

Salut și mulțumesc pentru citire.

Vreau să adaug autorul postării în slug-ul tipului meu de postare personalizată.

Exemplu: http://example.com/grafice/%autor%/

Ai vreo idee cum să realizez asta?

Iată tipul meu de postare personalizată:

register_post_type('grafice', array(
  'label' => 'Grafice',
  'description' => '',
  'public' => true,
  'show_ui' => true,
  'show_in_menu' => true,
  'capability_type' => 'post',
  'hierarchical' => false,
  'rewrite' => array('slug' => '/grafice/autor'),
  'query_var' => true,
  'supports' => array(
    'title',
    'editor',
    'trackbacks',
    'custom-fields',
    'comments',
    'author',
  ),
  'labels' => array ( 
    'name' => 'Grafice',
    'singular_name' => 'Grafic',
    'menu_name' => 'Grafice',
    'add_new' => 'Adaugă Grafic',
  ),
));

mulțumesc jnz

0
Toate răspunsurile la întrebare 1
1

Am găsit o soluție și am decis să o împărtășesc, pentru că e frumos să fii bun. Funcționează pentru mine și se bazează pe o soluție a lui Jonathan Brinley. Dacă cineva are sugestii sau corecții, nu ezitați să-mi spuneți.

Mai întâi, creează-ți tipul personalizat de postare și configurează-l astfel (acesta este doar un exemplu, asigură-te că se potrivește nevoilor tale. Setarea slug-ului este importantă!):

register_post_type('charts', array( 
  'label' => 'Orice',
  'description' => '',
  'public' => true,
  'show_ui' => true,
  'show_in_menu' => true,
  'capability_type' => 'post',
  'hierarchical' => true,
  'rewrite' => array('slug' => '/orice/%author%'),
  'query_var' => true,
  'supports' => array(
    'title',
    'editor',
    'trackbacks',
    'custom-fields',
    'comments',
    'author'
  ) 
));

Apoi, configurează o funcție pentru filtrul tău (în functions.php):

function my_post_type_link_filter_function($post_link, $id = 0, $leavename = FALSE) {
  if (strpos('%author%', $post_link) === FALSE) {
    $post = &get_post($id);
    $author = get_userdata($post->post_author);
    return str_replace('%author%', $author->user_nicename, $post_link);
  }
}

Apoi activează filtrul (tot în functions.php):

add_filter('post_type_link', 'my_post_type_link_filter_function', 1, 3);

Cum am spus, nu sunt sigur că aceasta este cea mai bună metodă, dar funcționează pentru mine :)

10 dec. 2011 18:58:32
Comentarii

Aceasta este o soluție interesantă. Te rog să marchezi întrebarea ta ca răspuns.

fuxia fuxia
25 feb. 2012 17:18:33