Site logo

Archived topic

Changing the number of columns in CPT Archive

9 replies · Started by Dominik on September 30, 2021

Viewing posts 1–10 of 10

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 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.

This archived topic is closed to new replies.