@wordpress/editor
Version:
Enhanced block editor for WordPress posts.
54 lines (49 loc) • 1.29 kB
JavaScript
/**
* External dependencies
*/
import { filter, identity, includes } from 'lodash';
/**
* WordPress dependencies
*/
import { Fragment } from '@wordpress/element';
import { withSelect } from '@wordpress/data';
import { compose } from '@wordpress/compose';
/**
* Internal dependencies
*/
import HierarchicalTermSelector from './hierarchical-term-selector';
import FlatTermSelector from './flat-term-selector';
export function PostTaxonomies( {
postType,
taxonomies,
taxonomyWrapper = identity,
} ) {
const availableTaxonomies = filter( taxonomies, ( taxonomy ) =>
includes( taxonomy.types, postType )
);
const visibleTaxonomies = filter(
availableTaxonomies,
( taxonomy ) => taxonomy.visibility.show_ui
);
return visibleTaxonomies.map( ( taxonomy ) => {
const TaxonomyComponent = taxonomy.hierarchical
? HierarchicalTermSelector
: FlatTermSelector;
return (
<Fragment key={ `taxonomy-${ taxonomy.slug }` }>
{ taxonomyWrapper(
<TaxonomyComponent slug={ taxonomy.slug } />,
taxonomy
) }
</Fragment>
);
} );
}
export default compose( [
withSelect( ( select ) => {
return {
postType: select( 'core/editor' ).getCurrentPostType(),
taxonomies: select( 'core' ).getTaxonomies( { per_page: -1 } ),
};
} ),
] )( PostTaxonomies );