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;
}
}
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 );
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 );
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" );