Archived topic
Changing the number of columns in CPT Archive
9 replies · Started by Dominik on September 30, 2021
Hi there,
I have tried to change the number of columns for one of my CPT archive pages, but it doesn't work.
Here is my code (as explained in the documentation: https://docs.generatepress.com/article/using-columns-in-the-blog/#adding-columns-to-your-custom-post-type)
add_filter( 'generate_blog_columns','tu_referenz_columns' );
function tu_referenz_columns( $columns ) {
if ( is_post_type_archive( 'Referenz' ) ) {
return true;
}
return $columns;
}
add_filter( 'generate_blog_get_column_count','tu_referenz_column_count' );
function tu_referenz_column_count( $count ) {
if ( is_post_type_archive( 'Referenz' ) ) {
return 50;
}
return $count;
}
What could be wrong?
Thanks in advance!
Hi there,
try this method:
add_filter( 'generate_blog_columns', function( $columns ) {
if ( 'referenz' === get_post_type() && ! is_singular() ) {
return true;
}
return $columns;
} );
add_filter( 'generate_blog_get_column_count','tu_referenz_column_count' );
function tu_referenz_column_count( $count ) {
if ( 'referenz' === get_post_type() ) {
return 50;
}
return $count;
}
Make sure the CPT slug name is correct.
Hi David,
it seems not to work.
I tried to use the Slug (referenzen) as well as the name of the post type (Referenz) – but still one row.
// Register Custom Post Type Referenzen
$labels = array(
'name' => _x( 'Referenz', 'Post Type General Name', 'text_domain' ),
'singular_name' => _x( 'Referenz', 'Post Type Singular Name', 'text_domain' ),
'menu_name' => __( 'Referenzen', 'text_domain' ),
'name_admin_bar' => __( 'Referenzen', 'text_domain' ),
'archives' => __( 'Referenzen Archive', 'text_domain' ),
'attributes' => __( 'Referenzen Attribute', 'text_domain' ),
'parent_item_colon' => __( 'Eltern Referenz', 'text_domain' ),
'all_items' => __( 'Alle Referenzen', 'text_domain' ),
'add_new_item' => __( 'Neue Referenz', 'text_domain' ),
'add_new' => __( 'Neue Referenz', 'text_domain' ),
'new_item' => __( 'Neue Referenz', 'text_domain' ),
'edit_item' => __( 'Referenz bearbeiten', 'text_domain' ),
'update_item' => __( 'Referenz aktualisieren', 'text_domain' ),
'view_item' => __( 'Zeige Referenz', 'text_domain' ),
'view_items' => __( 'Zeige Referenz', 'text_domain' ),
'search_items' => __( 'Suche Referenz', 'text_domain' ),
'not_found' => __( 'Nicht gefunden', 'text_domain' ),
'not_found_in_trash' => __( 'Nicht im Papierkorb gefunden', 'text_domain' ),
'featured_image' => __( 'Beitragsbild', 'text_domain' ),
'set_featured_image' => __( 'Beitragsbild festlegen', 'text_domain' ),
'remove_featured_image' => __( 'Beitragsbild löschen', 'text_domain' ),
'use_featured_image' => __( 'Als Beitragsbild festlegen', 'text_domain' ),
'insert_into_item' => __( 'Einfügen', 'text_domain' ),
'uploaded_to_this_item' => __( 'Uploaded to this item', 'text_domain' ),
'items_list' => __( 'Items list', 'text_domain' ),
'items_list_navigation' => __( 'Items list navigation', 'text_domain' ),
'filter_items_list' => __( 'Filter items list', 'text_domain' ),
);
$rewrite = array(
'slug' => 'referenzen',
'with_front' => false,
'pages' => true,
'feeds' => true,
);
$args = array(
'label' => __( 'Referenzen', 'text_domain' ),
'description' => __( 'Referenzen', 'text_domain' ),
'labels' => $labels,
'supports' => array( 'title', 'editor', 'thumbnail', 'revisions', 'custom-fields', 'page-attributes', 'post-formats', 'excerpt' ),
'hierarchical' => false,
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'menu_position' => 4,
'menu_icon' => 'dashicons-clipboard',
'show_in_admin_bar' => true,
'show_in_nav_menus' => true,
'show_in_rest' => true,
'can_export' => true,
'has_archive' => true,
'exclude_from_search' => false,
'publicly_queryable' => true,
'query_var' => 'Referenz',
'rewrite' => $rewrite,
'capability_type' => 'page',
);
register_post_type( 'Referenz', $args );
}
Hi Manuel,
David's code should work, just tested on my side.
How did you add the code?
Let me know :)
Hi Ying,
strange.
We added the CPT to a mu-plugins php and the columns code to functions.php
Hi Manuel,
Can you check and make sure it's using the correct slug?
I see that on your code you have register_post_type( 'Referenz', $args ); where Referenz is capitalized. I believe you should have this on lowercase.
Reference - https://developer.wordpress.org/reference/functions/register_post_type/#parameters
Hi Elvin,
I changed the CPT to lower case, but still just one row on archive page:
CPT Code:
// Register Custom Post Type Referenzen
$labels = array(
'name' => _x( 'Referenz', 'Post Type General Name', 'text_domain' ),
'singular_name' => _x( 'Referenz', 'Post Type Singular Name', 'text_domain' ),
'menu_name' => __( 'Referenzen', 'text_domain' ),
'name_admin_bar' => __( 'Referenzen', 'text_domain' ),
'archives' => __( 'Referenzen Archive', 'text_domain' ),
'attributes' => __( 'Referenzen Attribute', 'text_domain' ),
'parent_item_colon' => __( 'Eltern Referenz', 'text_domain' ),
'all_items' => __( 'Alle Referenzen', 'text_domain' ),
'add_new_item' => __( 'Neue Referenz', 'text_domain' ),
'add_new' => __( 'Neue Referenz', 'text_domain' ),
'new_item' => __( 'Neue Referenz', 'text_domain' ),
'edit_item' => __( 'Referenz bearbeiten', 'text_domain' ),
'update_item' => __( 'Referenz aktualisieren', 'text_domain' ),
'view_item' => __( 'Zeige Referenz', 'text_domain' ),
'view_items' => __( 'Zeige Referenz', 'text_domain' ),
'search_items' => __( 'Suche Referenz', 'text_domain' ),
'not_found' => __( 'Nicht gefunden', 'text_domain' ),
'not_found_in_trash' => __( 'Nicht im Papierkorb gefunden', 'text_domain' ),
'featured_image' => __( 'Beitragsbild', 'text_domain' ),
'set_featured_image' => __( 'Beitragsbild festlegen', 'text_domain' ),
'remove_featured_image' => __( 'Beitragsbild löschen', 'text_domain' ),
'use_featured_image' => __( 'Als Beitragsbild festlegen', 'text_domain' ),
'insert_into_item' => __( 'Einfügen', 'text_domain' ),
'uploaded_to_this_item' => __( 'Uploaded to this item', 'text_domain' ),
'items_list' => __( 'Items list', 'text_domain' ),
'items_list_navigation' => __( 'Items list navigation', 'text_domain' ),
'filter_items_list' => __( 'Filter items list', 'text_domain' ),
);
$rewrite = array(
'slug' => 'referenzen',
'with_front' => false,
'pages' => true,
'feeds' => true,
);
$args = array(
'label' => __( 'Referenzen', 'text_domain' ),
'description' => __( 'Referenzen', 'text_domain' ),
'labels' => $labels,
'supports' => array( 'title', 'editor', 'thumbnail', 'revisions', 'custom-fields', 'page-attributes', 'post-formats', 'excerpt' ),
'hierarchical' => false,
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'menu_position' => 4,
'menu_icon' => 'dashicons-clipboard',
'show_in_admin_bar' => true,
'show_in_nav_menus' => true,
'show_in_rest' => true,
'can_export' => true,
'has_archive' => true,
'exclude_from_search' => false,
'publicly_queryable' => true,
'query_var' => 'referenzen',
'rewrite' => $rewrite,
'capability_type' => 'page',
);
register_post_type( 'referenzen', $args );
And the code for 2 rows:
add_filter( 'generate_blog_columns', function( $columns ) {
if ( 'referenzen' === get_post_type() && ! is_singular() ) {
return true;
}
return $columns;
} );
add_filter( 'generate_blog_get_column_count','tu_referenz_column_count' );
function tu_referenz_column_count( $count ) {
if ( 'referenzen' === get_post_type() ) {
return 50;
}
return $count;
}
Do I need to change something in the customizer or somewhere else?
As a quick test, enable the Customizer > Layout > Blog >>> Columns. Do you see any change to the archive ?
Yes – now it works!
Do I always need to enable the Blog module to change the columns of a CPT archive manually?
Seems that way :)
So if you want to disable the columns on the Blog you could write you filter like this:
add_filter( 'generate_blog_columns', function( $columns ) {
if ( 'referenzen' !== get_post_type() && ! is_singular() ) {
return false;
}
return $columns;
} );
This should disable the columns everywhere apart from the referenzen post archive.