it-swarm.com.de

Wie wird die Taxonomie angezeigt, die einem Beitrag in der Tabelle (in der alle Beiträge angezeigt werden) des benutzerdefinierten Beitragstyps zugewiesen ist?

Im Moment verwende ich den folgenden Code, um einen benutzerdefinierten Beitragstyp zu erstellen und ihm eine Taxonomie zuzuweisen:

// === CUSTOM TAXONOMIES === //
add_action('init', 'my_custom_taxonomies', 0);

function my_custom_taxonomies() {
 register_taxonomy(
  'section',  // internal name = machine-readable taxonomy name
  'static_content',  // object type = post, page, link, or custom post-type
  array(
   'hierarchical' => true,
   'labels' => array(
    'name' => __( 'Section' ),
    'singular_name' => __( 'Section' ),
    'add_new_item' => 'Add New Section',
    'edit_item' => 'Edit Section',
    'new_item' => 'New Section',
    'search_items' => 'Search Section',
    'not_found' => 'No Sections found',
    'not_found_in_trash' => 'No Sections found in trash',
    'all_items' => __( 'All Sections' ),
   ),
   'query_var' => true, // enable taxonomy-specific querying
   'rewrite' => array( 'slug' => 'section' ), // pretty permalinks for your taxonomy?
  )
 );
 wp_insert_term('Footer', 'section');
 wp_insert_term('Header', 'section');
 wp_insert_term('Front Page Intro', 'section');
 wp_insert_term('Front Page Content', 'section');
}

// === CUSTOM POST TYPES === //
add_action( 'init', 'create_my_post_types' );

function create_my_post_types() {
 register_post_type( 'static_content',
  array(
   'labels' => array(
    'name' => __( 'Static Content' ),
    'singular_name' => __( 'Static Content' ),
    'add_new_item' => 'Add New Static Content',
    'edit_item' => 'Edit Static Content',
    'new_item' => 'New Static Content',
    'search_items' => 'Search Static Content',
    'not_found' => 'No Static Content found',
    'not_found_in_trash' => 'No Static Content found in trash',
   ),
   '_builtin' => false,
   'public' => true,
   'hierarchical' => false,
   'taxonomies' => array( 'section'),
   'supports' => array(
    'title',
    'editor',
    'excerpt'
   ),
   'rewrite' => array( 'slug' => 'static_content', 'with_front' => false )
  )
 );
}

Wenn ich auf das Menü des benutzerdefinierten Beitragstyps (in diesem Fall "Statischer Inhalt") klicke, werden in der Tabelle/Spalte (in der alle Beiträge angezeigt werden) die folgenden Informationen angezeigt: Titel, Autor und Datum. Ich möchte die Taxonomie anzeigen, die diesem Beitrag zugewiesen ist (in diesem Fall der "Abschnitt".)

Wie mache ich das?

3
janoChen

Unter Verwendung meiner Testsite und einiger Testcodes ist dies das, wonach Sie gesucht haben?

Screenshot of WordPress Custom Post List in the Admin showing associated Taxonomies
(Quelle: mikeschinkel.com )

Um dies zu erreichen, müssen Sie zwei (2) Haken verwenden, von denen einer für Ihren Beitragstyp spezifisch ist: 'manage_static_content_posts_columns' und 'manage_posts_custom_column'. Damit es funktioniert, habe ich Ihren Code genommen und in eine Klasse gepackt und auch ein Plugin erstellt (es muss kein Plugin sein; Sie könnten einfach den Code nehmen und einfügen in der functions.php Datei deines Themas, wenn du möchtest.)

<?php 
/*
Plugin name: Static Content
*/
if (!class_exists('YourSite_StaticContent')) {
  class YourSite_StaticContent {
    static function on_load() {
      add_action('init',array(__CLASS__,'init'));
      add_filter('manage_static_content_posts_columns',
          array(__CLASS__,'manage_static_content_posts_columns'));
      add_filter('manage_posts_custom_column', 
          array(__CLASS__,'manage_posts_custom_column'));
    }
    function manage_static_content_posts_columns($columns){
      $new = array();
      foreach($columns as $key => $title) {
        if ($key=='author') // Put the Sections column before the Author column
          $new['sections'] = 'Sections';
        $new[$key] = $title;
      }
      return $new;
    }
    static function manage_posts_custom_column($column){
      global $post;
      switch ($column) {
        case "sections":
          echo get_the_term_list($post->ID, 'section', '', ', ','');
          break;
      }
    }
    static function init() {
      register_post_type('static_content',array(
        'labels' => array(
          'name' => __( 'Static Content' ),
          'singular_name' => __( 'Static Content' ),
          'add_new_item' => 'Add New Static Content',
          'edit_item' => 'Edit Static Content',
          'new_item' => 'New Static Content',
          'search_items' => 'Search Static Content',
          'not_found' => 'No Static Content found',
          'not_found_in_trash' => 'No Static Content found in trash',
        ),
        'public' => true,
        'hierarchical' => false,
        'taxonomies' => array( 'section'),
        'supports' => array('title','editor','excerpt'),
        'rewrite' => array('slug'=>'static_content','with_front'=>false),
      ));
      register_taxonomy('section','static_content',array(
        'hierarchical' => true,
        'labels' => array(
          'name' => __( 'Section' ),
          'singular_name' => __( 'Section' ),
          'add_new_item' => 'Add New Section',
          'edit_item' => 'Edit Section',
          'new_item' => 'New Section',
          'search_items' => 'Search Section',
          'not_found' => 'No Sections found',
          'not_found_in_trash' => 'No Sections found in trash',
          'all_items' => __( 'All Sections' ),
        ),
        'query_var' => true,
        'rewrite' => array( 'slug' => 'section' ),
        ));
      if (!get_option('yoursite-static-content-initialized')) {
        $terms = array(
          'Footer',
          'Header',
          'Front Page Intro',
          'Front Page Content',
          );
        foreach($terms as $term) {
          if (!get_term_by('name',$term,'section')) {
            wp_insert_term($term, 'section');
          }
        }
        update_option('yoursite-static-content-initialized',true);
      }
    }
  }
  YourSite_StaticContent::on_load();
}
3
MikeSchinkel