File Editor
Directories:
.. (Back)
archives
audio
avatar
block
button
buttons
calendar
categories
classic
code
column
columns
comment-author-name
comment-content
comment-date
comment-edit-link
comment-reply-link
comment-template
comments
comments-pagination
comments-pagination-next
comments-pagination-numbers
comments-pagination-previous
comments-title
cover
details
embed
file
footnotes
freeform
gallery
group
heading
home-link
html
image
latest-comments
latest-posts
legacy-widget
list
list-item
loginout
media-text
missing
more
navigation
navigation-link
navigation-submenu
nextpage
page-list
page-list-item
paragraph
pattern
post-author
post-author-biography
post-author-name
post-comments-form
post-content
post-date
post-excerpt
post-featured-image
post-navigation-link
post-template
post-terms
post-title
preformatted
pullquote
query
query-no-results
query-pagination
query-pagination-next
query-pagination-numbers
query-pagination-previous
query-title
quote
read-more
rss
search
separator
shortcode
site-logo
site-tagline
site-title
social-link
social-links
spacer
table
tag-cloud
template-part
term-description
text-columns
verse
video
widget-group
Files:
archives.php
avatar.php
block.php
blocks-json.php
button.php
calendar.php
categories.php
comment-author-name.php
comment-content.php
comment-date.php
comment-edit-link.php
comment-reply-link.php
comment-template.php
comments-pagination-next.php
comments-pagination-numbers.php
comments-pagination-previous.php
comments-pagination.php
comments-title.php
comments.php
cover.php
file.php
footnotes.php
gallery.php
heading.php
home-link.php
image.php
index.php
latest-comments.php
latest-posts.php
legacy-widget.php
list.php
loginout.php
media-text.php
navigation-link.php
navigation-submenu.php
navigation.php
page-list-item.php
page-list.php
pattern.php
post-author-biography.php
post-author-name.php
post-author.php
post-comments-form.php
post-content.php
post-date.php
post-excerpt.php
post-featured-image.php
post-navigation-link.php
post-template.php
post-terms.php
post-title.php
query-no-results.php
query-pagination-next.php
query-pagination-numbers.php
query-pagination-previous.php
query-pagination.php
query-title.php
query.php
read-more.php
require-dynamic-blocks.php
require-static-blocks.php
rss.php
search.php
shortcode.php
site-logo.php
site-tagline.php
site-title.php
social-link.php
tag-cloud.php
template-part.php
term-description.php
widget-group.php
Create New File
Create
Edit File: categories.php
<?php /** * Server-side rendering of the `core/categories` block. * * @package WordPress */ /** * Renders the `core/categories` block on server. * * @since 5.0.0 * @since 6.7.0 Enable client-side rendering if enhancedPagination context is true. * * @param array $attributes The block attributes. * @param string $content Block default content. * @param WP_Block $block Block instance. * * @return string Returns the categories list/dropdown markup. */ function render_block_core_categories( $attributes, $content, $block ) { static $block_id = 0; ++$block_id; $taxonomy = get_taxonomy( $attributes['taxonomy'] ); $args = array( 'echo' => false, 'hierarchical' => ! empty( $attributes['showHierarchy'] ), 'orderby' => 'name', 'show_count' => ! empty( $attributes['showPostCounts'] ), 'taxonomy' => $attributes['taxonomy'], 'title_li' => '', 'hide_empty' => empty( $attributes['showEmpty'] ), ); if ( ! empty( $attributes['showOnlyTopLevel'] ) && $attributes['showOnlyTopLevel'] ) { $args['parent'] = 0; } if ( ! empty( $attributes['displayAsDropdown'] ) ) { $id = 'wp-block-categories-' . $block_id; $args['id'] = $id; $args['name'] = $taxonomy->query_var; $args['value_field'] = 'slug'; $args['show_option_none'] = sprintf( /* translators: %s: taxonomy's singular name */ __( 'Select %s' ), $taxonomy->labels->singular_name ); $show_label = empty( $attributes['showLabel'] ) ? ' screen-reader-text' : ''; $default_label = $taxonomy->label; $label_text = ! empty( $attributes['label'] ) ? wp_kses_post( $attributes['label'] ) : $default_label; $wrapper_markup = '<div %1$s><label class="wp-block-categories__label' . $show_label . '" for="' . esc_attr( $id ) . '">' . $label_text . '</label>%2$s</div>'; $items_markup = wp_dropdown_categories( $args ); $type = 'dropdown'; if ( ! is_admin() ) { // Inject the dropdown script immediately after the select dropdown. $items_markup = preg_replace( '#(?<=</select>)#', build_dropdown_script_block_core_categories( $id ), $items_markup, 1 ); } } else { $args['show_option_none'] = $taxonomy->labels->no_terms; $wrapper_markup = '<ul %1$s>%2$s</ul>'; $items_markup = wp_list_categories( $args ); $type = 'list'; if ( ! empty( $block->context['enhancedPagination'] ) ) { $p = new WP_HTML_Tag_Processor( $items_markup ); while ( $p->next_tag( 'a' ) ) { $p->set_attribute( 'data-wp-on--click', 'core/query::actions.navigate' ); } $items_markup = $p->get_updated_html(); } } $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => "wp-block-categories-{$type}" ) ); return sprintf( $wrapper_markup, $wrapper_attributes, $items_markup ); } /** * Generates the inline script for a categories dropdown field. * * @since 5.0.0 * * @param string $dropdown_id ID of the dropdown field. * * @return string Returns the dropdown onChange redirection script. */ function build_dropdown_script_block_core_categories( $dropdown_id ) { ob_start(); ?> <script> ( function() { var dropdown = document.getElementById( '<?php echo esc_js( $dropdown_id ); ?>' ); function onCatChange() { if ( dropdown.options[ dropdown.selectedIndex ].value !== -1 ) { location.href = "<?php echo esc_url( home_url() ); ?>/?" + dropdown.name + '=' + dropdown.options[ dropdown.selectedIndex ].value; } } dropdown.onchange = onCatChange; })(); </script> <?php return wp_get_inline_script_tag( str_replace( array( '<script>', '</script>' ), '', ob_get_clean() ) ); } /** * Registers the `core/categories` block on server. * * @since 5.0.0 */ function register_block_core_categories() { register_block_type_from_metadata( __DIR__ . '/categories', array( 'render_callback' => 'render_block_core_categories', ) ); } add_action( 'init', 'register_block_core_categories' );
Save Changes
Rename File
Rename