it-swarm.com.de

Ein einfaches Skript zum Sortieren von benutzerdefinierten Posts in admin?

Ich habe dies in den Foren von wordpress.org gefunden. getestet und funktioniert gut. Als ich die Variablen in meine eigenen änderte, schlug es fehl. Ich habe es stundenlang gründlich (!) Überprüft. Ich kann nicht sehen, wo es schief geht.

register_post_type( 'book', array(
    'labels' => array(
        'name' => 'Books',
        'singular_name' => 'Book',
        'add_new' => 'Add New',
        'add_new_item' => 'Add New Book',
        'edit_item' => 'Edit book',
        'edit' => 'Edit',
        'new_item' => 'New Book',
        'view_item' => 'View Book',
        'search_items' => 'Search Books',
        'not_found' => 'No books found',
        'not_found_in_trash' => 'No books found in Trash',
        'view' => 'View Book'
    ),
    'public' => true,
    'capability_type' => 'post',
    'hierarchical' => false,
    'rewrite' => true,
    'query_var' => true,
    'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'custom-fields', 'comments' ),
    'taxonomies' => array('category','post_tag')
    )
);
register_taxonomy(
    'book_category',
    'book',
    array(
        'hierarchical' => true,
        'label' => 'Categoriën',
        'public' => true,
        'query_var' => true,
        'show_tagcloud' => true,
        'rewrite' => Array(
            'slug' => 'book_category')
        )
);
function add_new_columns($defaults) {
    $defaults['book_cats'] = __('Categoriën');
    return $defaults;
}
function add_column_data( $column_name, $post_id ) {
    if( $column_name == 'book_cats' ) {
        $_posttype  = 'book';
        $_taxonomy  = 'book_category';
        $terms      = get_the_terms( $post_id, $_taxonomy );
        if ( !empty( $terms ) ) {
            $out = array();
            foreach ( $terms as $c )
                $_taxonomy_title = esc_html(sanitize_term_field('name', $c->name, $c->term_id, 'category', 'display'));
                $out[] = "<a href='edit.php?book_category=$_taxonomy_title&post_type=$_posttype'>$_taxonomy_title</a>";
            echo join( ', ', $out );
        }
        else {
            _e('Uncategorized');
        }
    }
}
add_filter( 'manage_book_posts_columns', 'add_new_columns' );
add_action( 'manage_posts_custom_column', 'add_column_data', 10, 2 ); ?>

Meine bearbeitete Version (die neu "angepasste", die jetzt etwas macht!):

register_post_type( 'frog', array(
    'labels' => array(
        'name' => 'Frog',
        'singular_name' => 'Frog',
        'add_new' => 'Add New',
        'add_new_item' => 'Add New frog',
        'edit_item' => 'Edit frog',
        'edit' => 'Edit',
        'new_item' => 'New frog',
        'view_item' => 'View frog',
        'search_items' => 'Search frogs',
        'not_found' => 'No frogs found',
        'not_found_in_trash' => 'No frogs found in Trash',
        'view' => 'View frog'
    ),
    'public' => true,
    'capability_type' => 'post',
    'hierarchical' => false,
    'rewrite' => true,
    'query_var' => true,
    'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'custom-fields', 'comments' ),
    'taxonomies' => array('category','post_tag')
    )
);
register_taxonomy(
    'frog_category',
    'frog',
    array(
        'hierarchical' => true,
        'label' => 'Categories',
        'public' => true,
        'query_var' => true,
        'show_tagcloud' => true,
        'rewrite' => Array(
            'slug' => 'frog_category')
        )
);
function add_new_frogcolumns($defaults) {
    $defaults['frog_cats'] = __('Categories');
    return $defaults; //missing as pointed out by scribu
}
function add_frogcolumn_data( $column_name, $post_id ) {
    if( $column_name == 'frog_cats' ) {
        $_posttype  = 'frog';
        $_taxonomy  = 'frog_category';
        $terms      = get_the_terms( $post_id, $_taxonomy );
        if ( !empty( $terms ) ) {
            $out = array();
            foreach ( $terms as $c )
                $_taxonomy_title = esc_html(sanitize_term_field('name', $c->name, $c->term_id, 'category', 'display'));
                $out[] = "<a href='edit.php?frog_category=$_taxonomy_title&post_type=$_posttype'>$_taxonomy_title</a>";
            echo join( ', ', $out );
        }
        else {
            _e('Uncategorized');
        }
    }
}
add_filter( 'manage_frog_posts_columns', 'add_new_frogcolumns' );
add_action( 'manage_posts_custom_column', 'add_frogcolumn_data', 10, 2 );//this line was also wrong
1
user3016

Dieses Skript erlaubt keine Sortierung, sondern zeigt nur eine benutzerdefinierte Spalte an. Ist das das Original oder das modifizierte?

Beachten Sie, dass register_post_type () und register_taxonomy () nicht direkt aufgerufen werden sollten, sondern in einem Callback, der mit der Aktion 'init' verknüpft ist. Arbeitsversion:

function my_init() {
    register_post_type( 'frog', array(
        'labels' => array(
            'name' => 'Frog',
            'singular_name' => 'Frog',
            'add_new' => 'Add New',
            'add_new_item' => 'Add New frog',
            'edit_item' => 'Edit frog',
            'edit' => 'Edit',
            'new_item' => 'New frog',
            'view_item' => 'View frog',
            'search_items' => 'Search frogs',
            'not_found' => 'No frogs found',
            'not_found_in_trash' => 'No frogs found in Trash',
            'view' => 'View frog'
        ),
        'public' => true,
        'capability_type' => 'post',
        'hierarchical' => false,
        'rewrite' => true,
        'query_var' => true,
        'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'custom-fields', 'comments' ),
        'taxonomies' => array('category','post_tag')
        )
    );
    register_taxonomy(
        'frog_category',
        'frog',
        array(
            'hierarchical' => true,
            'label' => 'Categories',
            'public' => true,
            'query_var' => true,
            'show_tagcloud' => true,
            'rewrite' => Array(
                'slug' => 'frog_category')
            )
    );
}

function add_new_frogcolumns($defaults) {
    $defaults['frog_cats'] = __('Categories');//frog_cats relates to? 
    return $defaults;
}
function add_frogcolumn_data( $column_name, $post_id ) {
    if( $column_name == 'frog_cats' ) {
        $_posttype  = 'frog';
        $_taxonomy  = 'frog_category';
        $terms      = get_the_terms( $post_id, $_taxonomy );
        if ( !empty( $terms ) ) {
            $out = array();
            foreach ( $terms as $c )
                $_taxonomy_title = esc_html(sanitize_term_field('name', $c->name, $c->term_id, 'category', 'display'));
                $out[] = "<a href='edit.php?frog_category=$_taxonomy_title&post_type=$_posttype'>$_taxonomy_title</a>";
            echo join( ', ', $out );
        }
        else {
            _e('Uncategorized');
        }
    }
}

add_action('init', 'my_init');
add_filter( 'manage_frog_posts_columns', 'add_new_frogcolumns' );
add_action( 'manage_frog_custom_column', 'add_frogcolumn_data', 10, 2 );
1
scribu

ich weiß, das ist alt, aber ich bin hier über Google gestolpert. Ich war auf der Suche nach etwas anderem, aber falls jemand es braucht:

http://shibashake.com/wordpress-theme/add-custom-post-type-columns

hier finden Sie einige wirklich gute Informationen zum Hinzufügen benutzerdefinierter Spalten für CPTs. seltsam aussehende Website, aber einige total üble WP Infos.

und dies ist einer von Justin Tadlocks Tuts ... und es geht noch einen Schritt weiter, um Dinge sortierbar zu machen. Benutzerdefinierte Spalten für benutzerdefinierte Beitragstypen

ich finde, dass nur einige Spalten sortierbar sind. Ich denke, b/c es ist eine modifizierte Abfrage. Ich muss noch herausfinden, wie ich nach Taxonomie sortieren soll.

0
helgatheviking