it-swarm.com.de

benutzerdefinierte Schnecke für benutzerdefinierte Beitragstyp

Hallo und danke fürs Lesen.

Ich möchte den Autor des Beitrags in meinen benutzerdefinierten Beitragstyp einfügen.

Beispiel: http://example.com/charts/%author%/

Irgendwelche Ideen, wie man das erreicht?

Hier ist mein benutzerdefinierter Beitragstyp:

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

segne jnz

6
honk31

Ich fand eine Lösung und beschloss, sie zu teilen, weil es schön ist, nett zu sein. Dies funktioniert für mich und basiert auf einer Lösung von Jonathan Brinley . Wenn jemand Vorschläge oder Korrekturen hat, kann er mich gerne informieren.

Erstellen Sie zunächst Ihren benutzerdefinierten Post-Typ und richten Sie ihn wie folgt ein (dies ist nur ein Beispiel. Denken Sie daran, ihn an Ihre eigenen Bedürfnisse anzupassen. Die Slug-Einstellung ist wichtig!)

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

Als nächstes richten Sie eine Funktion für Ihren Filter ein (in 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);
  }
}

Dann aktiviere den Filter (auch in functions.php):

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

Wie gesagt, ich bin mir nicht sicher, ob dies der beste Weg ist, aber es funktioniert bei mir :)

8
honk31