Skip to content

Commit

Permalink
Terms List block: Add Categories-specific variation (#65434)
Browse files Browse the repository at this point in the history
Add two variations to the Terms List block (i.e. `core/categories` -- previously named "Categories List"): One for Categories, and another one for all other taxonomies.

This is mostly for better discoverability of what used to be the Categories List block under its new name.

Co-authored-by: ockham <bernhard-reiter@git.wordpress.org>
Co-authored-by: gziolo <gziolo@git.wordpress.org>
Co-authored-by: fabiankaegy <fabiankaegy@git.wordpress.org>
  • Loading branch information
4 people authored Sep 18, 2024
1 parent c754c78 commit 5aafffc
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 1 deletion.
4 changes: 3 additions & 1 deletion packages/block-library/src/categories/edit.js
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,9 @@ export default function CategoriesEdit( {
} ) ) }
value={ taxonomySlug }
onChange={ ( selectedTaxonomy ) =>
setAttributes( { taxonomy: selectedTaxonomy } )
setAttributes( {
taxonomy: selectedTaxonomy,
} )
}
/>
) }
Expand Down
2 changes: 2 additions & 0 deletions packages/block-library/src/categories/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import { category as icon } from '@wordpress/icons';
import initBlock from '../utils/init-block';
import metadata from './block.json';
import edit from './edit';
import variations from './variations';

const { name } = metadata;

Expand All @@ -18,6 +19,7 @@ export const settings = {
icon,
example: {},
edit,
variations,
};

export const init = () => initBlock( { name, metadata, settings } );
40 changes: 40 additions & 0 deletions packages/block-library/src/categories/variations.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
/**
* WordPress dependencies
*/
import { __ } from '@wordpress/i18n';
import { category as icon } from '@wordpress/icons';

const variations = [
{
name: 'terms',
title: __( 'Terms List' ),
icon,
attributes: {
// We need to set an attribute here that will be set when inserting the block.
// We cannot leave this empty, as that would be interpreted as the default value,
// which is `category` -- for which we're defining a distinct variation below,
// for backwards compatibility reasons.
// The logical fallback is thus the only other built-in and public taxonomy: Tags.
taxonomy: 'post_tag',
},
isActive: ( blockAttributes ) =>
// This variation is used for any taxonomy other than `category`.
blockAttributes.taxonomy !== 'category',
},
{
name: 'categories',
title: __( 'Categories List' ),
description: __( 'Display a list of all categories.' ),
icon,
attributes: {
taxonomy: 'category',
},
isActive: [ 'taxonomy' ],
// The following is needed to prevent "Terms List" from showing up twice in the inserter
// (once for the block, once for the variation). Fortunately, it does not collide with
// `categories` being the default value of the `taxonomy` attribute.
isDefault: true,
},
];

export default variations;

0 comments on commit 5aafffc

Please sign in to comment.