summaryrefslogtreecommitdiffstats
path: root/wp-includes/block-supports/generated-classname.php
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 07:56:49 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 07:56:49 +0000
commita415c29efee45520ae252d2aa28f1083a521cd7b (patch)
treef4ade4b6668ecc0765de7e1424f7c1427ad433ff /wp-includes/block-supports/generated-classname.php
parentInitial commit. (diff)
downloadwordpress-a415c29efee45520ae252d2aa28f1083a521cd7b.tar.xz
wordpress-a415c29efee45520ae252d2aa28f1083a521cd7b.zip
Adding upstream version 6.4.3+dfsg1.upstream/6.4.3+dfsg1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'wp-includes/block-supports/generated-classname.php')
-rw-r--r--wp-includes/block-supports/generated-classname.php71
1 files changed, 71 insertions, 0 deletions
diff --git a/wp-includes/block-supports/generated-classname.php b/wp-includes/block-supports/generated-classname.php
new file mode 100644
index 0000000..bbedd0e
--- /dev/null
+++ b/wp-includes/block-supports/generated-classname.php
@@ -0,0 +1,71 @@
+<?php
+/**
+ * Generated classname block support flag.
+ *
+ * @package WordPress
+ * @since 5.6.0
+ */
+
+/**
+ * Gets the generated classname from a given block name.
+ *
+ * @since 5.6.0
+ *
+ * @access private
+ *
+ * @param string $block_name Block Name.
+ * @return string Generated classname.
+ */
+function wp_get_block_default_classname( $block_name ) {
+ // Generated HTML classes for blocks follow the `wp-block-{name}` nomenclature.
+ // Blocks provided by WordPress drop the prefixes 'core/' or 'core-' (historically used in 'core-embed/').
+ $classname = 'wp-block-' . preg_replace(
+ '/^core-/',
+ '',
+ str_replace( '/', '-', $block_name )
+ );
+
+ /**
+ * Filters the default block className for server rendered blocks.
+ *
+ * @since 5.6.0
+ *
+ * @param string $class_name The current applied classname.
+ * @param string $block_name The block name.
+ */
+ $classname = apply_filters( 'block_default_classname', $classname, $block_name );
+
+ return $classname;
+}
+
+/**
+ * Adds the generated classnames to the output.
+ *
+ * @since 5.6.0
+ *
+ * @access private
+ *
+ * @param WP_Block_Type $block_type Block Type.
+ * @return array Block CSS classes and inline styles.
+ */
+function wp_apply_generated_classname_support( $block_type ) {
+ $attributes = array();
+ $has_generated_classname_support = block_has_support( $block_type, 'className', true );
+ if ( $has_generated_classname_support ) {
+ $block_classname = wp_get_block_default_classname( $block_type->name );
+
+ if ( $block_classname ) {
+ $attributes['class'] = $block_classname;
+ }
+ }
+
+ return $attributes;
+}
+
+// Register the block support.
+WP_Block_Supports::get_instance()->register(
+ 'generated-classname',
+ array(
+ 'apply' => 'wp_apply_generated_classname_support',
+ )
+);