it-swarm.com.de

Wie kann ich benutzerdefinierten Beitragstabellen Spalten hinzufügen?

Ich habe einen benutzerdefinierten Beitragstyp erstellt. Ich habe meinem benutzerdefinierten Beitragstyp auch ein Meta-Feld hinzugefügt. Jetzt möchte ich meine Meta-Box als Spalten zu meiner benutzerdefinierten Beitragstabelle hinzufügen.

Mein benutzerdefinierter Beitrag

add_action( 'init', 'create_post_type' );
// Create my custom post
function create_post_type() {
    register_post_type( 'spark_stars', 
        array('labels' => 
            array(
                'name' => __( 'Stars' ),
           'singular_name' => __( 'Star' )),
           'public' => true,
           'has_archive' => true,
           'supports' => array( 'title', 'editor', 'thumbnail'),
        )
    );
 }

add_action('add_meta_boxes','stars_meta_box');
// Create my meta box
function stars_meta_box(){
    global $post;
    add_meta_box('first_name_meta_box','First Name',
        'first_name_meta_box_html','spark_stars','normal','default');
}
// Create meta box html
function first_name_meta_box_html(){
    wp_nonce_field('first_name','first_name_meta_box_nonce');
    $value = get_post_meta(get_the_ID(), 'first_name_meta_box_key', true ); ?>
    <label>First Name: </label>
        <input type="text" name="fname" 
            value="<?php echo esc_attr($value); ?>"/>
<?php { 

add_action('manage_spark_stars_posts_columns',.....) // is this the function?
add_filter('manage_spark_stars_posts_columns',.....) // is this the function?

Wie kann ich dieses Meta-Feld als Spalte in meiner benutzerdefinierten Beitragstabelle abrufen und wie kann ich die Miniaturansicht jedes Beitrags als Spalte in meiner benutzerdefinierten Beitragstabelle abrufen?

2
Femi

Ich denke, der manage_{$post_type}_posts_columns Filter ist das, wonach Sie suchen. Anschließend können Sie mit der Aktion manage_posts_custom_column den Inhalt für jede Spalte in der Ansicht der Beitragsliste verwalten.

BEARBEITEN::

Um Ihrem benutzerdefinierten Beitragstyp benutzerdefinierte Spalten hinzuzufügen, müssen Sie die auszugebenden Spalten mit dem manage_{$post_type}_posts_columns filtern, wobei $post_type der Name ist, den Sie zum Registrieren des benutzerdefinierten Beitragstyps verwendet haben. In Ihrem Fall wäre es spark_stars.

Die Variable $columns ist ein Array der aktuellen Spalten. Sie können ihn entweder hinzufügen oder ihn bei Bedarf vollständig überschreiben.

add_filter('manage_spark_stars_posts_columns','filter_cpt_columns');

function filter_cpt_columns( $columns ) {
    // this will add the column to the end of the array
    $columns['first_name'] = 'First Name';
    //add more columns as needed

    // as with all filters, we need to return the passed content/variable
    return $columns;
}

Der nächste Schritt ist, WordPress mitzuteilen, welche Inhalte in der Spalte angezeigt werden sollen. Dies kann mit der Aktion manage_posts_custom_column erfolgen. Die folgende Methode gibt den First Name aus, wenn das Post-Meta vorhanden ist, oder eine Standardzeichenfolge, wenn nicht.

add_action( 'manage_posts_custom_column','action_custom_columns_content', 10, 2 );
function action_custom_columns_content ( $column_id, $post_id ) {
    //run a switch statement for all of the custom columns created
    switch( $column_id ) { 
        case 'first_name':
            echo ($value = get_post_meta($post_id, 'first_name_meta_box_key', true ) ) ? $value : 'No First Name Given';
        break;

        //add more items here as needed, just make sure to use the column_id in the filter for each new item.

   }
}

Hoffentlich ist das klarer!

6
Welcher