web-dev-qa-db-fra.com

Comment afficher les méta des publications dans des colonnes personnalisées pour l'écran des publications?

J'ai une valeur True/False ajoutée aux publications (Exclusif par rapport à Curated) qui a été ajoutée via les champs personnalisés avancés. Comment faire en sorte que cette valeur apparaisse sous forme de colonne dans la liste des publications (/wp-admin/edit.php) pour permettre aux éditeurs de trier rapidement via ce champ?

J'ai trouvé cet exemple ( http://code.tutsplus.com/articles/add-a-custom-column-in-posts-and-custom-post-types-admin-screen--wp-24934 ) pour ajouter la vignette du message, mais vous ne savez pas comment vous adapter à tirer et le champ ACF.

Le nom du champ est company_exclusive et le type est True/False.

Tous les pointeurs seraient appréciés.

Edit: j'ai trouvé cette solution ( http://olliebarker.co.uk/articles/2014/06/displaying-custom-fields-wordpress-admin-post-lists/ ), et adapté son code à mes besoins , mais après avoir créé ceci, je ne vois plus les champs sur l’écran wp-admin/edit.php (ni dans les options de l’écran ni dans celui-ci). Je l'ajoute à functions.php de mon thème. C'est le bon endroit, correct?

//Adds ACF fields to Post List
add_filter('posts_columns', 'custom_posts_table_head');
function custom_posts_table_head( $columns ) {

    $columns['author_name']  = 'Author Name';
    $columns['company_exclusive']  = 'Company Exclusive?';
    $columns['region']  = 'Region';
    $columns['article_excerpt_title']  = 'Article Excerpt Title';
    return $columns;

}
add_action( 'posts_columns', 'custom_posts_table_content', 10, 2);

function bs_projects_table_content( $column_name, $post_id ) {

    if( $column_name == 'author_name' ) {
        $author_name = get_post_meta( $post_id, 'author_name', true );
        echo $author_name;
    }
    if( $column_name == 'company_exclusive' ) {
        $company_exclusive = get_post_meta( $post_id, 'company_exclusive', true );
        if( $company_exclusive == '1' ) { echo 'Yes'; } else { echo 'No'; }
    }
    if( $column_name == 'region' ) {
        $region = get_post_meta( $post_id, 'region', true );
        echo $region;
    }
    if( $column_name == 'article_excerpt_title' ) {
        $article_excerpt_title = get_post_meta( $post_id, 'article_excerpt_title', true );
        echo $article_excerpt_title;
    }

}
1
Keefer

Les noms de vos actions/filtres sont légèrement décalés:

// For registering the column
add_filter( 'manage_posts_columns', 'custom_posts_table_head' );

// For rendering the column
add_action( 'manage_posts_custom_column', 'custom_posts_table_content', 10, 2 );
4
TheDeadMedic

J'ai utilisé le code suivant pour spécifier les produits en vedette dans la liste des produits du panneau d'administration.

add_filter('manage_product_posts_columns', 'hs_product_table_head');
function hs_product_table_head( $columns ) {
    $columns['product_featured']  = 'Featured';
    return $columns;

}
add_action( 'manage_product_posts_custom_column', 'hs_product_table_content', 10, 2 );

function hs_product_table_content( $column_name, $post_id ) {
    if( $column_name == 'product_featured' ) {
        $featured_product = get_post_meta( $post_id, 'featured_product', true );
        if($featured_product == 1) {
            echo "Yes";
        }
    }
}

Pour utiliser cela pour d'autres types de publication, changez le code suivant. Par exemple, le type de message est "portfolio"

add_filter('manage_portfolio_posts_columns', 'hs_portfolio_table_head');
add_action( 'manage_portfolio_posts_custom_column', 'hs_portfolio_table_content', 10, 2 );
1
Rijo K P

Pour les champs personnalisés avancés, mettez ce code dans functions.php:

add_filter( 'manage_faq_posts_columns', 'set_custom_edit_faq_columns' );    
add_action( 'manage_faq_posts_custom_column' , 'custom_faq_column', 10, 2 );

function set_custom_edit_faq_columns($columns) {    
    unset( $columns['author'] );
    $columns['is_useful'] = 'Is Useful';
    $columns['is_unless'] = 'Is Unless';
    return $columns;    
}

function custom_faq_column( $column, $post_id ) {   
    global $post;
    switch ( $column ) {
        case 'is_useful' :
            if(get_field( "is_useful", $post_id )) {
                echo get_field( "is_useful", $post_id );
            } else {
                echo 0;
            }
        break;

        case 'is_unless' :
            if(get_field( "is_unless", $post_id )) {
                echo get_field( "is_unless", $post_id );
            } else {
                echo 0;
            }
        break;    
    }   
}

function my_column_register_sortable( $columns ) {
     $columns['is_useful'] = 'is_useful';
    $columns['is_unless'] = 'is_unless';
    return $columns;
}

add_filter("manage_edit-faq_sortable_columns", "my_column_register_sortable" );
0
Julian Alvarado