080600
This commit is contained in:
@@ -1,118 +1,118 @@
|
||||
<?php
|
||||
/**
|
||||
* Server-side rendering of the `core/archives` block.
|
||||
*
|
||||
* @package WordPress
|
||||
*/
|
||||
|
||||
/**
|
||||
* Renders the `core/archives` block on server.
|
||||
*
|
||||
* @see WP_Widget_Archives
|
||||
*
|
||||
* @param array $attributes The block attributes.
|
||||
*
|
||||
* @return string Returns the post content with archives added.
|
||||
*/
|
||||
function render_block_core_archives( $attributes ) {
|
||||
$show_post_count = ! empty( $attributes['showPostCounts'] );
|
||||
$type = isset( $attributes['type'] ) ? $attributes['type'] : 'monthly';
|
||||
|
||||
$class = 'wp-block-archives-list';
|
||||
|
||||
if ( ! empty( $attributes['displayAsDropdown'] ) ) {
|
||||
|
||||
$class = 'wp-block-archives-dropdown';
|
||||
|
||||
$dropdown_id = wp_unique_id( 'wp-block-archives-' );
|
||||
$title = __( 'Archives' );
|
||||
|
||||
/** This filter is documented in wp-includes/widgets/class-wp-widget-archives.php */
|
||||
$dropdown_args = apply_filters(
|
||||
'widget_archives_dropdown_args',
|
||||
array(
|
||||
'type' => $type,
|
||||
'format' => 'option',
|
||||
'show_post_count' => $show_post_count,
|
||||
)
|
||||
);
|
||||
|
||||
$dropdown_args['echo'] = 0;
|
||||
|
||||
$archives = wp_get_archives( $dropdown_args );
|
||||
|
||||
$wrapper_attributes = get_block_wrapper_attributes( array( 'class' => $class ) );
|
||||
|
||||
switch ( $dropdown_args['type'] ) {
|
||||
case 'yearly':
|
||||
$label = __( 'Select Year' );
|
||||
break;
|
||||
case 'monthly':
|
||||
$label = __( 'Select Month' );
|
||||
break;
|
||||
case 'daily':
|
||||
$label = __( 'Select Day' );
|
||||
break;
|
||||
case 'weekly':
|
||||
$label = __( 'Select Week' );
|
||||
break;
|
||||
default:
|
||||
$label = __( 'Select Post' );
|
||||
break;
|
||||
}
|
||||
|
||||
$show_label = empty( $attributes['showLabel'] ) ? ' screen-reader-text' : '';
|
||||
|
||||
$block_content = '<label for="' . $dropdown_id . '" class="wp-block-archives__label' . $show_label . '">' . esc_html( $title ) . '</label>
|
||||
<select id="' . $dropdown_id . '" name="archive-dropdown" onchange="document.location.href=this.options[this.selectedIndex].value;">
|
||||
<option value="">' . esc_html( $label ) . '</option>' . $archives . '</select>';
|
||||
|
||||
return sprintf(
|
||||
'<div %1$s>%2$s</div>',
|
||||
$wrapper_attributes,
|
||||
$block_content
|
||||
);
|
||||
}
|
||||
|
||||
/** This filter is documented in wp-includes/widgets/class-wp-widget-archives.php */
|
||||
$archives_args = apply_filters(
|
||||
'widget_archives_args',
|
||||
array(
|
||||
'type' => $type,
|
||||
'show_post_count' => $show_post_count,
|
||||
)
|
||||
);
|
||||
|
||||
$archives_args['echo'] = 0;
|
||||
|
||||
$archives = wp_get_archives( $archives_args );
|
||||
|
||||
$wrapper_attributes = get_block_wrapper_attributes( array( 'class' => $class ) );
|
||||
|
||||
if ( empty( $archives ) ) {
|
||||
return sprintf(
|
||||
'<div %1$s>%2$s</div>',
|
||||
$wrapper_attributes,
|
||||
__( 'No archives to show.' )
|
||||
);
|
||||
}
|
||||
|
||||
return sprintf(
|
||||
'<ul %1$s>%2$s</ul>',
|
||||
$wrapper_attributes,
|
||||
$archives
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Register archives block.
|
||||
*/
|
||||
function register_block_core_archives() {
|
||||
register_block_type_from_metadata(
|
||||
__DIR__ . '/archives',
|
||||
array(
|
||||
'render_callback' => 'render_block_core_archives',
|
||||
)
|
||||
);
|
||||
}
|
||||
add_action( 'init', 'register_block_core_archives' );
|
||||
<?php
|
||||
/**
|
||||
* Server-side rendering of the `core/archives` block.
|
||||
*
|
||||
* @package WordPress
|
||||
*/
|
||||
|
||||
/**
|
||||
* Renders the `core/archives` block on server.
|
||||
*
|
||||
* @see WP_Widget_Archives
|
||||
*
|
||||
* @param array $attributes The block attributes.
|
||||
*
|
||||
* @return string Returns the post content with archives added.
|
||||
*/
|
||||
function render_block_core_archives( $attributes ) {
|
||||
$show_post_count = ! empty( $attributes['showPostCounts'] );
|
||||
$type = isset( $attributes['type'] ) ? $attributes['type'] : 'monthly';
|
||||
|
||||
$class = 'wp-block-archives-list';
|
||||
|
||||
if ( ! empty( $attributes['displayAsDropdown'] ) ) {
|
||||
|
||||
$class = 'wp-block-archives-dropdown';
|
||||
|
||||
$dropdown_id = wp_unique_id( 'wp-block-archives-' );
|
||||
$title = __( 'Archives' );
|
||||
|
||||
/** This filter is documented in wp-includes/widgets/class-wp-widget-archives.php */
|
||||
$dropdown_args = apply_filters(
|
||||
'widget_archives_dropdown_args',
|
||||
array(
|
||||
'type' => $type,
|
||||
'format' => 'option',
|
||||
'show_post_count' => $show_post_count,
|
||||
)
|
||||
);
|
||||
|
||||
$dropdown_args['echo'] = 0;
|
||||
|
||||
$archives = wp_get_archives( $dropdown_args );
|
||||
|
||||
$wrapper_attributes = get_block_wrapper_attributes( array( 'class' => $class ) );
|
||||
|
||||
switch ( $dropdown_args['type'] ) {
|
||||
case 'yearly':
|
||||
$label = __( 'Select Year' );
|
||||
break;
|
||||
case 'monthly':
|
||||
$label = __( 'Select Month' );
|
||||
break;
|
||||
case 'daily':
|
||||
$label = __( 'Select Day' );
|
||||
break;
|
||||
case 'weekly':
|
||||
$label = __( 'Select Week' );
|
||||
break;
|
||||
default:
|
||||
$label = __( 'Select Post' );
|
||||
break;
|
||||
}
|
||||
|
||||
$show_label = empty( $attributes['showLabel'] ) ? ' screen-reader-text' : '';
|
||||
|
||||
$block_content = '<label for="' . $dropdown_id . '" class="wp-block-archives__label' . $show_label . '">' . esc_html( $title ) . '</label>
|
||||
<select id="' . $dropdown_id . '" name="archive-dropdown" onchange="document.location.href=this.options[this.selectedIndex].value;">
|
||||
<option value="">' . esc_html( $label ) . '</option>' . $archives . '</select>';
|
||||
|
||||
return sprintf(
|
||||
'<div %1$s>%2$s</div>',
|
||||
$wrapper_attributes,
|
||||
$block_content
|
||||
);
|
||||
}
|
||||
|
||||
/** This filter is documented in wp-includes/widgets/class-wp-widget-archives.php */
|
||||
$archives_args = apply_filters(
|
||||
'widget_archives_args',
|
||||
array(
|
||||
'type' => $type,
|
||||
'show_post_count' => $show_post_count,
|
||||
)
|
||||
);
|
||||
|
||||
$archives_args['echo'] = 0;
|
||||
|
||||
$archives = wp_get_archives( $archives_args );
|
||||
|
||||
$wrapper_attributes = get_block_wrapper_attributes( array( 'class' => $class ) );
|
||||
|
||||
if ( empty( $archives ) ) {
|
||||
return sprintf(
|
||||
'<div %1$s>%2$s</div>',
|
||||
$wrapper_attributes,
|
||||
__( 'No archives to show.' )
|
||||
);
|
||||
}
|
||||
|
||||
return sprintf(
|
||||
'<ul %1$s>%2$s</ul>',
|
||||
$wrapper_attributes,
|
||||
$archives
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Register archives block.
|
||||
*/
|
||||
function register_block_core_archives() {
|
||||
register_block_type_from_metadata(
|
||||
__DIR__ . '/archives',
|
||||
array(
|
||||
'render_callback' => 'render_block_core_archives',
|
||||
)
|
||||
);
|
||||
}
|
||||
add_action( 'init', 'register_block_core_archives' );
|
||||
|
||||
@@ -1,56 +1,56 @@
|
||||
{
|
||||
"$schema": "https://schemas.wp.org/trunk/block.json",
|
||||
"apiVersion": 3,
|
||||
"name": "core/archives",
|
||||
"title": "Archives",
|
||||
"category": "widgets",
|
||||
"description": "Display a date archive of your posts.",
|
||||
"textdomain": "default",
|
||||
"attributes": {
|
||||
"displayAsDropdown": {
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
},
|
||||
"showLabel": {
|
||||
"type": "boolean",
|
||||
"default": true
|
||||
},
|
||||
"showPostCounts": {
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
},
|
||||
"type": {
|
||||
"type": "string",
|
||||
"default": "monthly"
|
||||
}
|
||||
},
|
||||
"supports": {
|
||||
"align": true,
|
||||
"html": false,
|
||||
"spacing": {
|
||||
"margin": true,
|
||||
"padding": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"margin": false,
|
||||
"padding": false
|
||||
}
|
||||
},
|
||||
"typography": {
|
||||
"fontSize": true,
|
||||
"lineHeight": true,
|
||||
"__experimentalFontFamily": true,
|
||||
"__experimentalFontWeight": true,
|
||||
"__experimentalFontStyle": true,
|
||||
"__experimentalTextTransform": true,
|
||||
"__experimentalTextDecoration": true,
|
||||
"__experimentalLetterSpacing": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"fontSize": true
|
||||
}
|
||||
},
|
||||
"interactivity": {
|
||||
"clientNavigation": true
|
||||
}
|
||||
},
|
||||
"editorStyle": "wp-block-archives-editor"
|
||||
}
|
||||
{
|
||||
"$schema": "https://schemas.wp.org/trunk/block.json",
|
||||
"apiVersion": 3,
|
||||
"name": "core/archives",
|
||||
"title": "Archives",
|
||||
"category": "widgets",
|
||||
"description": "Display a date archive of your posts.",
|
||||
"textdomain": "default",
|
||||
"attributes": {
|
||||
"displayAsDropdown": {
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
},
|
||||
"showLabel": {
|
||||
"type": "boolean",
|
||||
"default": true
|
||||
},
|
||||
"showPostCounts": {
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
},
|
||||
"type": {
|
||||
"type": "string",
|
||||
"default": "monthly"
|
||||
}
|
||||
},
|
||||
"supports": {
|
||||
"align": true,
|
||||
"html": false,
|
||||
"spacing": {
|
||||
"margin": true,
|
||||
"padding": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"margin": false,
|
||||
"padding": false
|
||||
}
|
||||
},
|
||||
"typography": {
|
||||
"fontSize": true,
|
||||
"lineHeight": true,
|
||||
"__experimentalFontFamily": true,
|
||||
"__experimentalFontWeight": true,
|
||||
"__experimentalFontStyle": true,
|
||||
"__experimentalTextTransform": true,
|
||||
"__experimentalTextDecoration": true,
|
||||
"__experimentalLetterSpacing": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"fontSize": true
|
||||
}
|
||||
},
|
||||
"interactivity": {
|
||||
"clientNavigation": true
|
||||
}
|
||||
},
|
||||
"editorStyle": "wp-block-archives-editor"
|
||||
}
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
ul.wp-block-archives{
|
||||
padding-right:2.5em;
|
||||
ul.wp-block-archives{
|
||||
padding-right:2.5em;
|
||||
}
|
||||
@@ -1,3 +1,3 @@
|
||||
ul.wp-block-archives{
|
||||
padding-left:2.5em;
|
||||
ul.wp-block-archives{
|
||||
padding-left:2.5em;
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
.wp-block-archives{
|
||||
box-sizing:border-box;
|
||||
}
|
||||
|
||||
.wp-block-archives-dropdown label{
|
||||
display:block;
|
||||
.wp-block-archives{
|
||||
box-sizing:border-box;
|
||||
}
|
||||
|
||||
.wp-block-archives-dropdown label{
|
||||
display:block;
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
.wp-block-archives{
|
||||
box-sizing:border-box;
|
||||
}
|
||||
|
||||
.wp-block-archives-dropdown label{
|
||||
display:block;
|
||||
.wp-block-archives{
|
||||
box-sizing:border-box;
|
||||
}
|
||||
|
||||
.wp-block-archives-dropdown label{
|
||||
display:block;
|
||||
}
|
||||
@@ -1,64 +1,64 @@
|
||||
{
|
||||
"$schema": "https://schemas.wp.org/trunk/block.json",
|
||||
"apiVersion": 3,
|
||||
"name": "core/audio",
|
||||
"title": "Audio",
|
||||
"category": "media",
|
||||
"description": "Embed a simple audio player.",
|
||||
"keywords": [ "music", "sound", "podcast", "recording" ],
|
||||
"textdomain": "default",
|
||||
"attributes": {
|
||||
"src": {
|
||||
"type": "string",
|
||||
"source": "attribute",
|
||||
"selector": "audio",
|
||||
"attribute": "src",
|
||||
"__experimentalRole": "content"
|
||||
},
|
||||
"caption": {
|
||||
"type": "rich-text",
|
||||
"source": "rich-text",
|
||||
"selector": "figcaption",
|
||||
"__experimentalRole": "content"
|
||||
},
|
||||
"id": {
|
||||
"type": "number",
|
||||
"__experimentalRole": "content"
|
||||
},
|
||||
"autoplay": {
|
||||
"type": "boolean",
|
||||
"source": "attribute",
|
||||
"selector": "audio",
|
||||
"attribute": "autoplay"
|
||||
},
|
||||
"loop": {
|
||||
"type": "boolean",
|
||||
"source": "attribute",
|
||||
"selector": "audio",
|
||||
"attribute": "loop"
|
||||
},
|
||||
"preload": {
|
||||
"type": "string",
|
||||
"source": "attribute",
|
||||
"selector": "audio",
|
||||
"attribute": "preload"
|
||||
}
|
||||
},
|
||||
"supports": {
|
||||
"anchor": true,
|
||||
"align": true,
|
||||
"spacing": {
|
||||
"margin": true,
|
||||
"padding": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"margin": false,
|
||||
"padding": false
|
||||
}
|
||||
},
|
||||
"interactivity": {
|
||||
"clientNavigation": true
|
||||
}
|
||||
},
|
||||
"editorStyle": "wp-block-audio-editor",
|
||||
"style": "wp-block-audio"
|
||||
}
|
||||
{
|
||||
"$schema": "https://schemas.wp.org/trunk/block.json",
|
||||
"apiVersion": 3,
|
||||
"name": "core/audio",
|
||||
"title": "Audio",
|
||||
"category": "media",
|
||||
"description": "Embed a simple audio player.",
|
||||
"keywords": [ "music", "sound", "podcast", "recording" ],
|
||||
"textdomain": "default",
|
||||
"attributes": {
|
||||
"src": {
|
||||
"type": "string",
|
||||
"source": "attribute",
|
||||
"selector": "audio",
|
||||
"attribute": "src",
|
||||
"__experimentalRole": "content"
|
||||
},
|
||||
"caption": {
|
||||
"type": "rich-text",
|
||||
"source": "rich-text",
|
||||
"selector": "figcaption",
|
||||
"__experimentalRole": "content"
|
||||
},
|
||||
"id": {
|
||||
"type": "number",
|
||||
"__experimentalRole": "content"
|
||||
},
|
||||
"autoplay": {
|
||||
"type": "boolean",
|
||||
"source": "attribute",
|
||||
"selector": "audio",
|
||||
"attribute": "autoplay"
|
||||
},
|
||||
"loop": {
|
||||
"type": "boolean",
|
||||
"source": "attribute",
|
||||
"selector": "audio",
|
||||
"attribute": "loop"
|
||||
},
|
||||
"preload": {
|
||||
"type": "string",
|
||||
"source": "attribute",
|
||||
"selector": "audio",
|
||||
"attribute": "preload"
|
||||
}
|
||||
},
|
||||
"supports": {
|
||||
"anchor": true,
|
||||
"align": true,
|
||||
"spacing": {
|
||||
"margin": true,
|
||||
"padding": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"margin": false,
|
||||
"padding": false
|
||||
}
|
||||
},
|
||||
"interactivity": {
|
||||
"clientNavigation": true
|
||||
}
|
||||
},
|
||||
"editorStyle": "wp-block-audio-editor",
|
||||
"style": "wp-block-audio"
|
||||
}
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
.wp-block-audio{
|
||||
margin-left:0;
|
||||
margin-right:0;
|
||||
position:relative;
|
||||
}
|
||||
.wp-block-audio.is-transient audio{
|
||||
opacity:.3;
|
||||
}
|
||||
.wp-block-audio .components-spinner{
|
||||
margin-right:-9px;
|
||||
margin-top:-9px;
|
||||
position:absolute;
|
||||
right:50%;
|
||||
top:50%;
|
||||
.wp-block-audio{
|
||||
margin-left:0;
|
||||
margin-right:0;
|
||||
position:relative;
|
||||
}
|
||||
.wp-block-audio.is-transient audio{
|
||||
opacity:.3;
|
||||
}
|
||||
.wp-block-audio .components-spinner{
|
||||
margin-right:-9px;
|
||||
margin-top:-9px;
|
||||
position:absolute;
|
||||
right:50%;
|
||||
top:50%;
|
||||
}
|
||||
@@ -1,15 +1,15 @@
|
||||
.wp-block-audio{
|
||||
margin-left:0;
|
||||
margin-right:0;
|
||||
position:relative;
|
||||
}
|
||||
.wp-block-audio.is-transient audio{
|
||||
opacity:.3;
|
||||
}
|
||||
.wp-block-audio .components-spinner{
|
||||
left:50%;
|
||||
margin-left:-9px;
|
||||
margin-top:-9px;
|
||||
position:absolute;
|
||||
top:50%;
|
||||
.wp-block-audio{
|
||||
margin-left:0;
|
||||
margin-right:0;
|
||||
position:relative;
|
||||
}
|
||||
.wp-block-audio.is-transient audio{
|
||||
opacity:.3;
|
||||
}
|
||||
.wp-block-audio .components-spinner{
|
||||
left:50%;
|
||||
margin-left:-9px;
|
||||
margin-top:-9px;
|
||||
position:absolute;
|
||||
top:50%;
|
||||
}
|
||||
@@ -1,11 +1,11 @@
|
||||
.wp-block-audio{
|
||||
box-sizing:border-box;
|
||||
}
|
||||
.wp-block-audio figcaption{
|
||||
margin-bottom:1em;
|
||||
margin-top:.5em;
|
||||
}
|
||||
.wp-block-audio audio{
|
||||
min-width:300px;
|
||||
width:100%;
|
||||
.wp-block-audio{
|
||||
box-sizing:border-box;
|
||||
}
|
||||
.wp-block-audio figcaption{
|
||||
margin-bottom:1em;
|
||||
margin-top:.5em;
|
||||
}
|
||||
.wp-block-audio audio{
|
||||
min-width:300px;
|
||||
width:100%;
|
||||
}
|
||||
@@ -1,11 +1,11 @@
|
||||
.wp-block-audio{
|
||||
box-sizing:border-box;
|
||||
}
|
||||
.wp-block-audio figcaption{
|
||||
margin-bottom:1em;
|
||||
margin-top:.5em;
|
||||
}
|
||||
.wp-block-audio audio{
|
||||
min-width:300px;
|
||||
width:100%;
|
||||
.wp-block-audio{
|
||||
box-sizing:border-box;
|
||||
}
|
||||
.wp-block-audio figcaption{
|
||||
margin-bottom:1em;
|
||||
margin-top:.5em;
|
||||
}
|
||||
.wp-block-audio audio{
|
||||
min-width:300px;
|
||||
width:100%;
|
||||
}
|
||||
@@ -1,12 +1,12 @@
|
||||
.wp-block-audio figcaption{
|
||||
color:#555;
|
||||
font-size:13px;
|
||||
text-align:center;
|
||||
}
|
||||
.is-dark-theme .wp-block-audio figcaption{
|
||||
color:#ffffffa6;
|
||||
}
|
||||
|
||||
.wp-block-audio{
|
||||
margin:0 0 1em;
|
||||
.wp-block-audio figcaption{
|
||||
color:#555;
|
||||
font-size:13px;
|
||||
text-align:center;
|
||||
}
|
||||
.is-dark-theme .wp-block-audio figcaption{
|
||||
color:#ffffffa6;
|
||||
}
|
||||
|
||||
.wp-block-audio{
|
||||
margin:0 0 1em;
|
||||
}
|
||||
@@ -1,12 +1,12 @@
|
||||
.wp-block-audio figcaption{
|
||||
color:#555;
|
||||
font-size:13px;
|
||||
text-align:center;
|
||||
}
|
||||
.is-dark-theme .wp-block-audio figcaption{
|
||||
color:#ffffffa6;
|
||||
}
|
||||
|
||||
.wp-block-audio{
|
||||
margin:0 0 1em;
|
||||
.wp-block-audio figcaption{
|
||||
color:#555;
|
||||
font-size:13px;
|
||||
text-align:center;
|
||||
}
|
||||
.is-dark-theme .wp-block-audio figcaption{
|
||||
color:#ffffffa6;
|
||||
}
|
||||
|
||||
.wp-block-audio{
|
||||
margin:0 0 1em;
|
||||
}
|
||||
@@ -1,150 +1,150 @@
|
||||
<?php
|
||||
/**
|
||||
* Server-side rendering of the `core/avatar` block.
|
||||
*
|
||||
* @package WordPress
|
||||
*/
|
||||
|
||||
/**
|
||||
* Renders the `core/avatar` block on the server.
|
||||
*
|
||||
* @param array $attributes Block attributes.
|
||||
* @param string $content Block default content.
|
||||
* @param WP_Block $block Block instance.
|
||||
* @return string Return the avatar.
|
||||
*/
|
||||
function render_block_core_avatar( $attributes, $content, $block ) {
|
||||
$size = isset( $attributes['size'] ) ? $attributes['size'] : 96;
|
||||
$wrapper_attributes = get_block_wrapper_attributes();
|
||||
$border_attributes = get_block_core_avatar_border_attributes( $attributes );
|
||||
|
||||
// Class gets passed through `esc_attr` via `get_avatar`.
|
||||
$image_classes = ! empty( $border_attributes['class'] )
|
||||
? "wp-block-avatar__image {$border_attributes['class']}"
|
||||
: 'wp-block-avatar__image';
|
||||
|
||||
// Unlike class, `get_avatar` doesn't filter the styles via `esc_attr`.
|
||||
// The style engine does pass the border styles through
|
||||
// `safecss_filter_attr` however.
|
||||
$image_styles = ! empty( $border_attributes['style'] )
|
||||
? sprintf( ' style="%s"', esc_attr( $border_attributes['style'] ) )
|
||||
: '';
|
||||
|
||||
if ( ! isset( $block->context['commentId'] ) ) {
|
||||
$author_id = isset( $attributes['userId'] ) ? $attributes['userId'] : get_post_field( 'post_author', $block->context['postId'] );
|
||||
$author_name = get_the_author_meta( 'display_name', $author_id );
|
||||
// translators: %s is the Author name.
|
||||
$alt = sprintf( __( '%s Avatar' ), $author_name );
|
||||
$avatar_block = get_avatar(
|
||||
$author_id,
|
||||
$size,
|
||||
'',
|
||||
$alt,
|
||||
array(
|
||||
'extra_attr' => $image_styles,
|
||||
'class' => $image_classes,
|
||||
)
|
||||
);
|
||||
if ( isset( $attributes['isLink'] ) && $attributes['isLink'] ) {
|
||||
$label = '';
|
||||
if ( '_blank' === $attributes['linkTarget'] ) {
|
||||
// translators: %s is the Author name.
|
||||
$label = 'aria-label="' . esc_attr( sprintf( __( '(%s author archive, opens in a new tab)' ), $author_name ) ) . '"';
|
||||
}
|
||||
// translators: %1$s: Author archive link. %2$s: Link target. %3$s Aria label. %4$s Avatar image.
|
||||
$avatar_block = sprintf( '<a href="%1$s" target="%2$s" %3$s class="wp-block-avatar__link">%4$s</a>', esc_url( get_author_posts_url( $author_id ) ), esc_attr( $attributes['linkTarget'] ), $label, $avatar_block );
|
||||
}
|
||||
return sprintf( '<div %1s>%2s</div>', $wrapper_attributes, $avatar_block );
|
||||
}
|
||||
$comment = get_comment( $block->context['commentId'] );
|
||||
if ( ! $comment ) {
|
||||
return '';
|
||||
}
|
||||
/* translators: %s is the Comment Author name */
|
||||
$alt = sprintf( __( '%s Avatar' ), $comment->comment_author );
|
||||
$avatar_block = get_avatar(
|
||||
$comment,
|
||||
$size,
|
||||
'',
|
||||
$alt,
|
||||
array(
|
||||
'extra_attr' => $image_styles,
|
||||
'class' => $image_classes,
|
||||
)
|
||||
);
|
||||
if ( isset( $attributes['isLink'] ) && $attributes['isLink'] && isset( $comment->comment_author_url ) && '' !== $comment->comment_author_url ) {
|
||||
$label = '';
|
||||
if ( '_blank' === $attributes['linkTarget'] ) {
|
||||
// translators: %s is the Comment Author name.
|
||||
$label = 'aria-label="' . esc_attr( sprintf( __( '(%s website link, opens in a new tab)' ), $comment->comment_author ) ) . '"';
|
||||
}
|
||||
// translators: %1$s: Comment Author website link. %2$s: Link target. %3$s Aria label. %4$s Avatar image.
|
||||
$avatar_block = sprintf( '<a href="%1$s" target="%2$s" %3$s class="wp-block-avatar__link">%4$s</a>', esc_url( $comment->comment_author_url ), esc_attr( $attributes['linkTarget'] ), $label, $avatar_block );
|
||||
}
|
||||
return sprintf( '<div %1s>%2s</div>', $wrapper_attributes, $avatar_block );
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates class names and styles to apply the border support styles for
|
||||
* the Avatar block.
|
||||
*
|
||||
* @param array $attributes The block attributes.
|
||||
* @return array The border-related classnames and styles for the block.
|
||||
*/
|
||||
function get_block_core_avatar_border_attributes( $attributes ) {
|
||||
$border_styles = array();
|
||||
$sides = array( 'top', 'right', 'bottom', 'left' );
|
||||
|
||||
// Border radius.
|
||||
if ( isset( $attributes['style']['border']['radius'] ) ) {
|
||||
$border_styles['radius'] = $attributes['style']['border']['radius'];
|
||||
}
|
||||
|
||||
// Border style.
|
||||
if ( isset( $attributes['style']['border']['style'] ) ) {
|
||||
$border_styles['style'] = $attributes['style']['border']['style'];
|
||||
}
|
||||
|
||||
// Border width.
|
||||
if ( isset( $attributes['style']['border']['width'] ) ) {
|
||||
$border_styles['width'] = $attributes['style']['border']['width'];
|
||||
}
|
||||
|
||||
// Border color.
|
||||
$preset_color = array_key_exists( 'borderColor', $attributes ) ? "var:preset|color|{$attributes['borderColor']}" : null;
|
||||
$custom_color = $attributes['style']['border']['color'] ?? null;
|
||||
$border_styles['color'] = $preset_color ? $preset_color : $custom_color;
|
||||
|
||||
// Individual border styles e.g. top, left etc.
|
||||
foreach ( $sides as $side ) {
|
||||
$border = $attributes['style']['border'][ $side ] ?? null;
|
||||
$border_styles[ $side ] = array(
|
||||
'color' => isset( $border['color'] ) ? $border['color'] : null,
|
||||
'style' => isset( $border['style'] ) ? $border['style'] : null,
|
||||
'width' => isset( $border['width'] ) ? $border['width'] : null,
|
||||
);
|
||||
}
|
||||
|
||||
$styles = wp_style_engine_get_styles( array( 'border' => $border_styles ) );
|
||||
$attributes = array();
|
||||
if ( ! empty( $styles['classnames'] ) ) {
|
||||
$attributes['class'] = $styles['classnames'];
|
||||
}
|
||||
if ( ! empty( $styles['css'] ) ) {
|
||||
$attributes['style'] = $styles['css'];
|
||||
}
|
||||
return $attributes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers the `core/avatar` block on the server.
|
||||
*/
|
||||
function register_block_core_avatar() {
|
||||
register_block_type_from_metadata(
|
||||
__DIR__ . '/avatar',
|
||||
array(
|
||||
'render_callback' => 'render_block_core_avatar',
|
||||
)
|
||||
);
|
||||
}
|
||||
add_action( 'init', 'register_block_core_avatar' );
|
||||
<?php
|
||||
/**
|
||||
* Server-side rendering of the `core/avatar` block.
|
||||
*
|
||||
* @package WordPress
|
||||
*/
|
||||
|
||||
/**
|
||||
* Renders the `core/avatar` block on the server.
|
||||
*
|
||||
* @param array $attributes Block attributes.
|
||||
* @param string $content Block default content.
|
||||
* @param WP_Block $block Block instance.
|
||||
* @return string Return the avatar.
|
||||
*/
|
||||
function render_block_core_avatar( $attributes, $content, $block ) {
|
||||
$size = isset( $attributes['size'] ) ? $attributes['size'] : 96;
|
||||
$wrapper_attributes = get_block_wrapper_attributes();
|
||||
$border_attributes = get_block_core_avatar_border_attributes( $attributes );
|
||||
|
||||
// Class gets passed through `esc_attr` via `get_avatar`.
|
||||
$image_classes = ! empty( $border_attributes['class'] )
|
||||
? "wp-block-avatar__image {$border_attributes['class']}"
|
||||
: 'wp-block-avatar__image';
|
||||
|
||||
// Unlike class, `get_avatar` doesn't filter the styles via `esc_attr`.
|
||||
// The style engine does pass the border styles through
|
||||
// `safecss_filter_attr` however.
|
||||
$image_styles = ! empty( $border_attributes['style'] )
|
||||
? sprintf( ' style="%s"', esc_attr( $border_attributes['style'] ) )
|
||||
: '';
|
||||
|
||||
if ( ! isset( $block->context['commentId'] ) ) {
|
||||
$author_id = isset( $attributes['userId'] ) ? $attributes['userId'] : get_post_field( 'post_author', $block->context['postId'] );
|
||||
$author_name = get_the_author_meta( 'display_name', $author_id );
|
||||
// translators: %s is the Author name.
|
||||
$alt = sprintf( __( '%s Avatar' ), $author_name );
|
||||
$avatar_block = get_avatar(
|
||||
$author_id,
|
||||
$size,
|
||||
'',
|
||||
$alt,
|
||||
array(
|
||||
'extra_attr' => $image_styles,
|
||||
'class' => $image_classes,
|
||||
)
|
||||
);
|
||||
if ( isset( $attributes['isLink'] ) && $attributes['isLink'] ) {
|
||||
$label = '';
|
||||
if ( '_blank' === $attributes['linkTarget'] ) {
|
||||
// translators: %s is the Author name.
|
||||
$label = 'aria-label="' . esc_attr( sprintf( __( '(%s author archive, opens in a new tab)' ), $author_name ) ) . '"';
|
||||
}
|
||||
// translators: %1$s: Author archive link. %2$s: Link target. %3$s Aria label. %4$s Avatar image.
|
||||
$avatar_block = sprintf( '<a href="%1$s" target="%2$s" %3$s class="wp-block-avatar__link">%4$s</a>', esc_url( get_author_posts_url( $author_id ) ), esc_attr( $attributes['linkTarget'] ), $label, $avatar_block );
|
||||
}
|
||||
return sprintf( '<div %1s>%2s</div>', $wrapper_attributes, $avatar_block );
|
||||
}
|
||||
$comment = get_comment( $block->context['commentId'] );
|
||||
if ( ! $comment ) {
|
||||
return '';
|
||||
}
|
||||
/* translators: %s is the Comment Author name */
|
||||
$alt = sprintf( __( '%s Avatar' ), $comment->comment_author );
|
||||
$avatar_block = get_avatar(
|
||||
$comment,
|
||||
$size,
|
||||
'',
|
||||
$alt,
|
||||
array(
|
||||
'extra_attr' => $image_styles,
|
||||
'class' => $image_classes,
|
||||
)
|
||||
);
|
||||
if ( isset( $attributes['isLink'] ) && $attributes['isLink'] && isset( $comment->comment_author_url ) && '' !== $comment->comment_author_url ) {
|
||||
$label = '';
|
||||
if ( '_blank' === $attributes['linkTarget'] ) {
|
||||
// translators: %s is the Comment Author name.
|
||||
$label = 'aria-label="' . esc_attr( sprintf( __( '(%s website link, opens in a new tab)' ), $comment->comment_author ) ) . '"';
|
||||
}
|
||||
// translators: %1$s: Comment Author website link. %2$s: Link target. %3$s Aria label. %4$s Avatar image.
|
||||
$avatar_block = sprintf( '<a href="%1$s" target="%2$s" %3$s class="wp-block-avatar__link">%4$s</a>', esc_url( $comment->comment_author_url ), esc_attr( $attributes['linkTarget'] ), $label, $avatar_block );
|
||||
}
|
||||
return sprintf( '<div %1s>%2s</div>', $wrapper_attributes, $avatar_block );
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates class names and styles to apply the border support styles for
|
||||
* the Avatar block.
|
||||
*
|
||||
* @param array $attributes The block attributes.
|
||||
* @return array The border-related classnames and styles for the block.
|
||||
*/
|
||||
function get_block_core_avatar_border_attributes( $attributes ) {
|
||||
$border_styles = array();
|
||||
$sides = array( 'top', 'right', 'bottom', 'left' );
|
||||
|
||||
// Border radius.
|
||||
if ( isset( $attributes['style']['border']['radius'] ) ) {
|
||||
$border_styles['radius'] = $attributes['style']['border']['radius'];
|
||||
}
|
||||
|
||||
// Border style.
|
||||
if ( isset( $attributes['style']['border']['style'] ) ) {
|
||||
$border_styles['style'] = $attributes['style']['border']['style'];
|
||||
}
|
||||
|
||||
// Border width.
|
||||
if ( isset( $attributes['style']['border']['width'] ) ) {
|
||||
$border_styles['width'] = $attributes['style']['border']['width'];
|
||||
}
|
||||
|
||||
// Border color.
|
||||
$preset_color = array_key_exists( 'borderColor', $attributes ) ? "var:preset|color|{$attributes['borderColor']}" : null;
|
||||
$custom_color = $attributes['style']['border']['color'] ?? null;
|
||||
$border_styles['color'] = $preset_color ? $preset_color : $custom_color;
|
||||
|
||||
// Individual border styles e.g. top, left etc.
|
||||
foreach ( $sides as $side ) {
|
||||
$border = $attributes['style']['border'][ $side ] ?? null;
|
||||
$border_styles[ $side ] = array(
|
||||
'color' => isset( $border['color'] ) ? $border['color'] : null,
|
||||
'style' => isset( $border['style'] ) ? $border['style'] : null,
|
||||
'width' => isset( $border['width'] ) ? $border['width'] : null,
|
||||
);
|
||||
}
|
||||
|
||||
$styles = wp_style_engine_get_styles( array( 'border' => $border_styles ) );
|
||||
$attributes = array();
|
||||
if ( ! empty( $styles['classnames'] ) ) {
|
||||
$attributes['class'] = $styles['classnames'];
|
||||
}
|
||||
if ( ! empty( $styles['css'] ) ) {
|
||||
$attributes['style'] = $styles['css'];
|
||||
}
|
||||
return $attributes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers the `core/avatar` block on the server.
|
||||
*/
|
||||
function register_block_core_avatar() {
|
||||
register_block_type_from_metadata(
|
||||
__DIR__ . '/avatar',
|
||||
array(
|
||||
'render_callback' => 'render_block_core_avatar',
|
||||
)
|
||||
);
|
||||
}
|
||||
add_action( 'init', 'register_block_core_avatar' );
|
||||
|
||||
@@ -1,63 +1,63 @@
|
||||
{
|
||||
"$schema": "https://schemas.wp.org/trunk/block.json",
|
||||
"apiVersion": 3,
|
||||
"name": "core/avatar",
|
||||
"title": "Avatar",
|
||||
"category": "theme",
|
||||
"description": "Add a user’s avatar.",
|
||||
"textdomain": "default",
|
||||
"attributes": {
|
||||
"userId": {
|
||||
"type": "number"
|
||||
},
|
||||
"size": {
|
||||
"type": "number",
|
||||
"default": 96
|
||||
},
|
||||
"isLink": {
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
},
|
||||
"linkTarget": {
|
||||
"type": "string",
|
||||
"default": "_self"
|
||||
}
|
||||
},
|
||||
"usesContext": [ "postType", "postId", "commentId" ],
|
||||
"supports": {
|
||||
"html": false,
|
||||
"align": true,
|
||||
"alignWide": false,
|
||||
"spacing": {
|
||||
"margin": true,
|
||||
"padding": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"margin": false,
|
||||
"padding": false
|
||||
}
|
||||
},
|
||||
"__experimentalBorder": {
|
||||
"__experimentalSkipSerialization": true,
|
||||
"radius": true,
|
||||
"width": true,
|
||||
"color": true,
|
||||
"style": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"radius": true
|
||||
}
|
||||
},
|
||||
"color": {
|
||||
"text": false,
|
||||
"background": false,
|
||||
"__experimentalDuotone": "img"
|
||||
},
|
||||
"interactivity": {
|
||||
"clientNavigation": true
|
||||
}
|
||||
},
|
||||
"selectors": {
|
||||
"border": ".wp-block-avatar img"
|
||||
},
|
||||
"editorStyle": "wp-block-avatar-editor",
|
||||
"style": "wp-block-avatar"
|
||||
}
|
||||
{
|
||||
"$schema": "https://schemas.wp.org/trunk/block.json",
|
||||
"apiVersion": 3,
|
||||
"name": "core/avatar",
|
||||
"title": "Avatar",
|
||||
"category": "theme",
|
||||
"description": "Add a user’s avatar.",
|
||||
"textdomain": "default",
|
||||
"attributes": {
|
||||
"userId": {
|
||||
"type": "number"
|
||||
},
|
||||
"size": {
|
||||
"type": "number",
|
||||
"default": 96
|
||||
},
|
||||
"isLink": {
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
},
|
||||
"linkTarget": {
|
||||
"type": "string",
|
||||
"default": "_self"
|
||||
}
|
||||
},
|
||||
"usesContext": [ "postType", "postId", "commentId" ],
|
||||
"supports": {
|
||||
"html": false,
|
||||
"align": true,
|
||||
"alignWide": false,
|
||||
"spacing": {
|
||||
"margin": true,
|
||||
"padding": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"margin": false,
|
||||
"padding": false
|
||||
}
|
||||
},
|
||||
"__experimentalBorder": {
|
||||
"__experimentalSkipSerialization": true,
|
||||
"radius": true,
|
||||
"width": true,
|
||||
"color": true,
|
||||
"style": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"radius": true
|
||||
}
|
||||
},
|
||||
"color": {
|
||||
"text": false,
|
||||
"background": false,
|
||||
"__experimentalDuotone": "img"
|
||||
},
|
||||
"interactivity": {
|
||||
"clientNavigation": true
|
||||
}
|
||||
},
|
||||
"selectors": {
|
||||
"border": ".wp-block-avatar img"
|
||||
},
|
||||
"editorStyle": "wp-block-avatar-editor",
|
||||
"style": "wp-block-avatar"
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
.wp-block-avatar__image img{
|
||||
width:100%;
|
||||
}
|
||||
|
||||
.wp-block-avatar.aligncenter .components-resizable-box__container{
|
||||
margin:0 auto;
|
||||
.wp-block-avatar__image img{
|
||||
width:100%;
|
||||
}
|
||||
|
||||
.wp-block-avatar.aligncenter .components-resizable-box__container{
|
||||
margin:0 auto;
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
.wp-block-avatar__image img{
|
||||
width:100%;
|
||||
}
|
||||
|
||||
.wp-block-avatar.aligncenter .components-resizable-box__container{
|
||||
margin:0 auto;
|
||||
.wp-block-avatar__image img{
|
||||
width:100%;
|
||||
}
|
||||
|
||||
.wp-block-avatar.aligncenter .components-resizable-box__container{
|
||||
margin:0 auto;
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
.wp-block-avatar{
|
||||
line-height:0;
|
||||
}
|
||||
.wp-block-avatar,.wp-block-avatar img{
|
||||
box-sizing:border-box;
|
||||
}
|
||||
.wp-block-avatar.aligncenter{
|
||||
text-align:center;
|
||||
.wp-block-avatar{
|
||||
line-height:0;
|
||||
}
|
||||
.wp-block-avatar,.wp-block-avatar img{
|
||||
box-sizing:border-box;
|
||||
}
|
||||
.wp-block-avatar.aligncenter{
|
||||
text-align:center;
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
.wp-block-avatar{
|
||||
line-height:0;
|
||||
}
|
||||
.wp-block-avatar,.wp-block-avatar img{
|
||||
box-sizing:border-box;
|
||||
}
|
||||
.wp-block-avatar.aligncenter{
|
||||
text-align:center;
|
||||
.wp-block-avatar{
|
||||
line-height:0;
|
||||
}
|
||||
.wp-block-avatar,.wp-block-avatar img{
|
||||
box-sizing:border-box;
|
||||
}
|
||||
.wp-block-avatar.aligncenter{
|
||||
text-align:center;
|
||||
}
|
||||
@@ -1,107 +1,107 @@
|
||||
<?php
|
||||
/**
|
||||
* Server-side rendering of the `core/block` block.
|
||||
*
|
||||
* @package WordPress
|
||||
*/
|
||||
|
||||
/**
|
||||
* Renders the `core/block` block on server.
|
||||
*
|
||||
* @param array $attributes The block attributes.
|
||||
*
|
||||
* @return string Rendered HTML of the referenced block.
|
||||
*/
|
||||
function render_block_core_block( $attributes ) {
|
||||
static $seen_refs = array();
|
||||
|
||||
if ( empty( $attributes['ref'] ) ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$reusable_block = get_post( $attributes['ref'] );
|
||||
if ( ! $reusable_block || 'wp_block' !== $reusable_block->post_type ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
if ( isset( $seen_refs[ $attributes['ref'] ] ) ) {
|
||||
// WP_DEBUG_DISPLAY must only be honored when WP_DEBUG. This precedent
|
||||
// is set in `wp_debug_mode()`.
|
||||
$is_debug = WP_DEBUG && WP_DEBUG_DISPLAY;
|
||||
|
||||
return $is_debug ?
|
||||
// translators: Visible only in the front end, this warning takes the place of a faulty block.
|
||||
__( '[block rendering halted]' ) :
|
||||
'';
|
||||
}
|
||||
|
||||
if ( 'publish' !== $reusable_block->post_status || ! empty( $reusable_block->post_password ) ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$seen_refs[ $attributes['ref'] ] = true;
|
||||
|
||||
// Handle embeds for reusable blocks.
|
||||
global $wp_embed;
|
||||
$content = $wp_embed->run_shortcode( $reusable_block->post_content );
|
||||
$content = $wp_embed->autoembed( $content );
|
||||
|
||||
// Back compat.
|
||||
// For blocks that have not been migrated in the editor, add some back compat
|
||||
// so that front-end rendering continues to work.
|
||||
|
||||
// This matches the `v2` deprecation. Removes the inner `values` property
|
||||
// from every item.
|
||||
if ( isset( $attributes['content'] ) ) {
|
||||
foreach ( $attributes['content'] as &$content_data ) {
|
||||
if ( isset( $content_data['values'] ) ) {
|
||||
$is_assoc_array = is_array( $content_data['values'] ) && ! wp_is_numeric_array( $content_data['values'] );
|
||||
|
||||
if ( $is_assoc_array ) {
|
||||
$content_data = $content_data['values'];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// This matches the `v1` deprecation. Rename `overrides` to `content`.
|
||||
if ( isset( $attributes['overrides'] ) && ! isset( $attributes['content'] ) ) {
|
||||
$attributes['content'] = $attributes['overrides'];
|
||||
}
|
||||
|
||||
/**
|
||||
* We set the `pattern/overrides` context through the `render_block_context`
|
||||
* filter so that it is available when a pattern's inner blocks are
|
||||
* rendering via do_blocks given it only receives the inner content.
|
||||
*/
|
||||
$has_pattern_overrides = isset( $attributes['content'] );
|
||||
if ( $has_pattern_overrides ) {
|
||||
$filter_block_context = static function ( $context ) use ( $attributes ) {
|
||||
$context['pattern/overrides'] = $attributes['content'];
|
||||
return $context;
|
||||
};
|
||||
add_filter( 'render_block_context', $filter_block_context, 1 );
|
||||
}
|
||||
|
||||
$content = do_blocks( $content );
|
||||
unset( $seen_refs[ $attributes['ref'] ] );
|
||||
|
||||
if ( $has_pattern_overrides ) {
|
||||
remove_filter( 'render_block_context', $filter_block_context, 1 );
|
||||
}
|
||||
|
||||
return $content;
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers the `core/block` block.
|
||||
*/
|
||||
function register_block_core_block() {
|
||||
register_block_type_from_metadata(
|
||||
__DIR__ . '/block',
|
||||
array(
|
||||
'render_callback' => 'render_block_core_block',
|
||||
)
|
||||
);
|
||||
}
|
||||
add_action( 'init', 'register_block_core_block' );
|
||||
<?php
|
||||
/**
|
||||
* Server-side rendering of the `core/block` block.
|
||||
*
|
||||
* @package WordPress
|
||||
*/
|
||||
|
||||
/**
|
||||
* Renders the `core/block` block on server.
|
||||
*
|
||||
* @param array $attributes The block attributes.
|
||||
*
|
||||
* @return string Rendered HTML of the referenced block.
|
||||
*/
|
||||
function render_block_core_block( $attributes ) {
|
||||
static $seen_refs = array();
|
||||
|
||||
if ( empty( $attributes['ref'] ) ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$reusable_block = get_post( $attributes['ref'] );
|
||||
if ( ! $reusable_block || 'wp_block' !== $reusable_block->post_type ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
if ( isset( $seen_refs[ $attributes['ref'] ] ) ) {
|
||||
// WP_DEBUG_DISPLAY must only be honored when WP_DEBUG. This precedent
|
||||
// is set in `wp_debug_mode()`.
|
||||
$is_debug = WP_DEBUG && WP_DEBUG_DISPLAY;
|
||||
|
||||
return $is_debug ?
|
||||
// translators: Visible only in the front end, this warning takes the place of a faulty block.
|
||||
__( '[block rendering halted]' ) :
|
||||
'';
|
||||
}
|
||||
|
||||
if ( 'publish' !== $reusable_block->post_status || ! empty( $reusable_block->post_password ) ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$seen_refs[ $attributes['ref'] ] = true;
|
||||
|
||||
// Handle embeds for reusable blocks.
|
||||
global $wp_embed;
|
||||
$content = $wp_embed->run_shortcode( $reusable_block->post_content );
|
||||
$content = $wp_embed->autoembed( $content );
|
||||
|
||||
// Back compat.
|
||||
// For blocks that have not been migrated in the editor, add some back compat
|
||||
// so that front-end rendering continues to work.
|
||||
|
||||
// This matches the `v2` deprecation. Removes the inner `values` property
|
||||
// from every item.
|
||||
if ( isset( $attributes['content'] ) ) {
|
||||
foreach ( $attributes['content'] as &$content_data ) {
|
||||
if ( isset( $content_data['values'] ) ) {
|
||||
$is_assoc_array = is_array( $content_data['values'] ) && ! wp_is_numeric_array( $content_data['values'] );
|
||||
|
||||
if ( $is_assoc_array ) {
|
||||
$content_data = $content_data['values'];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// This matches the `v1` deprecation. Rename `overrides` to `content`.
|
||||
if ( isset( $attributes['overrides'] ) && ! isset( $attributes['content'] ) ) {
|
||||
$attributes['content'] = $attributes['overrides'];
|
||||
}
|
||||
|
||||
/**
|
||||
* We set the `pattern/overrides` context through the `render_block_context`
|
||||
* filter so that it is available when a pattern's inner blocks are
|
||||
* rendering via do_blocks given it only receives the inner content.
|
||||
*/
|
||||
$has_pattern_overrides = isset( $attributes['content'] );
|
||||
if ( $has_pattern_overrides ) {
|
||||
$filter_block_context = static function ( $context ) use ( $attributes ) {
|
||||
$context['pattern/overrides'] = $attributes['content'];
|
||||
return $context;
|
||||
};
|
||||
add_filter( 'render_block_context', $filter_block_context, 1 );
|
||||
}
|
||||
|
||||
$content = do_blocks( $content );
|
||||
unset( $seen_refs[ $attributes['ref'] ] );
|
||||
|
||||
if ( $has_pattern_overrides ) {
|
||||
remove_filter( 'render_block_context', $filter_block_context, 1 );
|
||||
}
|
||||
|
||||
return $content;
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers the `core/block` block.
|
||||
*/
|
||||
function register_block_core_block() {
|
||||
register_block_type_from_metadata(
|
||||
__DIR__ . '/block',
|
||||
array(
|
||||
'render_callback' => 'render_block_core_block',
|
||||
)
|
||||
);
|
||||
}
|
||||
add_action( 'init', 'register_block_core_block' );
|
||||
|
||||
@@ -1,27 +1,27 @@
|
||||
{
|
||||
"$schema": "https://schemas.wp.org/trunk/block.json",
|
||||
"apiVersion": 3,
|
||||
"name": "core/block",
|
||||
"title": "Pattern",
|
||||
"category": "reusable",
|
||||
"description": "Reuse this design across your site.",
|
||||
"keywords": [ "reusable" ],
|
||||
"textdomain": "default",
|
||||
"attributes": {
|
||||
"ref": {
|
||||
"type": "number"
|
||||
},
|
||||
"content": {
|
||||
"type": "object"
|
||||
}
|
||||
},
|
||||
"supports": {
|
||||
"customClassName": false,
|
||||
"html": false,
|
||||
"inserter": false,
|
||||
"renaming": false,
|
||||
"interactivity": {
|
||||
"clientNavigation": true
|
||||
}
|
||||
}
|
||||
}
|
||||
{
|
||||
"$schema": "https://schemas.wp.org/trunk/block.json",
|
||||
"apiVersion": 3,
|
||||
"name": "core/block",
|
||||
"title": "Pattern",
|
||||
"category": "reusable",
|
||||
"description": "Reuse this design across your site.",
|
||||
"keywords": [ "reusable" ],
|
||||
"textdomain": "default",
|
||||
"attributes": {
|
||||
"ref": {
|
||||
"type": "number"
|
||||
},
|
||||
"content": {
|
||||
"type": "object"
|
||||
}
|
||||
},
|
||||
"supports": {
|
||||
"customClassName": false,
|
||||
"html": false,
|
||||
"inserter": false,
|
||||
"renaming": false,
|
||||
"interactivity": {
|
||||
"clientNavigation": true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
.edit-post-visual-editor .block-library-block__reusable-block-container .is-root-container{
|
||||
padding-left:0;
|
||||
padding-right:0;
|
||||
}
|
||||
.edit-post-visual-editor .block-library-block__reusable-block-container .block-editor-writing-flow{
|
||||
display:block;
|
||||
}
|
||||
.edit-post-visual-editor .block-library-block__reusable-block-container .components-disabled .block-list-appender{
|
||||
display:none;
|
||||
}
|
||||
|
||||
.edit-post-visual-editor .block-editor-block-list__block:not(.remove-outline).is-reusable.is-highlighted,.edit-post-visual-editor .block-editor-block-list__block:not(.remove-outline).is-reusable.is-selected{
|
||||
box-shadow:inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-block-synced-color);
|
||||
}
|
||||
.edit-post-visual-editor .block-editor-block-list__block:not(.remove-outline).is-reusable.block-editor-block-list__block:not([contenteditable]):focus:after{
|
||||
box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-block-synced-color);
|
||||
}
|
||||
.is-dark-theme .edit-post-visual-editor .block-editor-block-list__block:not(.remove-outline).is-reusable.block-editor-block-list__block:not([contenteditable]):focus:after{
|
||||
box-shadow:0 0 0 var(--wp-admin-border-width-focus) #fff;
|
||||
.edit-post-visual-editor .block-library-block__reusable-block-container .is-root-container{
|
||||
padding-left:0;
|
||||
padding-right:0;
|
||||
}
|
||||
.edit-post-visual-editor .block-library-block__reusable-block-container .block-editor-writing-flow{
|
||||
display:block;
|
||||
}
|
||||
.edit-post-visual-editor .block-library-block__reusable-block-container .components-disabled .block-list-appender{
|
||||
display:none;
|
||||
}
|
||||
|
||||
.edit-post-visual-editor .block-editor-block-list__block:not(.remove-outline).is-reusable.is-highlighted,.edit-post-visual-editor .block-editor-block-list__block:not(.remove-outline).is-reusable.is-selected{
|
||||
box-shadow:inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-block-synced-color);
|
||||
}
|
||||
.edit-post-visual-editor .block-editor-block-list__block:not(.remove-outline).is-reusable.block-editor-block-list__block:not([contenteditable]):focus:after{
|
||||
box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-block-synced-color);
|
||||
}
|
||||
.is-dark-theme .edit-post-visual-editor .block-editor-block-list__block:not(.remove-outline).is-reusable.block-editor-block-list__block:not([contenteditable]):focus:after{
|
||||
box-shadow:0 0 0 var(--wp-admin-border-width-focus) #fff;
|
||||
}
|
||||
@@ -1,20 +1,20 @@
|
||||
.edit-post-visual-editor .block-library-block__reusable-block-container .is-root-container{
|
||||
padding-left:0;
|
||||
padding-right:0;
|
||||
}
|
||||
.edit-post-visual-editor .block-library-block__reusable-block-container .block-editor-writing-flow{
|
||||
display:block;
|
||||
}
|
||||
.edit-post-visual-editor .block-library-block__reusable-block-container .components-disabled .block-list-appender{
|
||||
display:none;
|
||||
}
|
||||
|
||||
.edit-post-visual-editor .block-editor-block-list__block:not(.remove-outline).is-reusable.is-highlighted,.edit-post-visual-editor .block-editor-block-list__block:not(.remove-outline).is-reusable.is-selected{
|
||||
box-shadow:inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-block-synced-color);
|
||||
}
|
||||
.edit-post-visual-editor .block-editor-block-list__block:not(.remove-outline).is-reusable.block-editor-block-list__block:not([contenteditable]):focus:after{
|
||||
box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-block-synced-color);
|
||||
}
|
||||
.is-dark-theme .edit-post-visual-editor .block-editor-block-list__block:not(.remove-outline).is-reusable.block-editor-block-list__block:not([contenteditable]):focus:after{
|
||||
box-shadow:0 0 0 var(--wp-admin-border-width-focus) #fff;
|
||||
.edit-post-visual-editor .block-library-block__reusable-block-container .is-root-container{
|
||||
padding-left:0;
|
||||
padding-right:0;
|
||||
}
|
||||
.edit-post-visual-editor .block-library-block__reusable-block-container .block-editor-writing-flow{
|
||||
display:block;
|
||||
}
|
||||
.edit-post-visual-editor .block-library-block__reusable-block-container .components-disabled .block-list-appender{
|
||||
display:none;
|
||||
}
|
||||
|
||||
.edit-post-visual-editor .block-editor-block-list__block:not(.remove-outline).is-reusable.is-highlighted,.edit-post-visual-editor .block-editor-block-list__block:not(.remove-outline).is-reusable.is-selected{
|
||||
box-shadow:inset 0 0 0 var(--wp-admin-border-width-focus) var(--wp-block-synced-color);
|
||||
}
|
||||
.edit-post-visual-editor .block-editor-block-list__block:not(.remove-outline).is-reusable.block-editor-block-list__block:not([contenteditable]):focus:after{
|
||||
box-shadow:0 0 0 var(--wp-admin-border-width-focus) var(--wp-block-synced-color);
|
||||
}
|
||||
.is-dark-theme .edit-post-visual-editor .block-editor-block-list__block:not(.remove-outline).is-reusable.block-editor-block-list__block:not([contenteditable]):focus:after{
|
||||
box-shadow:0 0 0 var(--wp-admin-border-width-focus) #fff;
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,134 +1,134 @@
|
||||
{
|
||||
"$schema": "https://schemas.wp.org/trunk/block.json",
|
||||
"apiVersion": 3,
|
||||
"name": "core/button",
|
||||
"title": "Button",
|
||||
"category": "design",
|
||||
"parent": [ "core/buttons" ],
|
||||
"description": "Prompt visitors to take action with a button-style link.",
|
||||
"keywords": [ "link" ],
|
||||
"textdomain": "default",
|
||||
"attributes": {
|
||||
"tagName": {
|
||||
"type": "string",
|
||||
"enum": [ "a", "button" ],
|
||||
"default": "a"
|
||||
},
|
||||
"type": {
|
||||
"type": "string",
|
||||
"default": "button"
|
||||
},
|
||||
"textAlign": {
|
||||
"type": "string"
|
||||
},
|
||||
"url": {
|
||||
"type": "string",
|
||||
"source": "attribute",
|
||||
"selector": "a",
|
||||
"attribute": "href",
|
||||
"__experimentalRole": "content"
|
||||
},
|
||||
"title": {
|
||||
"type": "string",
|
||||
"source": "attribute",
|
||||
"selector": "a,button",
|
||||
"attribute": "title",
|
||||
"__experimentalRole": "content"
|
||||
},
|
||||
"text": {
|
||||
"type": "rich-text",
|
||||
"source": "rich-text",
|
||||
"selector": "a,button",
|
||||
"__experimentalRole": "content"
|
||||
},
|
||||
"linkTarget": {
|
||||
"type": "string",
|
||||
"source": "attribute",
|
||||
"selector": "a",
|
||||
"attribute": "target",
|
||||
"__experimentalRole": "content"
|
||||
},
|
||||
"rel": {
|
||||
"type": "string",
|
||||
"source": "attribute",
|
||||
"selector": "a",
|
||||
"attribute": "rel",
|
||||
"__experimentalRole": "content"
|
||||
},
|
||||
"placeholder": {
|
||||
"type": "string"
|
||||
},
|
||||
"backgroundColor": {
|
||||
"type": "string"
|
||||
},
|
||||
"textColor": {
|
||||
"type": "string"
|
||||
},
|
||||
"gradient": {
|
||||
"type": "string"
|
||||
},
|
||||
"width": {
|
||||
"type": "number"
|
||||
}
|
||||
},
|
||||
"supports": {
|
||||
"anchor": true,
|
||||
"align": false,
|
||||
"alignWide": false,
|
||||
"color": {
|
||||
"__experimentalSkipSerialization": true,
|
||||
"gradients": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"background": true,
|
||||
"text": true
|
||||
}
|
||||
},
|
||||
"typography": {
|
||||
"fontSize": true,
|
||||
"lineHeight": true,
|
||||
"__experimentalFontFamily": true,
|
||||
"__experimentalFontWeight": true,
|
||||
"__experimentalFontStyle": true,
|
||||
"__experimentalTextTransform": true,
|
||||
"__experimentalTextDecoration": true,
|
||||
"__experimentalLetterSpacing": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"fontSize": true
|
||||
}
|
||||
},
|
||||
"reusable": false,
|
||||
"shadow": {
|
||||
"__experimentalSkipSerialization": true
|
||||
},
|
||||
"spacing": {
|
||||
"__experimentalSkipSerialization": true,
|
||||
"padding": [ "horizontal", "vertical" ],
|
||||
"__experimentalDefaultControls": {
|
||||
"padding": true
|
||||
}
|
||||
},
|
||||
"__experimentalBorder": {
|
||||
"color": true,
|
||||
"radius": true,
|
||||
"style": true,
|
||||
"width": true,
|
||||
"__experimentalSkipSerialization": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"color": true,
|
||||
"radius": true,
|
||||
"style": true,
|
||||
"width": true
|
||||
}
|
||||
},
|
||||
"__experimentalSelector": ".wp-block-button .wp-block-button__link",
|
||||
"interactivity": {
|
||||
"clientNavigation": true
|
||||
}
|
||||
},
|
||||
"styles": [
|
||||
{ "name": "fill", "label": "Fill", "isDefault": true },
|
||||
{ "name": "outline", "label": "Outline" }
|
||||
],
|
||||
"editorStyle": "wp-block-button-editor",
|
||||
"style": "wp-block-button"
|
||||
}
|
||||
{
|
||||
"$schema": "https://schemas.wp.org/trunk/block.json",
|
||||
"apiVersion": 3,
|
||||
"name": "core/button",
|
||||
"title": "Button",
|
||||
"category": "design",
|
||||
"parent": [ "core/buttons" ],
|
||||
"description": "Prompt visitors to take action with a button-style link.",
|
||||
"keywords": [ "link" ],
|
||||
"textdomain": "default",
|
||||
"attributes": {
|
||||
"tagName": {
|
||||
"type": "string",
|
||||
"enum": [ "a", "button" ],
|
||||
"default": "a"
|
||||
},
|
||||
"type": {
|
||||
"type": "string",
|
||||
"default": "button"
|
||||
},
|
||||
"textAlign": {
|
||||
"type": "string"
|
||||
},
|
||||
"url": {
|
||||
"type": "string",
|
||||
"source": "attribute",
|
||||
"selector": "a",
|
||||
"attribute": "href",
|
||||
"__experimentalRole": "content"
|
||||
},
|
||||
"title": {
|
||||
"type": "string",
|
||||
"source": "attribute",
|
||||
"selector": "a,button",
|
||||
"attribute": "title",
|
||||
"__experimentalRole": "content"
|
||||
},
|
||||
"text": {
|
||||
"type": "rich-text",
|
||||
"source": "rich-text",
|
||||
"selector": "a,button",
|
||||
"__experimentalRole": "content"
|
||||
},
|
||||
"linkTarget": {
|
||||
"type": "string",
|
||||
"source": "attribute",
|
||||
"selector": "a",
|
||||
"attribute": "target",
|
||||
"__experimentalRole": "content"
|
||||
},
|
||||
"rel": {
|
||||
"type": "string",
|
||||
"source": "attribute",
|
||||
"selector": "a",
|
||||
"attribute": "rel",
|
||||
"__experimentalRole": "content"
|
||||
},
|
||||
"placeholder": {
|
||||
"type": "string"
|
||||
},
|
||||
"backgroundColor": {
|
||||
"type": "string"
|
||||
},
|
||||
"textColor": {
|
||||
"type": "string"
|
||||
},
|
||||
"gradient": {
|
||||
"type": "string"
|
||||
},
|
||||
"width": {
|
||||
"type": "number"
|
||||
}
|
||||
},
|
||||
"supports": {
|
||||
"anchor": true,
|
||||
"align": false,
|
||||
"alignWide": false,
|
||||
"color": {
|
||||
"__experimentalSkipSerialization": true,
|
||||
"gradients": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"background": true,
|
||||
"text": true
|
||||
}
|
||||
},
|
||||
"typography": {
|
||||
"fontSize": true,
|
||||
"lineHeight": true,
|
||||
"__experimentalFontFamily": true,
|
||||
"__experimentalFontWeight": true,
|
||||
"__experimentalFontStyle": true,
|
||||
"__experimentalTextTransform": true,
|
||||
"__experimentalTextDecoration": true,
|
||||
"__experimentalLetterSpacing": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"fontSize": true
|
||||
}
|
||||
},
|
||||
"reusable": false,
|
||||
"shadow": {
|
||||
"__experimentalSkipSerialization": true
|
||||
},
|
||||
"spacing": {
|
||||
"__experimentalSkipSerialization": true,
|
||||
"padding": [ "horizontal", "vertical" ],
|
||||
"__experimentalDefaultControls": {
|
||||
"padding": true
|
||||
}
|
||||
},
|
||||
"__experimentalBorder": {
|
||||
"color": true,
|
||||
"radius": true,
|
||||
"style": true,
|
||||
"width": true,
|
||||
"__experimentalSkipSerialization": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"color": true,
|
||||
"radius": true,
|
||||
"style": true,
|
||||
"width": true
|
||||
}
|
||||
},
|
||||
"__experimentalSelector": ".wp-block-button .wp-block-button__link",
|
||||
"interactivity": {
|
||||
"clientNavigation": true
|
||||
}
|
||||
},
|
||||
"styles": [
|
||||
{ "name": "fill", "label": "Fill", "isDefault": true },
|
||||
{ "name": "outline", "label": "Outline" }
|
||||
],
|
||||
"editorStyle": "wp-block-button-editor",
|
||||
"style": "wp-block-button"
|
||||
}
|
||||
|
||||
@@ -1,61 +1,61 @@
|
||||
.wp-block[data-align=center]>.wp-block-button{
|
||||
margin-left:auto;
|
||||
margin-right:auto;
|
||||
text-align:center;
|
||||
}
|
||||
|
||||
.wp-block[data-align=right]>.wp-block-button{
|
||||
text-align:right;
|
||||
}
|
||||
|
||||
.wp-block-button{
|
||||
cursor:text;
|
||||
position:relative;
|
||||
}
|
||||
.wp-block-button:focus{
|
||||
box-shadow:0 0 0 1px #fff, 0 0 0 3px var(--wp-admin-theme-color);
|
||||
outline:2px solid #0000;
|
||||
outline-offset:-2px;
|
||||
}
|
||||
.wp-block-button[data-rich-text-placeholder]:after{
|
||||
opacity:.8;
|
||||
}
|
||||
|
||||
div[data-type="core/button"]{
|
||||
display:table;
|
||||
}
|
||||
|
||||
.editor-styles-wrapper .wp-block-button[style*=text-decoration] .wp-block-button__link{
|
||||
text-decoration:inherit;
|
||||
}
|
||||
|
||||
.editor-styles-wrapper .wp-block-button .wp-block-button__link:where(.has-border-color){
|
||||
border-width:initial;
|
||||
}
|
||||
.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-top-color]){
|
||||
border-top-width:medium;
|
||||
}
|
||||
.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-right-color]){
|
||||
border-left-width:medium;
|
||||
}
|
||||
.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-bottom-color]){
|
||||
border-bottom-width:medium;
|
||||
}
|
||||
.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-left-color]){
|
||||
border-right-width:medium;
|
||||
}
|
||||
.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-style]){
|
||||
border-width:initial;
|
||||
}
|
||||
.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-top-style]){
|
||||
border-top-width:medium;
|
||||
}
|
||||
.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-right-style]){
|
||||
border-left-width:medium;
|
||||
}
|
||||
.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-bottom-style]){
|
||||
border-bottom-width:medium;
|
||||
}
|
||||
.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-left-style]){
|
||||
border-right-width:medium;
|
||||
.wp-block[data-align=center]>.wp-block-button{
|
||||
margin-left:auto;
|
||||
margin-right:auto;
|
||||
text-align:center;
|
||||
}
|
||||
|
||||
.wp-block[data-align=right]>.wp-block-button{
|
||||
text-align:right;
|
||||
}
|
||||
|
||||
.wp-block-button{
|
||||
cursor:text;
|
||||
position:relative;
|
||||
}
|
||||
.wp-block-button:focus{
|
||||
box-shadow:0 0 0 1px #fff, 0 0 0 3px var(--wp-admin-theme-color);
|
||||
outline:2px solid #0000;
|
||||
outline-offset:-2px;
|
||||
}
|
||||
.wp-block-button[data-rich-text-placeholder]:after{
|
||||
opacity:.8;
|
||||
}
|
||||
|
||||
div[data-type="core/button"]{
|
||||
display:table;
|
||||
}
|
||||
|
||||
.editor-styles-wrapper .wp-block-button[style*=text-decoration] .wp-block-button__link{
|
||||
text-decoration:inherit;
|
||||
}
|
||||
|
||||
.editor-styles-wrapper .wp-block-button .wp-block-button__link:where(.has-border-color){
|
||||
border-width:initial;
|
||||
}
|
||||
.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-top-color]){
|
||||
border-top-width:medium;
|
||||
}
|
||||
.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-right-color]){
|
||||
border-left-width:medium;
|
||||
}
|
||||
.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-bottom-color]){
|
||||
border-bottom-width:medium;
|
||||
}
|
||||
.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-left-color]){
|
||||
border-right-width:medium;
|
||||
}
|
||||
.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-style]){
|
||||
border-width:initial;
|
||||
}
|
||||
.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-top-style]){
|
||||
border-top-width:medium;
|
||||
}
|
||||
.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-right-style]){
|
||||
border-left-width:medium;
|
||||
}
|
||||
.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-bottom-style]){
|
||||
border-bottom-width:medium;
|
||||
}
|
||||
.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-left-style]){
|
||||
border-right-width:medium;
|
||||
}
|
||||
@@ -1,61 +1,61 @@
|
||||
.wp-block[data-align=center]>.wp-block-button{
|
||||
margin-left:auto;
|
||||
margin-right:auto;
|
||||
text-align:center;
|
||||
}
|
||||
|
||||
.wp-block[data-align=right]>.wp-block-button{
|
||||
text-align:right;
|
||||
}
|
||||
|
||||
.wp-block-button{
|
||||
cursor:text;
|
||||
position:relative;
|
||||
}
|
||||
.wp-block-button:focus{
|
||||
box-shadow:0 0 0 1px #fff, 0 0 0 3px var(--wp-admin-theme-color);
|
||||
outline:2px solid #0000;
|
||||
outline-offset:-2px;
|
||||
}
|
||||
.wp-block-button[data-rich-text-placeholder]:after{
|
||||
opacity:.8;
|
||||
}
|
||||
|
||||
div[data-type="core/button"]{
|
||||
display:table;
|
||||
}
|
||||
|
||||
.editor-styles-wrapper .wp-block-button[style*=text-decoration] .wp-block-button__link{
|
||||
text-decoration:inherit;
|
||||
}
|
||||
|
||||
.editor-styles-wrapper .wp-block-button .wp-block-button__link:where(.has-border-color){
|
||||
border-width:initial;
|
||||
}
|
||||
.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-top-color]){
|
||||
border-top-width:medium;
|
||||
}
|
||||
.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-right-color]){
|
||||
border-right-width:medium;
|
||||
}
|
||||
.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-bottom-color]){
|
||||
border-bottom-width:medium;
|
||||
}
|
||||
.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-left-color]){
|
||||
border-left-width:medium;
|
||||
}
|
||||
.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-style]){
|
||||
border-width:initial;
|
||||
}
|
||||
.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-top-style]){
|
||||
border-top-width:medium;
|
||||
}
|
||||
.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-right-style]){
|
||||
border-right-width:medium;
|
||||
}
|
||||
.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-bottom-style]){
|
||||
border-bottom-width:medium;
|
||||
}
|
||||
.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-left-style]){
|
||||
border-left-width:medium;
|
||||
.wp-block[data-align=center]>.wp-block-button{
|
||||
margin-left:auto;
|
||||
margin-right:auto;
|
||||
text-align:center;
|
||||
}
|
||||
|
||||
.wp-block[data-align=right]>.wp-block-button{
|
||||
text-align:right;
|
||||
}
|
||||
|
||||
.wp-block-button{
|
||||
cursor:text;
|
||||
position:relative;
|
||||
}
|
||||
.wp-block-button:focus{
|
||||
box-shadow:0 0 0 1px #fff, 0 0 0 3px var(--wp-admin-theme-color);
|
||||
outline:2px solid #0000;
|
||||
outline-offset:-2px;
|
||||
}
|
||||
.wp-block-button[data-rich-text-placeholder]:after{
|
||||
opacity:.8;
|
||||
}
|
||||
|
||||
div[data-type="core/button"]{
|
||||
display:table;
|
||||
}
|
||||
|
||||
.editor-styles-wrapper .wp-block-button[style*=text-decoration] .wp-block-button__link{
|
||||
text-decoration:inherit;
|
||||
}
|
||||
|
||||
.editor-styles-wrapper .wp-block-button .wp-block-button__link:where(.has-border-color){
|
||||
border-width:initial;
|
||||
}
|
||||
.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-top-color]){
|
||||
border-top-width:medium;
|
||||
}
|
||||
.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-right-color]){
|
||||
border-right-width:medium;
|
||||
}
|
||||
.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-bottom-color]){
|
||||
border-bottom-width:medium;
|
||||
}
|
||||
.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-left-color]){
|
||||
border-left-width:medium;
|
||||
}
|
||||
.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-style]){
|
||||
border-width:initial;
|
||||
}
|
||||
.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-top-style]){
|
||||
border-top-width:medium;
|
||||
}
|
||||
.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-right-style]){
|
||||
border-right-width:medium;
|
||||
}
|
||||
.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-bottom-style]){
|
||||
border-bottom-width:medium;
|
||||
}
|
||||
.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-left-style]){
|
||||
border-left-width:medium;
|
||||
}
|
||||
@@ -1,2 +1,2 @@
|
||||
.wp-block[data-align=center]>.wp-block-button{margin-left:auto;margin-right:auto;text-align:center}.wp-block[data-align=right]>.wp-block-button{
|
||||
.wp-block[data-align=center]>.wp-block-button{margin-left:auto;margin-right:auto;text-align:center}.wp-block[data-align=right]>.wp-block-button{
|
||||
/*!rtl:ignore*/text-align:right}.wp-block-button{cursor:text;position:relative}.wp-block-button:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px var(--wp-admin-theme-color);outline:2px solid #0000;outline-offset:-2px}.wp-block-button[data-rich-text-placeholder]:after{opacity:.8}div[data-type="core/button"]{display:table}.editor-styles-wrapper .wp-block-button[style*=text-decoration] .wp-block-button__link{text-decoration:inherit}.editor-styles-wrapper .wp-block-button .wp-block-button__link:where(.has-border-color){border-width:initial}.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-top-color]){border-top-width:medium}.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-right-color]){border-right-width:medium}.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-bottom-color]){border-bottom-width:medium}.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-left-color]){border-left-width:medium}.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-style]){border-width:initial}.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-top-style]){border-top-width:medium}.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-right-style]){border-right-width:medium}.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-bottom-style]){border-bottom-width:medium}.editor-styles-wrapper .wp-block-button .wp-block-button__link:where([style*=border-left-style]){border-left-width:medium}
|
||||
@@ -1,110 +1,110 @@
|
||||
.wp-block-button__link{
|
||||
box-sizing:border-box;
|
||||
cursor:pointer;
|
||||
display:inline-block;
|
||||
text-align:center;
|
||||
word-break:break-word;
|
||||
}
|
||||
.wp-block-button__link.aligncenter{
|
||||
text-align:center;
|
||||
}
|
||||
.wp-block-button__link.alignright{
|
||||
text-align:right;
|
||||
}
|
||||
|
||||
:where(.wp-block-button__link){
|
||||
border-radius:9999px;
|
||||
box-shadow:none;
|
||||
padding:calc(.667em + 2px) calc(1.333em + 2px);
|
||||
text-decoration:none;
|
||||
}
|
||||
|
||||
.wp-block-button[style*=text-decoration] .wp-block-button__link{
|
||||
text-decoration:inherit;
|
||||
}
|
||||
|
||||
.wp-block-buttons>.wp-block-button.has-custom-width{
|
||||
max-width:none;
|
||||
}
|
||||
.wp-block-buttons>.wp-block-button.has-custom-width .wp-block-button__link{
|
||||
width:100%;
|
||||
}
|
||||
.wp-block-buttons>.wp-block-button.has-custom-font-size .wp-block-button__link{
|
||||
font-size:inherit;
|
||||
}
|
||||
.wp-block-buttons>.wp-block-button.wp-block-button__width-25{
|
||||
width:calc(25% - var(--wp--style--block-gap, .5em)*.75);
|
||||
}
|
||||
.wp-block-buttons>.wp-block-button.wp-block-button__width-50{
|
||||
width:calc(50% - var(--wp--style--block-gap, .5em)*.5);
|
||||
}
|
||||
.wp-block-buttons>.wp-block-button.wp-block-button__width-75{
|
||||
width:calc(75% - var(--wp--style--block-gap, .5em)*.25);
|
||||
}
|
||||
.wp-block-buttons>.wp-block-button.wp-block-button__width-100{
|
||||
flex-basis:100%;
|
||||
width:100%;
|
||||
}
|
||||
|
||||
.wp-block-buttons.is-vertical>.wp-block-button.wp-block-button__width-25{
|
||||
width:25%;
|
||||
}
|
||||
.wp-block-buttons.is-vertical>.wp-block-button.wp-block-button__width-50{
|
||||
width:50%;
|
||||
}
|
||||
.wp-block-buttons.is-vertical>.wp-block-button.wp-block-button__width-75{
|
||||
width:75%;
|
||||
}
|
||||
|
||||
.wp-block-button.is-style-squared,.wp-block-button__link.wp-block-button.is-style-squared{
|
||||
border-radius:0;
|
||||
}
|
||||
|
||||
.wp-block-button.no-border-radius,.wp-block-button__link.no-border-radius{
|
||||
border-radius:0 !important;
|
||||
}
|
||||
|
||||
.wp-block-button .wp-block-button__link:where(.is-style-outline),.wp-block-button:where(.is-style-outline)>.wp-block-button__link{
|
||||
border:2px solid;
|
||||
padding:.667em 1.333em;
|
||||
}
|
||||
|
||||
.wp-block-button .wp-block-button__link:where(.is-style-outline):not(.has-text-color),.wp-block-button:where(.is-style-outline)>.wp-block-button__link:not(.has-text-color){
|
||||
color:currentColor;
|
||||
}
|
||||
|
||||
.wp-block-button .wp-block-button__link:where(.is-style-outline):not(.has-background),.wp-block-button:where(.is-style-outline)>.wp-block-button__link:not(.has-background){
|
||||
background-color:initial;
|
||||
background-image:none;
|
||||
}
|
||||
|
||||
.wp-block-button .wp-block-button__link:where(.has-border-color){
|
||||
border-width:initial;
|
||||
}
|
||||
.wp-block-button .wp-block-button__link:where([style*=border-top-color]){
|
||||
border-top-width:medium;
|
||||
}
|
||||
.wp-block-button .wp-block-button__link:where([style*=border-right-color]){
|
||||
border-left-width:medium;
|
||||
}
|
||||
.wp-block-button .wp-block-button__link:where([style*=border-bottom-color]){
|
||||
border-bottom-width:medium;
|
||||
}
|
||||
.wp-block-button .wp-block-button__link:where([style*=border-left-color]){
|
||||
border-right-width:medium;
|
||||
}
|
||||
.wp-block-button .wp-block-button__link:where([style*=border-style]){
|
||||
border-width:initial;
|
||||
}
|
||||
.wp-block-button .wp-block-button__link:where([style*=border-top-style]){
|
||||
border-top-width:medium;
|
||||
}
|
||||
.wp-block-button .wp-block-button__link:where([style*=border-right-style]){
|
||||
border-left-width:medium;
|
||||
}
|
||||
.wp-block-button .wp-block-button__link:where([style*=border-bottom-style]){
|
||||
border-bottom-width:medium;
|
||||
}
|
||||
.wp-block-button .wp-block-button__link:where([style*=border-left-style]){
|
||||
border-right-width:medium;
|
||||
.wp-block-button__link{
|
||||
box-sizing:border-box;
|
||||
cursor:pointer;
|
||||
display:inline-block;
|
||||
text-align:center;
|
||||
word-break:break-word;
|
||||
}
|
||||
.wp-block-button__link.aligncenter{
|
||||
text-align:center;
|
||||
}
|
||||
.wp-block-button__link.alignright{
|
||||
text-align:right;
|
||||
}
|
||||
|
||||
:where(.wp-block-button__link){
|
||||
border-radius:9999px;
|
||||
box-shadow:none;
|
||||
padding:calc(.667em + 2px) calc(1.333em + 2px);
|
||||
text-decoration:none;
|
||||
}
|
||||
|
||||
.wp-block-button[style*=text-decoration] .wp-block-button__link{
|
||||
text-decoration:inherit;
|
||||
}
|
||||
|
||||
.wp-block-buttons>.wp-block-button.has-custom-width{
|
||||
max-width:none;
|
||||
}
|
||||
.wp-block-buttons>.wp-block-button.has-custom-width .wp-block-button__link{
|
||||
width:100%;
|
||||
}
|
||||
.wp-block-buttons>.wp-block-button.has-custom-font-size .wp-block-button__link{
|
||||
font-size:inherit;
|
||||
}
|
||||
.wp-block-buttons>.wp-block-button.wp-block-button__width-25{
|
||||
width:calc(25% - var(--wp--style--block-gap, .5em)*.75);
|
||||
}
|
||||
.wp-block-buttons>.wp-block-button.wp-block-button__width-50{
|
||||
width:calc(50% - var(--wp--style--block-gap, .5em)*.5);
|
||||
}
|
||||
.wp-block-buttons>.wp-block-button.wp-block-button__width-75{
|
||||
width:calc(75% - var(--wp--style--block-gap, .5em)*.25);
|
||||
}
|
||||
.wp-block-buttons>.wp-block-button.wp-block-button__width-100{
|
||||
flex-basis:100%;
|
||||
width:100%;
|
||||
}
|
||||
|
||||
.wp-block-buttons.is-vertical>.wp-block-button.wp-block-button__width-25{
|
||||
width:25%;
|
||||
}
|
||||
.wp-block-buttons.is-vertical>.wp-block-button.wp-block-button__width-50{
|
||||
width:50%;
|
||||
}
|
||||
.wp-block-buttons.is-vertical>.wp-block-button.wp-block-button__width-75{
|
||||
width:75%;
|
||||
}
|
||||
|
||||
.wp-block-button.is-style-squared,.wp-block-button__link.wp-block-button.is-style-squared{
|
||||
border-radius:0;
|
||||
}
|
||||
|
||||
.wp-block-button.no-border-radius,.wp-block-button__link.no-border-radius{
|
||||
border-radius:0 !important;
|
||||
}
|
||||
|
||||
.wp-block-button .wp-block-button__link:where(.is-style-outline),.wp-block-button:where(.is-style-outline)>.wp-block-button__link{
|
||||
border:2px solid;
|
||||
padding:.667em 1.333em;
|
||||
}
|
||||
|
||||
.wp-block-button .wp-block-button__link:where(.is-style-outline):not(.has-text-color),.wp-block-button:where(.is-style-outline)>.wp-block-button__link:not(.has-text-color){
|
||||
color:currentColor;
|
||||
}
|
||||
|
||||
.wp-block-button .wp-block-button__link:where(.is-style-outline):not(.has-background),.wp-block-button:where(.is-style-outline)>.wp-block-button__link:not(.has-background){
|
||||
background-color:initial;
|
||||
background-image:none;
|
||||
}
|
||||
|
||||
.wp-block-button .wp-block-button__link:where(.has-border-color){
|
||||
border-width:initial;
|
||||
}
|
||||
.wp-block-button .wp-block-button__link:where([style*=border-top-color]){
|
||||
border-top-width:medium;
|
||||
}
|
||||
.wp-block-button .wp-block-button__link:where([style*=border-right-color]){
|
||||
border-left-width:medium;
|
||||
}
|
||||
.wp-block-button .wp-block-button__link:where([style*=border-bottom-color]){
|
||||
border-bottom-width:medium;
|
||||
}
|
||||
.wp-block-button .wp-block-button__link:where([style*=border-left-color]){
|
||||
border-right-width:medium;
|
||||
}
|
||||
.wp-block-button .wp-block-button__link:where([style*=border-style]){
|
||||
border-width:initial;
|
||||
}
|
||||
.wp-block-button .wp-block-button__link:where([style*=border-top-style]){
|
||||
border-top-width:medium;
|
||||
}
|
||||
.wp-block-button .wp-block-button__link:where([style*=border-right-style]){
|
||||
border-left-width:medium;
|
||||
}
|
||||
.wp-block-button .wp-block-button__link:where([style*=border-bottom-style]){
|
||||
border-bottom-width:medium;
|
||||
}
|
||||
.wp-block-button .wp-block-button__link:where([style*=border-left-style]){
|
||||
border-right-width:medium;
|
||||
}
|
||||
@@ -1,110 +1,110 @@
|
||||
.wp-block-button__link{
|
||||
box-sizing:border-box;
|
||||
cursor:pointer;
|
||||
display:inline-block;
|
||||
text-align:center;
|
||||
word-break:break-word;
|
||||
}
|
||||
.wp-block-button__link.aligncenter{
|
||||
text-align:center;
|
||||
}
|
||||
.wp-block-button__link.alignright{
|
||||
text-align:right;
|
||||
}
|
||||
|
||||
:where(.wp-block-button__link){
|
||||
border-radius:9999px;
|
||||
box-shadow:none;
|
||||
padding:calc(.667em + 2px) calc(1.333em + 2px);
|
||||
text-decoration:none;
|
||||
}
|
||||
|
||||
.wp-block-button[style*=text-decoration] .wp-block-button__link{
|
||||
text-decoration:inherit;
|
||||
}
|
||||
|
||||
.wp-block-buttons>.wp-block-button.has-custom-width{
|
||||
max-width:none;
|
||||
}
|
||||
.wp-block-buttons>.wp-block-button.has-custom-width .wp-block-button__link{
|
||||
width:100%;
|
||||
}
|
||||
.wp-block-buttons>.wp-block-button.has-custom-font-size .wp-block-button__link{
|
||||
font-size:inherit;
|
||||
}
|
||||
.wp-block-buttons>.wp-block-button.wp-block-button__width-25{
|
||||
width:calc(25% - var(--wp--style--block-gap, .5em)*.75);
|
||||
}
|
||||
.wp-block-buttons>.wp-block-button.wp-block-button__width-50{
|
||||
width:calc(50% - var(--wp--style--block-gap, .5em)*.5);
|
||||
}
|
||||
.wp-block-buttons>.wp-block-button.wp-block-button__width-75{
|
||||
width:calc(75% - var(--wp--style--block-gap, .5em)*.25);
|
||||
}
|
||||
.wp-block-buttons>.wp-block-button.wp-block-button__width-100{
|
||||
flex-basis:100%;
|
||||
width:100%;
|
||||
}
|
||||
|
||||
.wp-block-buttons.is-vertical>.wp-block-button.wp-block-button__width-25{
|
||||
width:25%;
|
||||
}
|
||||
.wp-block-buttons.is-vertical>.wp-block-button.wp-block-button__width-50{
|
||||
width:50%;
|
||||
}
|
||||
.wp-block-buttons.is-vertical>.wp-block-button.wp-block-button__width-75{
|
||||
width:75%;
|
||||
}
|
||||
|
||||
.wp-block-button.is-style-squared,.wp-block-button__link.wp-block-button.is-style-squared{
|
||||
border-radius:0;
|
||||
}
|
||||
|
||||
.wp-block-button.no-border-radius,.wp-block-button__link.no-border-radius{
|
||||
border-radius:0 !important;
|
||||
}
|
||||
|
||||
.wp-block-button .wp-block-button__link:where(.is-style-outline),.wp-block-button:where(.is-style-outline)>.wp-block-button__link{
|
||||
border:2px solid;
|
||||
padding:.667em 1.333em;
|
||||
}
|
||||
|
||||
.wp-block-button .wp-block-button__link:where(.is-style-outline):not(.has-text-color),.wp-block-button:where(.is-style-outline)>.wp-block-button__link:not(.has-text-color){
|
||||
color:currentColor;
|
||||
}
|
||||
|
||||
.wp-block-button .wp-block-button__link:where(.is-style-outline):not(.has-background),.wp-block-button:where(.is-style-outline)>.wp-block-button__link:not(.has-background){
|
||||
background-color:initial;
|
||||
background-image:none;
|
||||
}
|
||||
|
||||
.wp-block-button .wp-block-button__link:where(.has-border-color){
|
||||
border-width:initial;
|
||||
}
|
||||
.wp-block-button .wp-block-button__link:where([style*=border-top-color]){
|
||||
border-top-width:medium;
|
||||
}
|
||||
.wp-block-button .wp-block-button__link:where([style*=border-right-color]){
|
||||
border-right-width:medium;
|
||||
}
|
||||
.wp-block-button .wp-block-button__link:where([style*=border-bottom-color]){
|
||||
border-bottom-width:medium;
|
||||
}
|
||||
.wp-block-button .wp-block-button__link:where([style*=border-left-color]){
|
||||
border-left-width:medium;
|
||||
}
|
||||
.wp-block-button .wp-block-button__link:where([style*=border-style]){
|
||||
border-width:initial;
|
||||
}
|
||||
.wp-block-button .wp-block-button__link:where([style*=border-top-style]){
|
||||
border-top-width:medium;
|
||||
}
|
||||
.wp-block-button .wp-block-button__link:where([style*=border-right-style]){
|
||||
border-right-width:medium;
|
||||
}
|
||||
.wp-block-button .wp-block-button__link:where([style*=border-bottom-style]){
|
||||
border-bottom-width:medium;
|
||||
}
|
||||
.wp-block-button .wp-block-button__link:where([style*=border-left-style]){
|
||||
border-left-width:medium;
|
||||
.wp-block-button__link{
|
||||
box-sizing:border-box;
|
||||
cursor:pointer;
|
||||
display:inline-block;
|
||||
text-align:center;
|
||||
word-break:break-word;
|
||||
}
|
||||
.wp-block-button__link.aligncenter{
|
||||
text-align:center;
|
||||
}
|
||||
.wp-block-button__link.alignright{
|
||||
text-align:right;
|
||||
}
|
||||
|
||||
:where(.wp-block-button__link){
|
||||
border-radius:9999px;
|
||||
box-shadow:none;
|
||||
padding:calc(.667em + 2px) calc(1.333em + 2px);
|
||||
text-decoration:none;
|
||||
}
|
||||
|
||||
.wp-block-button[style*=text-decoration] .wp-block-button__link{
|
||||
text-decoration:inherit;
|
||||
}
|
||||
|
||||
.wp-block-buttons>.wp-block-button.has-custom-width{
|
||||
max-width:none;
|
||||
}
|
||||
.wp-block-buttons>.wp-block-button.has-custom-width .wp-block-button__link{
|
||||
width:100%;
|
||||
}
|
||||
.wp-block-buttons>.wp-block-button.has-custom-font-size .wp-block-button__link{
|
||||
font-size:inherit;
|
||||
}
|
||||
.wp-block-buttons>.wp-block-button.wp-block-button__width-25{
|
||||
width:calc(25% - var(--wp--style--block-gap, .5em)*.75);
|
||||
}
|
||||
.wp-block-buttons>.wp-block-button.wp-block-button__width-50{
|
||||
width:calc(50% - var(--wp--style--block-gap, .5em)*.5);
|
||||
}
|
||||
.wp-block-buttons>.wp-block-button.wp-block-button__width-75{
|
||||
width:calc(75% - var(--wp--style--block-gap, .5em)*.25);
|
||||
}
|
||||
.wp-block-buttons>.wp-block-button.wp-block-button__width-100{
|
||||
flex-basis:100%;
|
||||
width:100%;
|
||||
}
|
||||
|
||||
.wp-block-buttons.is-vertical>.wp-block-button.wp-block-button__width-25{
|
||||
width:25%;
|
||||
}
|
||||
.wp-block-buttons.is-vertical>.wp-block-button.wp-block-button__width-50{
|
||||
width:50%;
|
||||
}
|
||||
.wp-block-buttons.is-vertical>.wp-block-button.wp-block-button__width-75{
|
||||
width:75%;
|
||||
}
|
||||
|
||||
.wp-block-button.is-style-squared,.wp-block-button__link.wp-block-button.is-style-squared{
|
||||
border-radius:0;
|
||||
}
|
||||
|
||||
.wp-block-button.no-border-radius,.wp-block-button__link.no-border-radius{
|
||||
border-radius:0 !important;
|
||||
}
|
||||
|
||||
.wp-block-button .wp-block-button__link:where(.is-style-outline),.wp-block-button:where(.is-style-outline)>.wp-block-button__link{
|
||||
border:2px solid;
|
||||
padding:.667em 1.333em;
|
||||
}
|
||||
|
||||
.wp-block-button .wp-block-button__link:where(.is-style-outline):not(.has-text-color),.wp-block-button:where(.is-style-outline)>.wp-block-button__link:not(.has-text-color){
|
||||
color:currentColor;
|
||||
}
|
||||
|
||||
.wp-block-button .wp-block-button__link:where(.is-style-outline):not(.has-background),.wp-block-button:where(.is-style-outline)>.wp-block-button__link:not(.has-background){
|
||||
background-color:initial;
|
||||
background-image:none;
|
||||
}
|
||||
|
||||
.wp-block-button .wp-block-button__link:where(.has-border-color){
|
||||
border-width:initial;
|
||||
}
|
||||
.wp-block-button .wp-block-button__link:where([style*=border-top-color]){
|
||||
border-top-width:medium;
|
||||
}
|
||||
.wp-block-button .wp-block-button__link:where([style*=border-right-color]){
|
||||
border-right-width:medium;
|
||||
}
|
||||
.wp-block-button .wp-block-button__link:where([style*=border-bottom-color]){
|
||||
border-bottom-width:medium;
|
||||
}
|
||||
.wp-block-button .wp-block-button__link:where([style*=border-left-color]){
|
||||
border-left-width:medium;
|
||||
}
|
||||
.wp-block-button .wp-block-button__link:where([style*=border-style]){
|
||||
border-width:initial;
|
||||
}
|
||||
.wp-block-button .wp-block-button__link:where([style*=border-top-style]){
|
||||
border-top-width:medium;
|
||||
}
|
||||
.wp-block-button .wp-block-button__link:where([style*=border-right-style]){
|
||||
border-right-width:medium;
|
||||
}
|
||||
.wp-block-button .wp-block-button__link:where([style*=border-bottom-style]){
|
||||
border-bottom-width:medium;
|
||||
}
|
||||
.wp-block-button .wp-block-button__link:where([style*=border-left-style]){
|
||||
border-left-width:medium;
|
||||
}
|
||||
@@ -1,49 +1,49 @@
|
||||
{
|
||||
"$schema": "https://schemas.wp.org/trunk/block.json",
|
||||
"apiVersion": 3,
|
||||
"name": "core/buttons",
|
||||
"title": "Buttons",
|
||||
"category": "design",
|
||||
"allowedBlocks": [ "core/button" ],
|
||||
"description": "Prompt visitors to take action with a group of button-style links.",
|
||||
"keywords": [ "link" ],
|
||||
"textdomain": "default",
|
||||
"supports": {
|
||||
"anchor": true,
|
||||
"align": [ "wide", "full" ],
|
||||
"html": false,
|
||||
"__experimentalExposeControlsToChildren": true,
|
||||
"spacing": {
|
||||
"blockGap": true,
|
||||
"margin": [ "top", "bottom" ],
|
||||
"__experimentalDefaultControls": {
|
||||
"blockGap": true
|
||||
}
|
||||
},
|
||||
"typography": {
|
||||
"fontSize": true,
|
||||
"lineHeight": true,
|
||||
"__experimentalFontFamily": true,
|
||||
"__experimentalFontWeight": true,
|
||||
"__experimentalFontStyle": true,
|
||||
"__experimentalTextTransform": true,
|
||||
"__experimentalTextDecoration": true,
|
||||
"__experimentalLetterSpacing": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"fontSize": true
|
||||
}
|
||||
},
|
||||
"layout": {
|
||||
"allowSwitching": false,
|
||||
"allowInheriting": false,
|
||||
"default": {
|
||||
"type": "flex"
|
||||
}
|
||||
},
|
||||
"interactivity": {
|
||||
"clientNavigation": true
|
||||
}
|
||||
},
|
||||
"editorStyle": "wp-block-buttons-editor",
|
||||
"style": "wp-block-buttons"
|
||||
}
|
||||
{
|
||||
"$schema": "https://schemas.wp.org/trunk/block.json",
|
||||
"apiVersion": 3,
|
||||
"name": "core/buttons",
|
||||
"title": "Buttons",
|
||||
"category": "design",
|
||||
"allowedBlocks": [ "core/button" ],
|
||||
"description": "Prompt visitors to take action with a group of button-style links.",
|
||||
"keywords": [ "link" ],
|
||||
"textdomain": "default",
|
||||
"supports": {
|
||||
"anchor": true,
|
||||
"align": [ "wide", "full" ],
|
||||
"html": false,
|
||||
"__experimentalExposeControlsToChildren": true,
|
||||
"spacing": {
|
||||
"blockGap": true,
|
||||
"margin": [ "top", "bottom" ],
|
||||
"__experimentalDefaultControls": {
|
||||
"blockGap": true
|
||||
}
|
||||
},
|
||||
"typography": {
|
||||
"fontSize": true,
|
||||
"lineHeight": true,
|
||||
"__experimentalFontFamily": true,
|
||||
"__experimentalFontWeight": true,
|
||||
"__experimentalFontStyle": true,
|
||||
"__experimentalTextTransform": true,
|
||||
"__experimentalTextDecoration": true,
|
||||
"__experimentalLetterSpacing": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"fontSize": true
|
||||
}
|
||||
},
|
||||
"layout": {
|
||||
"allowSwitching": false,
|
||||
"allowInheriting": false,
|
||||
"default": {
|
||||
"type": "flex"
|
||||
}
|
||||
},
|
||||
"interactivity": {
|
||||
"clientNavigation": true
|
||||
}
|
||||
},
|
||||
"editorStyle": "wp-block-buttons-editor",
|
||||
"style": "wp-block-buttons"
|
||||
}
|
||||
|
||||
@@ -1,34 +1,34 @@
|
||||
.wp-block-buttons>.wp-block,.wp-block-buttons>.wp-block-button.wp-block-button.wp-block-button.wp-block-button.wp-block-button{
|
||||
margin:0;
|
||||
}
|
||||
.wp-block-buttons>.block-list-appender{
|
||||
align-items:center;
|
||||
display:inline-flex;
|
||||
}
|
||||
.wp-block-buttons.is-vertical>.block-list-appender .block-list-appender__toggle{
|
||||
justify-content:flex-start;
|
||||
}
|
||||
.wp-block-buttons>.wp-block-button:focus{
|
||||
box-shadow:none;
|
||||
}
|
||||
.wp-block-buttons:not(.is-content-justification-space-between,.is-content-justification-right,.is-content-justification-left,.is-content-justification-center) .wp-block[data-align=center]{
|
||||
margin-left:auto;
|
||||
margin-right:auto;
|
||||
margin-top:0;
|
||||
width:100%;
|
||||
}
|
||||
.wp-block-buttons:not(.is-content-justification-space-between,.is-content-justification-right,.is-content-justification-left,.is-content-justification-center) .wp-block[data-align=center] .wp-block-button{
|
||||
margin-bottom:0;
|
||||
}
|
||||
.editor-styles-wrapper .wp-block-buttons.has-custom-font-size .wp-block-button__link{
|
||||
font-size:inherit;
|
||||
}
|
||||
|
||||
.wp-block[data-align=center]>.wp-block-buttons{
|
||||
align-items:center;
|
||||
justify-content:center;
|
||||
}
|
||||
|
||||
.wp-block[data-align=right]>.wp-block-buttons{
|
||||
justify-content:flex-end;
|
||||
.wp-block-buttons>.wp-block,.wp-block-buttons>.wp-block-button.wp-block-button.wp-block-button.wp-block-button.wp-block-button{
|
||||
margin:0;
|
||||
}
|
||||
.wp-block-buttons>.block-list-appender{
|
||||
align-items:center;
|
||||
display:inline-flex;
|
||||
}
|
||||
.wp-block-buttons.is-vertical>.block-list-appender .block-list-appender__toggle{
|
||||
justify-content:flex-start;
|
||||
}
|
||||
.wp-block-buttons>.wp-block-button:focus{
|
||||
box-shadow:none;
|
||||
}
|
||||
.wp-block-buttons:not(.is-content-justification-space-between,.is-content-justification-right,.is-content-justification-left,.is-content-justification-center) .wp-block[data-align=center]{
|
||||
margin-left:auto;
|
||||
margin-right:auto;
|
||||
margin-top:0;
|
||||
width:100%;
|
||||
}
|
||||
.wp-block-buttons:not(.is-content-justification-space-between,.is-content-justification-right,.is-content-justification-left,.is-content-justification-center) .wp-block[data-align=center] .wp-block-button{
|
||||
margin-bottom:0;
|
||||
}
|
||||
.editor-styles-wrapper .wp-block-buttons.has-custom-font-size .wp-block-button__link{
|
||||
font-size:inherit;
|
||||
}
|
||||
|
||||
.wp-block[data-align=center]>.wp-block-buttons{
|
||||
align-items:center;
|
||||
justify-content:center;
|
||||
}
|
||||
|
||||
.wp-block[data-align=right]>.wp-block-buttons{
|
||||
justify-content:flex-end;
|
||||
}
|
||||
@@ -1,34 +1,34 @@
|
||||
.wp-block-buttons>.wp-block,.wp-block-buttons>.wp-block-button.wp-block-button.wp-block-button.wp-block-button.wp-block-button{
|
||||
margin:0;
|
||||
}
|
||||
.wp-block-buttons>.block-list-appender{
|
||||
align-items:center;
|
||||
display:inline-flex;
|
||||
}
|
||||
.wp-block-buttons.is-vertical>.block-list-appender .block-list-appender__toggle{
|
||||
justify-content:flex-start;
|
||||
}
|
||||
.wp-block-buttons>.wp-block-button:focus{
|
||||
box-shadow:none;
|
||||
}
|
||||
.wp-block-buttons:not(.is-content-justification-space-between,.is-content-justification-right,.is-content-justification-left,.is-content-justification-center) .wp-block[data-align=center]{
|
||||
margin-left:auto;
|
||||
margin-right:auto;
|
||||
margin-top:0;
|
||||
width:100%;
|
||||
}
|
||||
.wp-block-buttons:not(.is-content-justification-space-between,.is-content-justification-right,.is-content-justification-left,.is-content-justification-center) .wp-block[data-align=center] .wp-block-button{
|
||||
margin-bottom:0;
|
||||
}
|
||||
.editor-styles-wrapper .wp-block-buttons.has-custom-font-size .wp-block-button__link{
|
||||
font-size:inherit;
|
||||
}
|
||||
|
||||
.wp-block[data-align=center]>.wp-block-buttons{
|
||||
align-items:center;
|
||||
justify-content:center;
|
||||
}
|
||||
|
||||
.wp-block[data-align=right]>.wp-block-buttons{
|
||||
justify-content:flex-end;
|
||||
.wp-block-buttons>.wp-block,.wp-block-buttons>.wp-block-button.wp-block-button.wp-block-button.wp-block-button.wp-block-button{
|
||||
margin:0;
|
||||
}
|
||||
.wp-block-buttons>.block-list-appender{
|
||||
align-items:center;
|
||||
display:inline-flex;
|
||||
}
|
||||
.wp-block-buttons.is-vertical>.block-list-appender .block-list-appender__toggle{
|
||||
justify-content:flex-start;
|
||||
}
|
||||
.wp-block-buttons>.wp-block-button:focus{
|
||||
box-shadow:none;
|
||||
}
|
||||
.wp-block-buttons:not(.is-content-justification-space-between,.is-content-justification-right,.is-content-justification-left,.is-content-justification-center) .wp-block[data-align=center]{
|
||||
margin-left:auto;
|
||||
margin-right:auto;
|
||||
margin-top:0;
|
||||
width:100%;
|
||||
}
|
||||
.wp-block-buttons:not(.is-content-justification-space-between,.is-content-justification-right,.is-content-justification-left,.is-content-justification-center) .wp-block[data-align=center] .wp-block-button{
|
||||
margin-bottom:0;
|
||||
}
|
||||
.editor-styles-wrapper .wp-block-buttons.has-custom-font-size .wp-block-button__link{
|
||||
font-size:inherit;
|
||||
}
|
||||
|
||||
.wp-block[data-align=center]>.wp-block-buttons{
|
||||
align-items:center;
|
||||
justify-content:center;
|
||||
}
|
||||
|
||||
.wp-block[data-align=right]>.wp-block-buttons{
|
||||
justify-content:flex-end;
|
||||
}
|
||||
@@ -1,49 +1,49 @@
|
||||
.wp-block-buttons.is-vertical{
|
||||
flex-direction:column;
|
||||
}
|
||||
.wp-block-buttons.is-vertical>.wp-block-button:last-child{
|
||||
margin-bottom:0;
|
||||
}
|
||||
.wp-block-buttons>.wp-block-button{
|
||||
display:inline-block;
|
||||
margin:0;
|
||||
}
|
||||
.wp-block-buttons.is-content-justification-left{
|
||||
justify-content:flex-start;
|
||||
}
|
||||
.wp-block-buttons.is-content-justification-left.is-vertical{
|
||||
align-items:flex-start;
|
||||
}
|
||||
.wp-block-buttons.is-content-justification-center{
|
||||
justify-content:center;
|
||||
}
|
||||
.wp-block-buttons.is-content-justification-center.is-vertical{
|
||||
align-items:center;
|
||||
}
|
||||
.wp-block-buttons.is-content-justification-right{
|
||||
justify-content:flex-end;
|
||||
}
|
||||
.wp-block-buttons.is-content-justification-right.is-vertical{
|
||||
align-items:flex-end;
|
||||
}
|
||||
.wp-block-buttons.is-content-justification-space-between{
|
||||
justify-content:space-between;
|
||||
}
|
||||
.wp-block-buttons.aligncenter{
|
||||
text-align:center;
|
||||
}
|
||||
.wp-block-buttons:not(.is-content-justification-space-between,.is-content-justification-right,.is-content-justification-left,.is-content-justification-center) .wp-block-button.aligncenter{
|
||||
margin-left:auto;
|
||||
margin-right:auto;
|
||||
width:100%;
|
||||
}
|
||||
.wp-block-buttons[style*=text-decoration] .wp-block-button,.wp-block-buttons[style*=text-decoration] .wp-block-button__link{
|
||||
text-decoration:inherit;
|
||||
}
|
||||
.wp-block-buttons.has-custom-font-size .wp-block-button__link{
|
||||
font-size:inherit;
|
||||
}
|
||||
|
||||
.wp-block-button.aligncenter{
|
||||
text-align:center;
|
||||
.wp-block-buttons.is-vertical{
|
||||
flex-direction:column;
|
||||
}
|
||||
.wp-block-buttons.is-vertical>.wp-block-button:last-child{
|
||||
margin-bottom:0;
|
||||
}
|
||||
.wp-block-buttons>.wp-block-button{
|
||||
display:inline-block;
|
||||
margin:0;
|
||||
}
|
||||
.wp-block-buttons.is-content-justification-left{
|
||||
justify-content:flex-start;
|
||||
}
|
||||
.wp-block-buttons.is-content-justification-left.is-vertical{
|
||||
align-items:flex-start;
|
||||
}
|
||||
.wp-block-buttons.is-content-justification-center{
|
||||
justify-content:center;
|
||||
}
|
||||
.wp-block-buttons.is-content-justification-center.is-vertical{
|
||||
align-items:center;
|
||||
}
|
||||
.wp-block-buttons.is-content-justification-right{
|
||||
justify-content:flex-end;
|
||||
}
|
||||
.wp-block-buttons.is-content-justification-right.is-vertical{
|
||||
align-items:flex-end;
|
||||
}
|
||||
.wp-block-buttons.is-content-justification-space-between{
|
||||
justify-content:space-between;
|
||||
}
|
||||
.wp-block-buttons.aligncenter{
|
||||
text-align:center;
|
||||
}
|
||||
.wp-block-buttons:not(.is-content-justification-space-between,.is-content-justification-right,.is-content-justification-left,.is-content-justification-center) .wp-block-button.aligncenter{
|
||||
margin-left:auto;
|
||||
margin-right:auto;
|
||||
width:100%;
|
||||
}
|
||||
.wp-block-buttons[style*=text-decoration] .wp-block-button,.wp-block-buttons[style*=text-decoration] .wp-block-button__link{
|
||||
text-decoration:inherit;
|
||||
}
|
||||
.wp-block-buttons.has-custom-font-size .wp-block-button__link{
|
||||
font-size:inherit;
|
||||
}
|
||||
|
||||
.wp-block-button.aligncenter{
|
||||
text-align:center;
|
||||
}
|
||||
@@ -1,49 +1,49 @@
|
||||
.wp-block-buttons.is-vertical{
|
||||
flex-direction:column;
|
||||
}
|
||||
.wp-block-buttons.is-vertical>.wp-block-button:last-child{
|
||||
margin-bottom:0;
|
||||
}
|
||||
.wp-block-buttons>.wp-block-button{
|
||||
display:inline-block;
|
||||
margin:0;
|
||||
}
|
||||
.wp-block-buttons.is-content-justification-left{
|
||||
justify-content:flex-start;
|
||||
}
|
||||
.wp-block-buttons.is-content-justification-left.is-vertical{
|
||||
align-items:flex-start;
|
||||
}
|
||||
.wp-block-buttons.is-content-justification-center{
|
||||
justify-content:center;
|
||||
}
|
||||
.wp-block-buttons.is-content-justification-center.is-vertical{
|
||||
align-items:center;
|
||||
}
|
||||
.wp-block-buttons.is-content-justification-right{
|
||||
justify-content:flex-end;
|
||||
}
|
||||
.wp-block-buttons.is-content-justification-right.is-vertical{
|
||||
align-items:flex-end;
|
||||
}
|
||||
.wp-block-buttons.is-content-justification-space-between{
|
||||
justify-content:space-between;
|
||||
}
|
||||
.wp-block-buttons.aligncenter{
|
||||
text-align:center;
|
||||
}
|
||||
.wp-block-buttons:not(.is-content-justification-space-between,.is-content-justification-right,.is-content-justification-left,.is-content-justification-center) .wp-block-button.aligncenter{
|
||||
margin-left:auto;
|
||||
margin-right:auto;
|
||||
width:100%;
|
||||
}
|
||||
.wp-block-buttons[style*=text-decoration] .wp-block-button,.wp-block-buttons[style*=text-decoration] .wp-block-button__link{
|
||||
text-decoration:inherit;
|
||||
}
|
||||
.wp-block-buttons.has-custom-font-size .wp-block-button__link{
|
||||
font-size:inherit;
|
||||
}
|
||||
|
||||
.wp-block-button.aligncenter{
|
||||
text-align:center;
|
||||
.wp-block-buttons.is-vertical{
|
||||
flex-direction:column;
|
||||
}
|
||||
.wp-block-buttons.is-vertical>.wp-block-button:last-child{
|
||||
margin-bottom:0;
|
||||
}
|
||||
.wp-block-buttons>.wp-block-button{
|
||||
display:inline-block;
|
||||
margin:0;
|
||||
}
|
||||
.wp-block-buttons.is-content-justification-left{
|
||||
justify-content:flex-start;
|
||||
}
|
||||
.wp-block-buttons.is-content-justification-left.is-vertical{
|
||||
align-items:flex-start;
|
||||
}
|
||||
.wp-block-buttons.is-content-justification-center{
|
||||
justify-content:center;
|
||||
}
|
||||
.wp-block-buttons.is-content-justification-center.is-vertical{
|
||||
align-items:center;
|
||||
}
|
||||
.wp-block-buttons.is-content-justification-right{
|
||||
justify-content:flex-end;
|
||||
}
|
||||
.wp-block-buttons.is-content-justification-right.is-vertical{
|
||||
align-items:flex-end;
|
||||
}
|
||||
.wp-block-buttons.is-content-justification-space-between{
|
||||
justify-content:space-between;
|
||||
}
|
||||
.wp-block-buttons.aligncenter{
|
||||
text-align:center;
|
||||
}
|
||||
.wp-block-buttons:not(.is-content-justification-space-between,.is-content-justification-right,.is-content-justification-left,.is-content-justification-center) .wp-block-button.aligncenter{
|
||||
margin-left:auto;
|
||||
margin-right:auto;
|
||||
width:100%;
|
||||
}
|
||||
.wp-block-buttons[style*=text-decoration] .wp-block-button,.wp-block-buttons[style*=text-decoration] .wp-block-button__link{
|
||||
text-decoration:inherit;
|
||||
}
|
||||
.wp-block-buttons.has-custom-font-size .wp-block-button__link{
|
||||
font-size:inherit;
|
||||
}
|
||||
|
||||
.wp-block-button.aligncenter{
|
||||
text-align:center;
|
||||
}
|
||||
@@ -1,172 +1,172 @@
|
||||
<?php
|
||||
/**
|
||||
* Server-side rendering of the `core/calendar` block.
|
||||
*
|
||||
* @package WordPress
|
||||
*/
|
||||
|
||||
/**
|
||||
* Renders the `core/calendar` block on server.
|
||||
*
|
||||
* @param array $attributes The block attributes.
|
||||
*
|
||||
* @return string Returns the block content.
|
||||
*/
|
||||
function render_block_core_calendar( $attributes ) {
|
||||
global $monthnum, $year;
|
||||
|
||||
// Calendar shouldn't be rendered
|
||||
// when there are no published posts on the site.
|
||||
if ( ! block_core_calendar_has_published_posts() ) {
|
||||
if ( is_user_logged_in() ) {
|
||||
return '<div>' . __( 'The calendar block is hidden because there are no published posts.' ) . '</div>';
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
$previous_monthnum = $monthnum;
|
||||
$previous_year = $year;
|
||||
|
||||
if ( isset( $attributes['month'] ) && isset( $attributes['year'] ) ) {
|
||||
$permalink_structure = get_option( 'permalink_structure' );
|
||||
if (
|
||||
str_contains( $permalink_structure, '%monthnum%' ) &&
|
||||
str_contains( $permalink_structure, '%year%' )
|
||||
) {
|
||||
$monthnum = $attributes['month'];
|
||||
$year = $attributes['year'];
|
||||
}
|
||||
}
|
||||
|
||||
$color_block_styles = array();
|
||||
|
||||
// Text color.
|
||||
$preset_text_color = array_key_exists( 'textColor', $attributes ) ? "var:preset|color|{$attributes['textColor']}" : null;
|
||||
$custom_text_color = $attributes['style']['color']['text'] ?? null;
|
||||
$color_block_styles['text'] = $preset_text_color ? $preset_text_color : $custom_text_color;
|
||||
|
||||
// Background Color.
|
||||
$preset_background_color = array_key_exists( 'backgroundColor', $attributes ) ? "var:preset|color|{$attributes['backgroundColor']}" : null;
|
||||
$custom_background_color = $attributes['style']['color']['background'] ?? null;
|
||||
$color_block_styles['background'] = $preset_background_color ? $preset_background_color : $custom_background_color;
|
||||
|
||||
// Generate color styles and classes.
|
||||
$styles = wp_style_engine_get_styles( array( 'color' => $color_block_styles ), array( 'convert_vars_to_classnames' => true ) );
|
||||
$inline_styles = empty( $styles['css'] ) ? '' : sprintf( ' style="%s"', esc_attr( $styles['css'] ) );
|
||||
$classnames = empty( $styles['classnames'] ) ? '' : ' ' . esc_attr( $styles['classnames'] );
|
||||
if ( isset( $attributes['style']['elements']['link']['color']['text'] ) ) {
|
||||
$classnames .= ' has-link-color';
|
||||
}
|
||||
// Apply color classes and styles to the calendar.
|
||||
$calendar = str_replace( '<table', '<table' . $inline_styles, get_calendar( true, false ) );
|
||||
$calendar = str_replace( 'class="wp-calendar-table', 'class="wp-calendar-table' . $classnames, $calendar );
|
||||
|
||||
$wrapper_attributes = get_block_wrapper_attributes();
|
||||
$output = sprintf(
|
||||
'<div %1$s>%2$s</div>',
|
||||
$wrapper_attributes,
|
||||
$calendar
|
||||
);
|
||||
|
||||
$monthnum = $previous_monthnum;
|
||||
$year = $previous_year;
|
||||
|
||||
return $output;
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers the `core/calendar` block on server.
|
||||
*/
|
||||
function register_block_core_calendar() {
|
||||
register_block_type_from_metadata(
|
||||
__DIR__ . '/calendar',
|
||||
array(
|
||||
'render_callback' => 'render_block_core_calendar',
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
add_action( 'init', 'register_block_core_calendar' );
|
||||
|
||||
/**
|
||||
* Returns whether or not there are any published posts.
|
||||
*
|
||||
* Used to hide the calendar block when there are no published posts.
|
||||
* This compensates for a known Core bug: https://core.trac.wordpress.org/ticket/12016
|
||||
*
|
||||
* @return bool Has any published posts or not.
|
||||
*/
|
||||
function block_core_calendar_has_published_posts() {
|
||||
// Multisite already has an option that stores the count of the published posts.
|
||||
// Let's use that for multisites.
|
||||
if ( is_multisite() ) {
|
||||
return 0 < (int) get_option( 'post_count' );
|
||||
}
|
||||
|
||||
// On single sites we try our own cached option first.
|
||||
$has_published_posts = get_option( 'wp_calendar_block_has_published_posts', null );
|
||||
if ( null !== $has_published_posts ) {
|
||||
return (bool) $has_published_posts;
|
||||
}
|
||||
|
||||
// No cache hit, let's update the cache and return the cached value.
|
||||
return block_core_calendar_update_has_published_posts();
|
||||
}
|
||||
|
||||
/**
|
||||
* Queries the database for any published post and saves
|
||||
* a flag whether any published post exists or not.
|
||||
*
|
||||
* @return bool Has any published posts or not.
|
||||
*/
|
||||
function block_core_calendar_update_has_published_posts() {
|
||||
global $wpdb;
|
||||
$has_published_posts = (bool) $wpdb->get_var( "SELECT 1 as test FROM {$wpdb->posts} WHERE post_type = 'post' AND post_status = 'publish' LIMIT 1" );
|
||||
update_option( 'wp_calendar_block_has_published_posts', $has_published_posts );
|
||||
return $has_published_posts;
|
||||
}
|
||||
|
||||
// We only want to register these functions and actions when
|
||||
// we are on single sites. On multi sites we use `post_count` option.
|
||||
if ( ! is_multisite() ) {
|
||||
/**
|
||||
* Handler for updating the has published posts flag when a post is deleted.
|
||||
*
|
||||
* @param int $post_id Deleted post ID.
|
||||
*/
|
||||
function block_core_calendar_update_has_published_post_on_delete( $post_id ) {
|
||||
$post = get_post( $post_id );
|
||||
|
||||
if ( ! $post || 'publish' !== $post->post_status || 'post' !== $post->post_type ) {
|
||||
return;
|
||||
}
|
||||
|
||||
block_core_calendar_update_has_published_posts();
|
||||
}
|
||||
|
||||
/**
|
||||
* Handler for updating the has published posts flag when a post status changes.
|
||||
*
|
||||
* @param string $new_status The status the post is changing to.
|
||||
* @param string $old_status The status the post is changing from.
|
||||
* @param WP_Post $post Post object.
|
||||
*/
|
||||
function block_core_calendar_update_has_published_post_on_transition_post_status( $new_status, $old_status, $post ) {
|
||||
if ( $new_status === $old_status ) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ( 'post' !== get_post_type( $post ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ( 'publish' !== $new_status && 'publish' !== $old_status ) {
|
||||
return;
|
||||
}
|
||||
|
||||
block_core_calendar_update_has_published_posts();
|
||||
}
|
||||
|
||||
add_action( 'delete_post', 'block_core_calendar_update_has_published_post_on_delete' );
|
||||
add_action( 'transition_post_status', 'block_core_calendar_update_has_published_post_on_transition_post_status', 10, 3 );
|
||||
}
|
||||
<?php
|
||||
/**
|
||||
* Server-side rendering of the `core/calendar` block.
|
||||
*
|
||||
* @package WordPress
|
||||
*/
|
||||
|
||||
/**
|
||||
* Renders the `core/calendar` block on server.
|
||||
*
|
||||
* @param array $attributes The block attributes.
|
||||
*
|
||||
* @return string Returns the block content.
|
||||
*/
|
||||
function render_block_core_calendar( $attributes ) {
|
||||
global $monthnum, $year;
|
||||
|
||||
// Calendar shouldn't be rendered
|
||||
// when there are no published posts on the site.
|
||||
if ( ! block_core_calendar_has_published_posts() ) {
|
||||
if ( is_user_logged_in() ) {
|
||||
return '<div>' . __( 'The calendar block is hidden because there are no published posts.' ) . '</div>';
|
||||
}
|
||||
return '';
|
||||
}
|
||||
|
||||
$previous_monthnum = $monthnum;
|
||||
$previous_year = $year;
|
||||
|
||||
if ( isset( $attributes['month'] ) && isset( $attributes['year'] ) ) {
|
||||
$permalink_structure = get_option( 'permalink_structure' );
|
||||
if (
|
||||
str_contains( $permalink_structure, '%monthnum%' ) &&
|
||||
str_contains( $permalink_structure, '%year%' )
|
||||
) {
|
||||
$monthnum = $attributes['month'];
|
||||
$year = $attributes['year'];
|
||||
}
|
||||
}
|
||||
|
||||
$color_block_styles = array();
|
||||
|
||||
// Text color.
|
||||
$preset_text_color = array_key_exists( 'textColor', $attributes ) ? "var:preset|color|{$attributes['textColor']}" : null;
|
||||
$custom_text_color = $attributes['style']['color']['text'] ?? null;
|
||||
$color_block_styles['text'] = $preset_text_color ? $preset_text_color : $custom_text_color;
|
||||
|
||||
// Background Color.
|
||||
$preset_background_color = array_key_exists( 'backgroundColor', $attributes ) ? "var:preset|color|{$attributes['backgroundColor']}" : null;
|
||||
$custom_background_color = $attributes['style']['color']['background'] ?? null;
|
||||
$color_block_styles['background'] = $preset_background_color ? $preset_background_color : $custom_background_color;
|
||||
|
||||
// Generate color styles and classes.
|
||||
$styles = wp_style_engine_get_styles( array( 'color' => $color_block_styles ), array( 'convert_vars_to_classnames' => true ) );
|
||||
$inline_styles = empty( $styles['css'] ) ? '' : sprintf( ' style="%s"', esc_attr( $styles['css'] ) );
|
||||
$classnames = empty( $styles['classnames'] ) ? '' : ' ' . esc_attr( $styles['classnames'] );
|
||||
if ( isset( $attributes['style']['elements']['link']['color']['text'] ) ) {
|
||||
$classnames .= ' has-link-color';
|
||||
}
|
||||
// Apply color classes and styles to the calendar.
|
||||
$calendar = str_replace( '<table', '<table' . $inline_styles, get_calendar( true, false ) );
|
||||
$calendar = str_replace( 'class="wp-calendar-table', 'class="wp-calendar-table' . $classnames, $calendar );
|
||||
|
||||
$wrapper_attributes = get_block_wrapper_attributes();
|
||||
$output = sprintf(
|
||||
'<div %1$s>%2$s</div>',
|
||||
$wrapper_attributes,
|
||||
$calendar
|
||||
);
|
||||
|
||||
$monthnum = $previous_monthnum;
|
||||
$year = $previous_year;
|
||||
|
||||
return $output;
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers the `core/calendar` block on server.
|
||||
*/
|
||||
function register_block_core_calendar() {
|
||||
register_block_type_from_metadata(
|
||||
__DIR__ . '/calendar',
|
||||
array(
|
||||
'render_callback' => 'render_block_core_calendar',
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
add_action( 'init', 'register_block_core_calendar' );
|
||||
|
||||
/**
|
||||
* Returns whether or not there are any published posts.
|
||||
*
|
||||
* Used to hide the calendar block when there are no published posts.
|
||||
* This compensates for a known Core bug: https://core.trac.wordpress.org/ticket/12016
|
||||
*
|
||||
* @return bool Has any published posts or not.
|
||||
*/
|
||||
function block_core_calendar_has_published_posts() {
|
||||
// Multisite already has an option that stores the count of the published posts.
|
||||
// Let's use that for multisites.
|
||||
if ( is_multisite() ) {
|
||||
return 0 < (int) get_option( 'post_count' );
|
||||
}
|
||||
|
||||
// On single sites we try our own cached option first.
|
||||
$has_published_posts = get_option( 'wp_calendar_block_has_published_posts', null );
|
||||
if ( null !== $has_published_posts ) {
|
||||
return (bool) $has_published_posts;
|
||||
}
|
||||
|
||||
// No cache hit, let's update the cache and return the cached value.
|
||||
return block_core_calendar_update_has_published_posts();
|
||||
}
|
||||
|
||||
/**
|
||||
* Queries the database for any published post and saves
|
||||
* a flag whether any published post exists or not.
|
||||
*
|
||||
* @return bool Has any published posts or not.
|
||||
*/
|
||||
function block_core_calendar_update_has_published_posts() {
|
||||
global $wpdb;
|
||||
$has_published_posts = (bool) $wpdb->get_var( "SELECT 1 as test FROM {$wpdb->posts} WHERE post_type = 'post' AND post_status = 'publish' LIMIT 1" );
|
||||
update_option( 'wp_calendar_block_has_published_posts', $has_published_posts );
|
||||
return $has_published_posts;
|
||||
}
|
||||
|
||||
// We only want to register these functions and actions when
|
||||
// we are on single sites. On multi sites we use `post_count` option.
|
||||
if ( ! is_multisite() ) {
|
||||
/**
|
||||
* Handler for updating the has published posts flag when a post is deleted.
|
||||
*
|
||||
* @param int $post_id Deleted post ID.
|
||||
*/
|
||||
function block_core_calendar_update_has_published_post_on_delete( $post_id ) {
|
||||
$post = get_post( $post_id );
|
||||
|
||||
if ( ! $post || 'publish' !== $post->post_status || 'post' !== $post->post_type ) {
|
||||
return;
|
||||
}
|
||||
|
||||
block_core_calendar_update_has_published_posts();
|
||||
}
|
||||
|
||||
/**
|
||||
* Handler for updating the has published posts flag when a post status changes.
|
||||
*
|
||||
* @param string $new_status The status the post is changing to.
|
||||
* @param string $old_status The status the post is changing from.
|
||||
* @param WP_Post $post Post object.
|
||||
*/
|
||||
function block_core_calendar_update_has_published_post_on_transition_post_status( $new_status, $old_status, $post ) {
|
||||
if ( $new_status === $old_status ) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ( 'post' !== get_post_type( $post ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ( 'publish' !== $new_status && 'publish' !== $old_status ) {
|
||||
return;
|
||||
}
|
||||
|
||||
block_core_calendar_update_has_published_posts();
|
||||
}
|
||||
|
||||
add_action( 'delete_post', 'block_core_calendar_update_has_published_post_on_delete' );
|
||||
add_action( 'transition_post_status', 'block_core_calendar_update_has_published_post_on_transition_post_status', 10, 3 );
|
||||
}
|
||||
|
||||
@@ -1,46 +1,46 @@
|
||||
{
|
||||
"$schema": "https://schemas.wp.org/trunk/block.json",
|
||||
"apiVersion": 3,
|
||||
"name": "core/calendar",
|
||||
"title": "Calendar",
|
||||
"category": "widgets",
|
||||
"description": "A calendar of your site’s posts.",
|
||||
"keywords": [ "posts", "archive" ],
|
||||
"textdomain": "default",
|
||||
"attributes": {
|
||||
"month": {
|
||||
"type": "integer"
|
||||
},
|
||||
"year": {
|
||||
"type": "integer"
|
||||
}
|
||||
},
|
||||
"supports": {
|
||||
"align": true,
|
||||
"color": {
|
||||
"link": true,
|
||||
"__experimentalSkipSerialization": [ "text", "background" ],
|
||||
"__experimentalDefaultControls": {
|
||||
"background": true,
|
||||
"text": true
|
||||
},
|
||||
"__experimentalSelector": "table, th"
|
||||
},
|
||||
"typography": {
|
||||
"fontSize": true,
|
||||
"lineHeight": true,
|
||||
"__experimentalFontFamily": true,
|
||||
"__experimentalFontWeight": true,
|
||||
"__experimentalFontStyle": true,
|
||||
"__experimentalTextTransform": true,
|
||||
"__experimentalLetterSpacing": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"fontSize": true
|
||||
}
|
||||
},
|
||||
"interactivity": {
|
||||
"clientNavigation": true
|
||||
}
|
||||
},
|
||||
"style": "wp-block-calendar"
|
||||
}
|
||||
{
|
||||
"$schema": "https://schemas.wp.org/trunk/block.json",
|
||||
"apiVersion": 3,
|
||||
"name": "core/calendar",
|
||||
"title": "Calendar",
|
||||
"category": "widgets",
|
||||
"description": "A calendar of your site’s posts.",
|
||||
"keywords": [ "posts", "archive" ],
|
||||
"textdomain": "default",
|
||||
"attributes": {
|
||||
"month": {
|
||||
"type": "integer"
|
||||
},
|
||||
"year": {
|
||||
"type": "integer"
|
||||
}
|
||||
},
|
||||
"supports": {
|
||||
"align": true,
|
||||
"color": {
|
||||
"link": true,
|
||||
"__experimentalSkipSerialization": [ "text", "background" ],
|
||||
"__experimentalDefaultControls": {
|
||||
"background": true,
|
||||
"text": true
|
||||
},
|
||||
"__experimentalSelector": "table, th"
|
||||
},
|
||||
"typography": {
|
||||
"fontSize": true,
|
||||
"lineHeight": true,
|
||||
"__experimentalFontFamily": true,
|
||||
"__experimentalFontWeight": true,
|
||||
"__experimentalFontStyle": true,
|
||||
"__experimentalTextTransform": true,
|
||||
"__experimentalLetterSpacing": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"fontSize": true
|
||||
}
|
||||
},
|
||||
"interactivity": {
|
||||
"clientNavigation": true
|
||||
}
|
||||
},
|
||||
"style": "wp-block-calendar"
|
||||
}
|
||||
|
||||
@@ -1,33 +1,33 @@
|
||||
.wp-block-calendar{
|
||||
text-align:center;
|
||||
}
|
||||
.wp-block-calendar td,.wp-block-calendar th{
|
||||
border:1px solid;
|
||||
padding:.25em;
|
||||
}
|
||||
.wp-block-calendar th{
|
||||
font-weight:400;
|
||||
}
|
||||
.wp-block-calendar caption{
|
||||
background-color:inherit;
|
||||
}
|
||||
.wp-block-calendar table{
|
||||
border-collapse:collapse;
|
||||
width:100%;
|
||||
}
|
||||
.wp-block-calendar table:where(:not(.has-text-color)){
|
||||
color:#40464d;
|
||||
}
|
||||
.wp-block-calendar table:where(:not(.has-text-color)) td,.wp-block-calendar table:where(:not(.has-text-color)) th{
|
||||
border-color:#ddd;
|
||||
}
|
||||
.wp-block-calendar table.has-background th{
|
||||
background-color:inherit;
|
||||
}
|
||||
.wp-block-calendar table.has-text-color th{
|
||||
color:inherit;
|
||||
}
|
||||
|
||||
:where(.wp-block-calendar table:not(.has-background) th){
|
||||
background:#ddd;
|
||||
.wp-block-calendar{
|
||||
text-align:center;
|
||||
}
|
||||
.wp-block-calendar td,.wp-block-calendar th{
|
||||
border:1px solid;
|
||||
padding:.25em;
|
||||
}
|
||||
.wp-block-calendar th{
|
||||
font-weight:400;
|
||||
}
|
||||
.wp-block-calendar caption{
|
||||
background-color:inherit;
|
||||
}
|
||||
.wp-block-calendar table{
|
||||
border-collapse:collapse;
|
||||
width:100%;
|
||||
}
|
||||
.wp-block-calendar table:where(:not(.has-text-color)){
|
||||
color:#40464d;
|
||||
}
|
||||
.wp-block-calendar table:where(:not(.has-text-color)) td,.wp-block-calendar table:where(:not(.has-text-color)) th{
|
||||
border-color:#ddd;
|
||||
}
|
||||
.wp-block-calendar table.has-background th{
|
||||
background-color:inherit;
|
||||
}
|
||||
.wp-block-calendar table.has-text-color th{
|
||||
color:inherit;
|
||||
}
|
||||
|
||||
:where(.wp-block-calendar table:not(.has-background) th){
|
||||
background:#ddd;
|
||||
}
|
||||
@@ -1,33 +1,33 @@
|
||||
.wp-block-calendar{
|
||||
text-align:center;
|
||||
}
|
||||
.wp-block-calendar td,.wp-block-calendar th{
|
||||
border:1px solid;
|
||||
padding:.25em;
|
||||
}
|
||||
.wp-block-calendar th{
|
||||
font-weight:400;
|
||||
}
|
||||
.wp-block-calendar caption{
|
||||
background-color:inherit;
|
||||
}
|
||||
.wp-block-calendar table{
|
||||
border-collapse:collapse;
|
||||
width:100%;
|
||||
}
|
||||
.wp-block-calendar table:where(:not(.has-text-color)){
|
||||
color:#40464d;
|
||||
}
|
||||
.wp-block-calendar table:where(:not(.has-text-color)) td,.wp-block-calendar table:where(:not(.has-text-color)) th{
|
||||
border-color:#ddd;
|
||||
}
|
||||
.wp-block-calendar table.has-background th{
|
||||
background-color:inherit;
|
||||
}
|
||||
.wp-block-calendar table.has-text-color th{
|
||||
color:inherit;
|
||||
}
|
||||
|
||||
:where(.wp-block-calendar table:not(.has-background) th){
|
||||
background:#ddd;
|
||||
.wp-block-calendar{
|
||||
text-align:center;
|
||||
}
|
||||
.wp-block-calendar td,.wp-block-calendar th{
|
||||
border:1px solid;
|
||||
padding:.25em;
|
||||
}
|
||||
.wp-block-calendar th{
|
||||
font-weight:400;
|
||||
}
|
||||
.wp-block-calendar caption{
|
||||
background-color:inherit;
|
||||
}
|
||||
.wp-block-calendar table{
|
||||
border-collapse:collapse;
|
||||
width:100%;
|
||||
}
|
||||
.wp-block-calendar table:where(:not(.has-text-color)){
|
||||
color:#40464d;
|
||||
}
|
||||
.wp-block-calendar table:where(:not(.has-text-color)) td,.wp-block-calendar table:where(:not(.has-text-color)) th{
|
||||
border-color:#ddd;
|
||||
}
|
||||
.wp-block-calendar table.has-background th{
|
||||
background-color:inherit;
|
||||
}
|
||||
.wp-block-calendar table.has-text-color th{
|
||||
color:inherit;
|
||||
}
|
||||
|
||||
:where(.wp-block-calendar table:not(.has-background) th){
|
||||
background:#ddd;
|
||||
}
|
||||
@@ -1,99 +1,99 @@
|
||||
<?php
|
||||
/**
|
||||
* Server-side rendering of the `core/categories` block.
|
||||
*
|
||||
* @package WordPress
|
||||
*/
|
||||
|
||||
/**
|
||||
* Renders the `core/categories` block on server.
|
||||
*
|
||||
* @param array $attributes The block attributes.
|
||||
*
|
||||
* @return string Returns the categories list/dropdown markup.
|
||||
*/
|
||||
function render_block_core_categories( $attributes ) {
|
||||
static $block_id = 0;
|
||||
++$block_id;
|
||||
|
||||
$args = array(
|
||||
'echo' => false,
|
||||
'hierarchical' => ! empty( $attributes['showHierarchy'] ),
|
||||
'orderby' => 'name',
|
||||
'show_count' => ! empty( $attributes['showPostCounts'] ),
|
||||
'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['show_option_none'] = __( 'Select Category' );
|
||||
$wrapper_markup = '<div %1$s><label class="screen-reader-text" for="' . esc_attr( $id ) . '">' . __( 'Categories' ) . '</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 {
|
||||
$wrapper_markup = '<ul %1$s>%2$s</ul>';
|
||||
$items_markup = wp_list_categories( $args );
|
||||
$type = 'list';
|
||||
}
|
||||
|
||||
$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.
|
||||
*
|
||||
* @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 > 0 ) {
|
||||
location.href = "<?php echo esc_url( home_url() ); ?>/?cat=" + 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.
|
||||
*/
|
||||
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' );
|
||||
<?php
|
||||
/**
|
||||
* Server-side rendering of the `core/categories` block.
|
||||
*
|
||||
* @package WordPress
|
||||
*/
|
||||
|
||||
/**
|
||||
* Renders the `core/categories` block on server.
|
||||
*
|
||||
* @param array $attributes The block attributes.
|
||||
*
|
||||
* @return string Returns the categories list/dropdown markup.
|
||||
*/
|
||||
function render_block_core_categories( $attributes ) {
|
||||
static $block_id = 0;
|
||||
++$block_id;
|
||||
|
||||
$args = array(
|
||||
'echo' => false,
|
||||
'hierarchical' => ! empty( $attributes['showHierarchy'] ),
|
||||
'orderby' => 'name',
|
||||
'show_count' => ! empty( $attributes['showPostCounts'] ),
|
||||
'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['show_option_none'] = __( 'Select Category' );
|
||||
$wrapper_markup = '<div %1$s><label class="screen-reader-text" for="' . esc_attr( $id ) . '">' . __( 'Categories' ) . '</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 {
|
||||
$wrapper_markup = '<ul %1$s>%2$s</ul>';
|
||||
$items_markup = wp_list_categories( $args );
|
||||
$type = 'list';
|
||||
}
|
||||
|
||||
$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.
|
||||
*
|
||||
* @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 > 0 ) {
|
||||
location.href = "<?php echo esc_url( home_url() ); ?>/?cat=" + 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.
|
||||
*/
|
||||
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' );
|
||||
|
||||
@@ -1,61 +1,61 @@
|
||||
{
|
||||
"$schema": "https://schemas.wp.org/trunk/block.json",
|
||||
"apiVersion": 3,
|
||||
"name": "core/categories",
|
||||
"title": "Categories List",
|
||||
"category": "widgets",
|
||||
"description": "Display a list of all categories.",
|
||||
"textdomain": "default",
|
||||
"attributes": {
|
||||
"displayAsDropdown": {
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
},
|
||||
"showHierarchy": {
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
},
|
||||
"showPostCounts": {
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
},
|
||||
"showOnlyTopLevel": {
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
},
|
||||
"showEmpty": {
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
}
|
||||
},
|
||||
"supports": {
|
||||
"align": true,
|
||||
"html": false,
|
||||
"spacing": {
|
||||
"margin": true,
|
||||
"padding": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"margin": false,
|
||||
"padding": false
|
||||
}
|
||||
},
|
||||
"typography": {
|
||||
"fontSize": true,
|
||||
"lineHeight": true,
|
||||
"__experimentalFontFamily": true,
|
||||
"__experimentalFontWeight": true,
|
||||
"__experimentalFontStyle": true,
|
||||
"__experimentalTextTransform": true,
|
||||
"__experimentalTextDecoration": true,
|
||||
"__experimentalLetterSpacing": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"fontSize": true
|
||||
}
|
||||
},
|
||||
"interactivity": {
|
||||
"clientNavigation": true
|
||||
}
|
||||
},
|
||||
"editorStyle": "wp-block-categories-editor",
|
||||
"style": "wp-block-categories"
|
||||
}
|
||||
{
|
||||
"$schema": "https://schemas.wp.org/trunk/block.json",
|
||||
"apiVersion": 3,
|
||||
"name": "core/categories",
|
||||
"title": "Categories List",
|
||||
"category": "widgets",
|
||||
"description": "Display a list of all categories.",
|
||||
"textdomain": "default",
|
||||
"attributes": {
|
||||
"displayAsDropdown": {
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
},
|
||||
"showHierarchy": {
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
},
|
||||
"showPostCounts": {
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
},
|
||||
"showOnlyTopLevel": {
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
},
|
||||
"showEmpty": {
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
}
|
||||
},
|
||||
"supports": {
|
||||
"align": true,
|
||||
"html": false,
|
||||
"spacing": {
|
||||
"margin": true,
|
||||
"padding": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"margin": false,
|
||||
"padding": false
|
||||
}
|
||||
},
|
||||
"typography": {
|
||||
"fontSize": true,
|
||||
"lineHeight": true,
|
||||
"__experimentalFontFamily": true,
|
||||
"__experimentalFontWeight": true,
|
||||
"__experimentalFontStyle": true,
|
||||
"__experimentalTextTransform": true,
|
||||
"__experimentalTextDecoration": true,
|
||||
"__experimentalLetterSpacing": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"fontSize": true
|
||||
}
|
||||
},
|
||||
"interactivity": {
|
||||
"clientNavigation": true
|
||||
}
|
||||
},
|
||||
"editorStyle": "wp-block-categories-editor",
|
||||
"style": "wp-block-categories"
|
||||
}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
.wp-block-categories ul{
|
||||
padding-right:2.5em;
|
||||
}
|
||||
.wp-block-categories ul ul{
|
||||
margin-top:6px;
|
||||
}
|
||||
[data-align=center] .wp-block-categories{
|
||||
text-align:center;
|
||||
.wp-block-categories ul{
|
||||
padding-right:2.5em;
|
||||
}
|
||||
.wp-block-categories ul ul{
|
||||
margin-top:6px;
|
||||
}
|
||||
[data-align=center] .wp-block-categories{
|
||||
text-align:center;
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
.wp-block-categories ul{
|
||||
padding-left:2.5em;
|
||||
}
|
||||
.wp-block-categories ul ul{
|
||||
margin-top:6px;
|
||||
}
|
||||
[data-align=center] .wp-block-categories{
|
||||
text-align:center;
|
||||
.wp-block-categories ul{
|
||||
padding-left:2.5em;
|
||||
}
|
||||
.wp-block-categories ul ul{
|
||||
margin-top:6px;
|
||||
}
|
||||
[data-align=center] .wp-block-categories{
|
||||
text-align:center;
|
||||
}
|
||||
@@ -1,12 +1,12 @@
|
||||
.wp-block-categories{
|
||||
box-sizing:border-box;
|
||||
}
|
||||
.wp-block-categories.alignleft{
|
||||
margin-right:2em;
|
||||
}
|
||||
.wp-block-categories.alignright{
|
||||
margin-left:2em;
|
||||
}
|
||||
.wp-block-categories.wp-block-categories-dropdown.aligncenter{
|
||||
text-align:center;
|
||||
.wp-block-categories{
|
||||
box-sizing:border-box;
|
||||
}
|
||||
.wp-block-categories.alignleft{
|
||||
margin-right:2em;
|
||||
}
|
||||
.wp-block-categories.alignright{
|
||||
margin-left:2em;
|
||||
}
|
||||
.wp-block-categories.wp-block-categories-dropdown.aligncenter{
|
||||
text-align:center;
|
||||
}
|
||||
@@ -1,12 +1,12 @@
|
||||
.wp-block-categories{
|
||||
box-sizing:border-box;
|
||||
}
|
||||
.wp-block-categories.alignleft{
|
||||
margin-right:2em;
|
||||
}
|
||||
.wp-block-categories.alignright{
|
||||
margin-left:2em;
|
||||
}
|
||||
.wp-block-categories.wp-block-categories-dropdown.aligncenter{
|
||||
text-align:center;
|
||||
.wp-block-categories{
|
||||
box-sizing:border-box;
|
||||
}
|
||||
.wp-block-categories.alignleft{
|
||||
margin-right:2em;
|
||||
}
|
||||
.wp-block-categories.alignright{
|
||||
margin-left:2em;
|
||||
}
|
||||
.wp-block-categories.wp-block-categories-dropdown.aligncenter{
|
||||
text-align:center;
|
||||
}
|
||||
@@ -1,65 +1,65 @@
|
||||
{
|
||||
"$schema": "https://schemas.wp.org/trunk/block.json",
|
||||
"apiVersion": 3,
|
||||
"name": "core/code",
|
||||
"title": "Code",
|
||||
"category": "text",
|
||||
"description": "Display code snippets that respect your spacing and tabs.",
|
||||
"textdomain": "default",
|
||||
"attributes": {
|
||||
"content": {
|
||||
"type": "rich-text",
|
||||
"source": "rich-text",
|
||||
"selector": "code",
|
||||
"__unstablePreserveWhiteSpace": true
|
||||
}
|
||||
},
|
||||
"supports": {
|
||||
"align": [ "wide" ],
|
||||
"anchor": true,
|
||||
"typography": {
|
||||
"fontSize": true,
|
||||
"lineHeight": true,
|
||||
"__experimentalFontFamily": true,
|
||||
"__experimentalFontWeight": true,
|
||||
"__experimentalFontStyle": true,
|
||||
"__experimentalTextTransform": true,
|
||||
"__experimentalTextDecoration": true,
|
||||
"__experimentalLetterSpacing": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"fontSize": true
|
||||
}
|
||||
},
|
||||
"spacing": {
|
||||
"margin": [ "top", "bottom" ],
|
||||
"padding": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"margin": false,
|
||||
"padding": false
|
||||
}
|
||||
},
|
||||
"__experimentalBorder": {
|
||||
"radius": true,
|
||||
"color": true,
|
||||
"width": true,
|
||||
"style": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"width": true,
|
||||
"color": true
|
||||
}
|
||||
},
|
||||
"color": {
|
||||
"text": true,
|
||||
"background": true,
|
||||
"gradients": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"background": true,
|
||||
"text": true
|
||||
}
|
||||
},
|
||||
"interactivity": {
|
||||
"clientNavigation": true
|
||||
}
|
||||
},
|
||||
"style": "wp-block-code"
|
||||
}
|
||||
{
|
||||
"$schema": "https://schemas.wp.org/trunk/block.json",
|
||||
"apiVersion": 3,
|
||||
"name": "core/code",
|
||||
"title": "Code",
|
||||
"category": "text",
|
||||
"description": "Display code snippets that respect your spacing and tabs.",
|
||||
"textdomain": "default",
|
||||
"attributes": {
|
||||
"content": {
|
||||
"type": "rich-text",
|
||||
"source": "rich-text",
|
||||
"selector": "code",
|
||||
"__unstablePreserveWhiteSpace": true
|
||||
}
|
||||
},
|
||||
"supports": {
|
||||
"align": [ "wide" ],
|
||||
"anchor": true,
|
||||
"typography": {
|
||||
"fontSize": true,
|
||||
"lineHeight": true,
|
||||
"__experimentalFontFamily": true,
|
||||
"__experimentalFontWeight": true,
|
||||
"__experimentalFontStyle": true,
|
||||
"__experimentalTextTransform": true,
|
||||
"__experimentalTextDecoration": true,
|
||||
"__experimentalLetterSpacing": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"fontSize": true
|
||||
}
|
||||
},
|
||||
"spacing": {
|
||||
"margin": [ "top", "bottom" ],
|
||||
"padding": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"margin": false,
|
||||
"padding": false
|
||||
}
|
||||
},
|
||||
"__experimentalBorder": {
|
||||
"radius": true,
|
||||
"color": true,
|
||||
"width": true,
|
||||
"style": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"width": true,
|
||||
"color": true
|
||||
}
|
||||
},
|
||||
"color": {
|
||||
"text": true,
|
||||
"background": true,
|
||||
"gradients": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"background": true,
|
||||
"text": true
|
||||
}
|
||||
},
|
||||
"interactivity": {
|
||||
"clientNavigation": true
|
||||
}
|
||||
},
|
||||
"style": "wp-block-code"
|
||||
}
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
.wp-block-code code{
|
||||
background:none;
|
||||
.wp-block-code code{
|
||||
background:none;
|
||||
}
|
||||
@@ -1,3 +1,3 @@
|
||||
.wp-block-code code{
|
||||
background:none;
|
||||
.wp-block-code code{
|
||||
background:none;
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
.wp-block-code{
|
||||
box-sizing:border-box;
|
||||
}
|
||||
.wp-block-code code{
|
||||
display:block;
|
||||
font-family:inherit;
|
||||
overflow-wrap:break-word;
|
||||
white-space:pre-wrap;
|
||||
.wp-block-code{
|
||||
box-sizing:border-box;
|
||||
}
|
||||
.wp-block-code code{
|
||||
display:block;
|
||||
font-family:inherit;
|
||||
overflow-wrap:break-word;
|
||||
white-space:pre-wrap;
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
.wp-block-code{
|
||||
box-sizing:border-box;
|
||||
}
|
||||
.wp-block-code code{
|
||||
display:block;
|
||||
font-family:inherit;
|
||||
overflow-wrap:break-word;
|
||||
white-space:pre-wrap;
|
||||
.wp-block-code{
|
||||
box-sizing:border-box;
|
||||
}
|
||||
.wp-block-code code{
|
||||
display:block;
|
||||
font-family:inherit;
|
||||
overflow-wrap:break-word;
|
||||
white-space:pre-wrap;
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
.wp-block-code{
|
||||
border:1px solid #ccc;
|
||||
border-radius:4px;
|
||||
font-family:Menlo,Consolas,monaco,monospace;
|
||||
padding:.8em 1em;
|
||||
.wp-block-code{
|
||||
border:1px solid #ccc;
|
||||
border-radius:4px;
|
||||
font-family:Menlo,Consolas,monaco,monospace;
|
||||
padding:.8em 1em;
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
.wp-block-code{
|
||||
border:1px solid #ccc;
|
||||
border-radius:4px;
|
||||
font-family:Menlo,Consolas,monaco,monospace;
|
||||
padding:.8em 1em;
|
||||
.wp-block-code{
|
||||
border:1px solid #ccc;
|
||||
border-radius:4px;
|
||||
font-family:Menlo,Consolas,monaco,monospace;
|
||||
padding:.8em 1em;
|
||||
}
|
||||
@@ -1,77 +1,77 @@
|
||||
{
|
||||
"$schema": "https://schemas.wp.org/trunk/block.json",
|
||||
"apiVersion": 3,
|
||||
"name": "core/column",
|
||||
"title": "Column",
|
||||
"category": "design",
|
||||
"parent": [ "core/columns" ],
|
||||
"description": "A single column within a columns block.",
|
||||
"textdomain": "default",
|
||||
"attributes": {
|
||||
"verticalAlignment": {
|
||||
"type": "string"
|
||||
},
|
||||
"width": {
|
||||
"type": "string"
|
||||
},
|
||||
"allowedBlocks": {
|
||||
"type": "array"
|
||||
},
|
||||
"templateLock": {
|
||||
"type": [ "string", "boolean" ],
|
||||
"enum": [ "all", "insert", "contentOnly", false ]
|
||||
}
|
||||
},
|
||||
"supports": {
|
||||
"__experimentalOnEnter": true,
|
||||
"anchor": true,
|
||||
"reusable": false,
|
||||
"html": false,
|
||||
"color": {
|
||||
"gradients": true,
|
||||
"heading": true,
|
||||
"button": true,
|
||||
"link": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"background": true,
|
||||
"text": true
|
||||
}
|
||||
},
|
||||
"shadow": true,
|
||||
"spacing": {
|
||||
"blockGap": true,
|
||||
"padding": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"padding": true,
|
||||
"blockGap": true
|
||||
}
|
||||
},
|
||||
"__experimentalBorder": {
|
||||
"color": true,
|
||||
"style": true,
|
||||
"width": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"color": true,
|
||||
"style": true,
|
||||
"width": true
|
||||
}
|
||||
},
|
||||
"typography": {
|
||||
"fontSize": true,
|
||||
"lineHeight": true,
|
||||
"__experimentalFontFamily": true,
|
||||
"__experimentalFontWeight": true,
|
||||
"__experimentalFontStyle": true,
|
||||
"__experimentalTextTransform": true,
|
||||
"__experimentalTextDecoration": true,
|
||||
"__experimentalLetterSpacing": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"fontSize": true
|
||||
}
|
||||
},
|
||||
"layout": true,
|
||||
"interactivity": {
|
||||
"clientNavigation": true
|
||||
}
|
||||
}
|
||||
}
|
||||
{
|
||||
"$schema": "https://schemas.wp.org/trunk/block.json",
|
||||
"apiVersion": 3,
|
||||
"name": "core/column",
|
||||
"title": "Column",
|
||||
"category": "design",
|
||||
"parent": [ "core/columns" ],
|
||||
"description": "A single column within a columns block.",
|
||||
"textdomain": "default",
|
||||
"attributes": {
|
||||
"verticalAlignment": {
|
||||
"type": "string"
|
||||
},
|
||||
"width": {
|
||||
"type": "string"
|
||||
},
|
||||
"allowedBlocks": {
|
||||
"type": "array"
|
||||
},
|
||||
"templateLock": {
|
||||
"type": [ "string", "boolean" ],
|
||||
"enum": [ "all", "insert", "contentOnly", false ]
|
||||
}
|
||||
},
|
||||
"supports": {
|
||||
"__experimentalOnEnter": true,
|
||||
"anchor": true,
|
||||
"reusable": false,
|
||||
"html": false,
|
||||
"color": {
|
||||
"gradients": true,
|
||||
"heading": true,
|
||||
"button": true,
|
||||
"link": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"background": true,
|
||||
"text": true
|
||||
}
|
||||
},
|
||||
"shadow": true,
|
||||
"spacing": {
|
||||
"blockGap": true,
|
||||
"padding": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"padding": true,
|
||||
"blockGap": true
|
||||
}
|
||||
},
|
||||
"__experimentalBorder": {
|
||||
"color": true,
|
||||
"style": true,
|
||||
"width": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"color": true,
|
||||
"style": true,
|
||||
"width": true
|
||||
}
|
||||
},
|
||||
"typography": {
|
||||
"fontSize": true,
|
||||
"lineHeight": true,
|
||||
"__experimentalFontFamily": true,
|
||||
"__experimentalFontWeight": true,
|
||||
"__experimentalFontStyle": true,
|
||||
"__experimentalTextTransform": true,
|
||||
"__experimentalTextDecoration": true,
|
||||
"__experimentalLetterSpacing": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"fontSize": true
|
||||
}
|
||||
},
|
||||
"layout": true,
|
||||
"interactivity": {
|
||||
"clientNavigation": true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,90 +1,90 @@
|
||||
{
|
||||
"$schema": "https://schemas.wp.org/trunk/block.json",
|
||||
"apiVersion": 3,
|
||||
"name": "core/columns",
|
||||
"title": "Columns",
|
||||
"category": "design",
|
||||
"allowedBlocks": [ "core/column" ],
|
||||
"description": "Display content in multiple columns, with blocks added to each column.",
|
||||
"textdomain": "default",
|
||||
"attributes": {
|
||||
"verticalAlignment": {
|
||||
"type": "string"
|
||||
},
|
||||
"isStackedOnMobile": {
|
||||
"type": "boolean",
|
||||
"default": true
|
||||
},
|
||||
"templateLock": {
|
||||
"type": [ "string", "boolean" ],
|
||||
"enum": [ "all", "insert", "contentOnly", false ]
|
||||
}
|
||||
},
|
||||
"supports": {
|
||||
"anchor": true,
|
||||
"align": [ "wide", "full" ],
|
||||
"html": false,
|
||||
"color": {
|
||||
"gradients": true,
|
||||
"link": true,
|
||||
"heading": true,
|
||||
"button": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"background": true,
|
||||
"text": true
|
||||
}
|
||||
},
|
||||
"spacing": {
|
||||
"blockGap": {
|
||||
"__experimentalDefault": "2em",
|
||||
"sides": [ "horizontal", "vertical" ]
|
||||
},
|
||||
"margin": [ "top", "bottom" ],
|
||||
"padding": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"padding": true,
|
||||
"blockGap": true
|
||||
}
|
||||
},
|
||||
"layout": {
|
||||
"allowSwitching": false,
|
||||
"allowInheriting": false,
|
||||
"allowEditing": false,
|
||||
"default": {
|
||||
"type": "flex",
|
||||
"flexWrap": "nowrap"
|
||||
}
|
||||
},
|
||||
"__experimentalBorder": {
|
||||
"color": true,
|
||||
"radius": true,
|
||||
"style": true,
|
||||
"width": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"color": true,
|
||||
"radius": true,
|
||||
"style": true,
|
||||
"width": true
|
||||
}
|
||||
},
|
||||
"typography": {
|
||||
"fontSize": true,
|
||||
"lineHeight": true,
|
||||
"__experimentalFontFamily": true,
|
||||
"__experimentalFontWeight": true,
|
||||
"__experimentalFontStyle": true,
|
||||
"__experimentalTextTransform": true,
|
||||
"__experimentalTextDecoration": true,
|
||||
"__experimentalLetterSpacing": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"fontSize": true
|
||||
}
|
||||
},
|
||||
"interactivity": {
|
||||
"clientNavigation": true
|
||||
},
|
||||
"shadow": true
|
||||
},
|
||||
"editorStyle": "wp-block-columns-editor",
|
||||
"style": "wp-block-columns"
|
||||
}
|
||||
{
|
||||
"$schema": "https://schemas.wp.org/trunk/block.json",
|
||||
"apiVersion": 3,
|
||||
"name": "core/columns",
|
||||
"title": "Columns",
|
||||
"category": "design",
|
||||
"allowedBlocks": [ "core/column" ],
|
||||
"description": "Display content in multiple columns, with blocks added to each column.",
|
||||
"textdomain": "default",
|
||||
"attributes": {
|
||||
"verticalAlignment": {
|
||||
"type": "string"
|
||||
},
|
||||
"isStackedOnMobile": {
|
||||
"type": "boolean",
|
||||
"default": true
|
||||
},
|
||||
"templateLock": {
|
||||
"type": [ "string", "boolean" ],
|
||||
"enum": [ "all", "insert", "contentOnly", false ]
|
||||
}
|
||||
},
|
||||
"supports": {
|
||||
"anchor": true,
|
||||
"align": [ "wide", "full" ],
|
||||
"html": false,
|
||||
"color": {
|
||||
"gradients": true,
|
||||
"link": true,
|
||||
"heading": true,
|
||||
"button": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"background": true,
|
||||
"text": true
|
||||
}
|
||||
},
|
||||
"spacing": {
|
||||
"blockGap": {
|
||||
"__experimentalDefault": "2em",
|
||||
"sides": [ "horizontal", "vertical" ]
|
||||
},
|
||||
"margin": [ "top", "bottom" ],
|
||||
"padding": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"padding": true,
|
||||
"blockGap": true
|
||||
}
|
||||
},
|
||||
"layout": {
|
||||
"allowSwitching": false,
|
||||
"allowInheriting": false,
|
||||
"allowEditing": false,
|
||||
"default": {
|
||||
"type": "flex",
|
||||
"flexWrap": "nowrap"
|
||||
}
|
||||
},
|
||||
"__experimentalBorder": {
|
||||
"color": true,
|
||||
"radius": true,
|
||||
"style": true,
|
||||
"width": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"color": true,
|
||||
"radius": true,
|
||||
"style": true,
|
||||
"width": true
|
||||
}
|
||||
},
|
||||
"typography": {
|
||||
"fontSize": true,
|
||||
"lineHeight": true,
|
||||
"__experimentalFontFamily": true,
|
||||
"__experimentalFontWeight": true,
|
||||
"__experimentalFontStyle": true,
|
||||
"__experimentalTextTransform": true,
|
||||
"__experimentalTextDecoration": true,
|
||||
"__experimentalLetterSpacing": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"fontSize": true
|
||||
}
|
||||
},
|
||||
"interactivity": {
|
||||
"clientNavigation": true
|
||||
},
|
||||
"shadow": true
|
||||
},
|
||||
"editorStyle": "wp-block-columns-editor",
|
||||
"style": "wp-block-columns"
|
||||
}
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
.wp-block-columns :where(.wp-block){
|
||||
margin-left:0;
|
||||
margin-right:0;
|
||||
max-width:none;
|
||||
}
|
||||
|
||||
html :where(.wp-block-column){
|
||||
margin-bottom:0;
|
||||
margin-top:0;
|
||||
.wp-block-columns :where(.wp-block){
|
||||
margin-left:0;
|
||||
margin-right:0;
|
||||
max-width:none;
|
||||
}
|
||||
|
||||
html :where(.wp-block-column){
|
||||
margin-bottom:0;
|
||||
margin-top:0;
|
||||
}
|
||||
@@ -1,10 +1,10 @@
|
||||
.wp-block-columns :where(.wp-block){
|
||||
margin-left:0;
|
||||
margin-right:0;
|
||||
max-width:none;
|
||||
}
|
||||
|
||||
html :where(.wp-block-column){
|
||||
margin-bottom:0;
|
||||
margin-top:0;
|
||||
.wp-block-columns :where(.wp-block){
|
||||
margin-left:0;
|
||||
margin-right:0;
|
||||
max-width:none;
|
||||
}
|
||||
|
||||
html :where(.wp-block-column){
|
||||
margin-bottom:0;
|
||||
margin-top:0;
|
||||
}
|
||||
@@ -1,74 +1,74 @@
|
||||
.wp-block-columns{
|
||||
align-items:normal !important;
|
||||
box-sizing:border-box;
|
||||
display:flex;
|
||||
flex-wrap:wrap !important;
|
||||
}
|
||||
@media (min-width:782px){
|
||||
.wp-block-columns{
|
||||
flex-wrap:nowrap !important;
|
||||
}
|
||||
}
|
||||
.wp-block-columns.are-vertically-aligned-top{
|
||||
align-items:flex-start;
|
||||
}
|
||||
.wp-block-columns.are-vertically-aligned-center{
|
||||
align-items:center;
|
||||
}
|
||||
.wp-block-columns.are-vertically-aligned-bottom{
|
||||
align-items:flex-end;
|
||||
}
|
||||
@media (max-width:781px){
|
||||
.wp-block-columns:not(.is-not-stacked-on-mobile)>.wp-block-column{
|
||||
flex-basis:100% !important;
|
||||
}
|
||||
}
|
||||
@media (min-width:782px){
|
||||
.wp-block-columns:not(.is-not-stacked-on-mobile)>.wp-block-column{
|
||||
flex-basis:0;
|
||||
flex-grow:1;
|
||||
}
|
||||
.wp-block-columns:not(.is-not-stacked-on-mobile)>.wp-block-column[style*=flex-basis]{
|
||||
flex-grow:0;
|
||||
}
|
||||
}
|
||||
.wp-block-columns.is-not-stacked-on-mobile{
|
||||
flex-wrap:nowrap !important;
|
||||
}
|
||||
.wp-block-columns.is-not-stacked-on-mobile>.wp-block-column{
|
||||
flex-basis:0;
|
||||
flex-grow:1;
|
||||
}
|
||||
.wp-block-columns.is-not-stacked-on-mobile>.wp-block-column[style*=flex-basis]{
|
||||
flex-grow:0;
|
||||
}
|
||||
|
||||
:where(.wp-block-columns){
|
||||
margin-bottom:1.75em;
|
||||
}
|
||||
|
||||
:where(.wp-block-columns.has-background){
|
||||
padding:1.25em 2.375em;
|
||||
}
|
||||
|
||||
.wp-block-column{
|
||||
flex-grow:1;
|
||||
min-width:0;
|
||||
overflow-wrap:break-word;
|
||||
word-break:break-word;
|
||||
}
|
||||
.wp-block-column.is-vertically-aligned-top{
|
||||
align-self:flex-start;
|
||||
}
|
||||
.wp-block-column.is-vertically-aligned-center{
|
||||
align-self:center;
|
||||
}
|
||||
.wp-block-column.is-vertically-aligned-bottom{
|
||||
align-self:flex-end;
|
||||
}
|
||||
.wp-block-column.is-vertically-aligned-stretch{
|
||||
align-self:stretch;
|
||||
}
|
||||
.wp-block-column.is-vertically-aligned-bottom,.wp-block-column.is-vertically-aligned-center,.wp-block-column.is-vertically-aligned-top{
|
||||
width:100%;
|
||||
.wp-block-columns{
|
||||
align-items:normal !important;
|
||||
box-sizing:border-box;
|
||||
display:flex;
|
||||
flex-wrap:wrap !important;
|
||||
}
|
||||
@media (min-width:782px){
|
||||
.wp-block-columns{
|
||||
flex-wrap:nowrap !important;
|
||||
}
|
||||
}
|
||||
.wp-block-columns.are-vertically-aligned-top{
|
||||
align-items:flex-start;
|
||||
}
|
||||
.wp-block-columns.are-vertically-aligned-center{
|
||||
align-items:center;
|
||||
}
|
||||
.wp-block-columns.are-vertically-aligned-bottom{
|
||||
align-items:flex-end;
|
||||
}
|
||||
@media (max-width:781px){
|
||||
.wp-block-columns:not(.is-not-stacked-on-mobile)>.wp-block-column{
|
||||
flex-basis:100% !important;
|
||||
}
|
||||
}
|
||||
@media (min-width:782px){
|
||||
.wp-block-columns:not(.is-not-stacked-on-mobile)>.wp-block-column{
|
||||
flex-basis:0;
|
||||
flex-grow:1;
|
||||
}
|
||||
.wp-block-columns:not(.is-not-stacked-on-mobile)>.wp-block-column[style*=flex-basis]{
|
||||
flex-grow:0;
|
||||
}
|
||||
}
|
||||
.wp-block-columns.is-not-stacked-on-mobile{
|
||||
flex-wrap:nowrap !important;
|
||||
}
|
||||
.wp-block-columns.is-not-stacked-on-mobile>.wp-block-column{
|
||||
flex-basis:0;
|
||||
flex-grow:1;
|
||||
}
|
||||
.wp-block-columns.is-not-stacked-on-mobile>.wp-block-column[style*=flex-basis]{
|
||||
flex-grow:0;
|
||||
}
|
||||
|
||||
:where(.wp-block-columns){
|
||||
margin-bottom:1.75em;
|
||||
}
|
||||
|
||||
:where(.wp-block-columns.has-background){
|
||||
padding:1.25em 2.375em;
|
||||
}
|
||||
|
||||
.wp-block-column{
|
||||
flex-grow:1;
|
||||
min-width:0;
|
||||
overflow-wrap:break-word;
|
||||
word-break:break-word;
|
||||
}
|
||||
.wp-block-column.is-vertically-aligned-top{
|
||||
align-self:flex-start;
|
||||
}
|
||||
.wp-block-column.is-vertically-aligned-center{
|
||||
align-self:center;
|
||||
}
|
||||
.wp-block-column.is-vertically-aligned-bottom{
|
||||
align-self:flex-end;
|
||||
}
|
||||
.wp-block-column.is-vertically-aligned-stretch{
|
||||
align-self:stretch;
|
||||
}
|
||||
.wp-block-column.is-vertically-aligned-bottom,.wp-block-column.is-vertically-aligned-center,.wp-block-column.is-vertically-aligned-top{
|
||||
width:100%;
|
||||
}
|
||||
@@ -1,74 +1,74 @@
|
||||
.wp-block-columns{
|
||||
align-items:normal !important;
|
||||
box-sizing:border-box;
|
||||
display:flex;
|
||||
flex-wrap:wrap !important;
|
||||
}
|
||||
@media (min-width:782px){
|
||||
.wp-block-columns{
|
||||
flex-wrap:nowrap !important;
|
||||
}
|
||||
}
|
||||
.wp-block-columns.are-vertically-aligned-top{
|
||||
align-items:flex-start;
|
||||
}
|
||||
.wp-block-columns.are-vertically-aligned-center{
|
||||
align-items:center;
|
||||
}
|
||||
.wp-block-columns.are-vertically-aligned-bottom{
|
||||
align-items:flex-end;
|
||||
}
|
||||
@media (max-width:781px){
|
||||
.wp-block-columns:not(.is-not-stacked-on-mobile)>.wp-block-column{
|
||||
flex-basis:100% !important;
|
||||
}
|
||||
}
|
||||
@media (min-width:782px){
|
||||
.wp-block-columns:not(.is-not-stacked-on-mobile)>.wp-block-column{
|
||||
flex-basis:0;
|
||||
flex-grow:1;
|
||||
}
|
||||
.wp-block-columns:not(.is-not-stacked-on-mobile)>.wp-block-column[style*=flex-basis]{
|
||||
flex-grow:0;
|
||||
}
|
||||
}
|
||||
.wp-block-columns.is-not-stacked-on-mobile{
|
||||
flex-wrap:nowrap !important;
|
||||
}
|
||||
.wp-block-columns.is-not-stacked-on-mobile>.wp-block-column{
|
||||
flex-basis:0;
|
||||
flex-grow:1;
|
||||
}
|
||||
.wp-block-columns.is-not-stacked-on-mobile>.wp-block-column[style*=flex-basis]{
|
||||
flex-grow:0;
|
||||
}
|
||||
|
||||
:where(.wp-block-columns){
|
||||
margin-bottom:1.75em;
|
||||
}
|
||||
|
||||
:where(.wp-block-columns.has-background){
|
||||
padding:1.25em 2.375em;
|
||||
}
|
||||
|
||||
.wp-block-column{
|
||||
flex-grow:1;
|
||||
min-width:0;
|
||||
overflow-wrap:break-word;
|
||||
word-break:break-word;
|
||||
}
|
||||
.wp-block-column.is-vertically-aligned-top{
|
||||
align-self:flex-start;
|
||||
}
|
||||
.wp-block-column.is-vertically-aligned-center{
|
||||
align-self:center;
|
||||
}
|
||||
.wp-block-column.is-vertically-aligned-bottom{
|
||||
align-self:flex-end;
|
||||
}
|
||||
.wp-block-column.is-vertically-aligned-stretch{
|
||||
align-self:stretch;
|
||||
}
|
||||
.wp-block-column.is-vertically-aligned-bottom,.wp-block-column.is-vertically-aligned-center,.wp-block-column.is-vertically-aligned-top{
|
||||
width:100%;
|
||||
.wp-block-columns{
|
||||
align-items:normal !important;
|
||||
box-sizing:border-box;
|
||||
display:flex;
|
||||
flex-wrap:wrap !important;
|
||||
}
|
||||
@media (min-width:782px){
|
||||
.wp-block-columns{
|
||||
flex-wrap:nowrap !important;
|
||||
}
|
||||
}
|
||||
.wp-block-columns.are-vertically-aligned-top{
|
||||
align-items:flex-start;
|
||||
}
|
||||
.wp-block-columns.are-vertically-aligned-center{
|
||||
align-items:center;
|
||||
}
|
||||
.wp-block-columns.are-vertically-aligned-bottom{
|
||||
align-items:flex-end;
|
||||
}
|
||||
@media (max-width:781px){
|
||||
.wp-block-columns:not(.is-not-stacked-on-mobile)>.wp-block-column{
|
||||
flex-basis:100% !important;
|
||||
}
|
||||
}
|
||||
@media (min-width:782px){
|
||||
.wp-block-columns:not(.is-not-stacked-on-mobile)>.wp-block-column{
|
||||
flex-basis:0;
|
||||
flex-grow:1;
|
||||
}
|
||||
.wp-block-columns:not(.is-not-stacked-on-mobile)>.wp-block-column[style*=flex-basis]{
|
||||
flex-grow:0;
|
||||
}
|
||||
}
|
||||
.wp-block-columns.is-not-stacked-on-mobile{
|
||||
flex-wrap:nowrap !important;
|
||||
}
|
||||
.wp-block-columns.is-not-stacked-on-mobile>.wp-block-column{
|
||||
flex-basis:0;
|
||||
flex-grow:1;
|
||||
}
|
||||
.wp-block-columns.is-not-stacked-on-mobile>.wp-block-column[style*=flex-basis]{
|
||||
flex-grow:0;
|
||||
}
|
||||
|
||||
:where(.wp-block-columns){
|
||||
margin-bottom:1.75em;
|
||||
}
|
||||
|
||||
:where(.wp-block-columns.has-background){
|
||||
padding:1.25em 2.375em;
|
||||
}
|
||||
|
||||
.wp-block-column{
|
||||
flex-grow:1;
|
||||
min-width:0;
|
||||
overflow-wrap:break-word;
|
||||
word-break:break-word;
|
||||
}
|
||||
.wp-block-column.is-vertically-aligned-top{
|
||||
align-self:flex-start;
|
||||
}
|
||||
.wp-block-column.is-vertically-aligned-center{
|
||||
align-self:center;
|
||||
}
|
||||
.wp-block-column.is-vertically-aligned-bottom{
|
||||
align-self:flex-end;
|
||||
}
|
||||
.wp-block-column.is-vertically-aligned-stretch{
|
||||
align-self:stretch;
|
||||
}
|
||||
.wp-block-column.is-vertically-aligned-bottom,.wp-block-column.is-vertically-aligned-center,.wp-block-column.is-vertically-aligned-top{
|
||||
width:100%;
|
||||
}
|
||||
@@ -1,65 +1,65 @@
|
||||
<?php
|
||||
/**
|
||||
* Server-side rendering of the `core/comment-author-name` block.
|
||||
*
|
||||
* @package WordPress
|
||||
*/
|
||||
|
||||
/**
|
||||
* Renders the `core/comment-author-name` block on the server.
|
||||
*
|
||||
* @param array $attributes Block attributes.
|
||||
* @param string $content Block default content.
|
||||
* @param WP_Block $block Block instance.
|
||||
* @return string Return the post comment's author.
|
||||
*/
|
||||
function render_block_core_comment_author_name( $attributes, $content, $block ) {
|
||||
if ( ! isset( $block->context['commentId'] ) ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$comment = get_comment( $block->context['commentId'] );
|
||||
$commenter = wp_get_current_commenter();
|
||||
$show_pending_links = isset( $commenter['comment_author'] ) && $commenter['comment_author'];
|
||||
if ( empty( $comment ) ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$classes = array();
|
||||
if ( isset( $attributes['textAlign'] ) ) {
|
||||
$classes[] = 'has-text-align-' . $attributes['textAlign'];
|
||||
}
|
||||
if ( isset( $attributes['style']['elements']['link']['color']['text'] ) ) {
|
||||
$classes[] = 'has-link-color';
|
||||
}
|
||||
|
||||
$wrapper_attributes = get_block_wrapper_attributes( array( 'class' => implode( ' ', $classes ) ) );
|
||||
$comment_author = get_comment_author( $comment );
|
||||
$link = get_comment_author_url( $comment );
|
||||
|
||||
if ( ! empty( $link ) && ! empty( $attributes['isLink'] ) && ! empty( $attributes['linkTarget'] ) ) {
|
||||
$comment_author = sprintf( '<a rel="external nofollow ugc" href="%1s" target="%2s" >%3s</a>', esc_url( $link ), esc_attr( $attributes['linkTarget'] ), $comment_author );
|
||||
}
|
||||
if ( '0' === $comment->comment_approved && ! $show_pending_links ) {
|
||||
$comment_author = wp_kses( $comment_author, array() );
|
||||
}
|
||||
|
||||
return sprintf(
|
||||
'<div %1$s>%2$s</div>',
|
||||
$wrapper_attributes,
|
||||
$comment_author
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers the `core/comment-author-name` block on the server.
|
||||
*/
|
||||
function register_block_core_comment_author_name() {
|
||||
register_block_type_from_metadata(
|
||||
__DIR__ . '/comment-author-name',
|
||||
array(
|
||||
'render_callback' => 'render_block_core_comment_author_name',
|
||||
)
|
||||
);
|
||||
}
|
||||
add_action( 'init', 'register_block_core_comment_author_name' );
|
||||
<?php
|
||||
/**
|
||||
* Server-side rendering of the `core/comment-author-name` block.
|
||||
*
|
||||
* @package WordPress
|
||||
*/
|
||||
|
||||
/**
|
||||
* Renders the `core/comment-author-name` block on the server.
|
||||
*
|
||||
* @param array $attributes Block attributes.
|
||||
* @param string $content Block default content.
|
||||
* @param WP_Block $block Block instance.
|
||||
* @return string Return the post comment's author.
|
||||
*/
|
||||
function render_block_core_comment_author_name( $attributes, $content, $block ) {
|
||||
if ( ! isset( $block->context['commentId'] ) ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$comment = get_comment( $block->context['commentId'] );
|
||||
$commenter = wp_get_current_commenter();
|
||||
$show_pending_links = isset( $commenter['comment_author'] ) && $commenter['comment_author'];
|
||||
if ( empty( $comment ) ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$classes = array();
|
||||
if ( isset( $attributes['textAlign'] ) ) {
|
||||
$classes[] = 'has-text-align-' . $attributes['textAlign'];
|
||||
}
|
||||
if ( isset( $attributes['style']['elements']['link']['color']['text'] ) ) {
|
||||
$classes[] = 'has-link-color';
|
||||
}
|
||||
|
||||
$wrapper_attributes = get_block_wrapper_attributes( array( 'class' => implode( ' ', $classes ) ) );
|
||||
$comment_author = get_comment_author( $comment );
|
||||
$link = get_comment_author_url( $comment );
|
||||
|
||||
if ( ! empty( $link ) && ! empty( $attributes['isLink'] ) && ! empty( $attributes['linkTarget'] ) ) {
|
||||
$comment_author = sprintf( '<a rel="external nofollow ugc" href="%1s" target="%2s" >%3s</a>', esc_url( $link ), esc_attr( $attributes['linkTarget'] ), $comment_author );
|
||||
}
|
||||
if ( '0' === $comment->comment_approved && ! $show_pending_links ) {
|
||||
$comment_author = wp_kses( $comment_author, array() );
|
||||
}
|
||||
|
||||
return sprintf(
|
||||
'<div %1$s>%2$s</div>',
|
||||
$wrapper_attributes,
|
||||
$comment_author
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers the `core/comment-author-name` block on the server.
|
||||
*/
|
||||
function register_block_core_comment_author_name() {
|
||||
register_block_type_from_metadata(
|
||||
__DIR__ . '/comment-author-name',
|
||||
array(
|
||||
'render_callback' => 'render_block_core_comment_author_name',
|
||||
)
|
||||
);
|
||||
}
|
||||
add_action( 'init', 'register_block_core_comment_author_name' );
|
||||
|
||||
@@ -1,56 +1,56 @@
|
||||
{
|
||||
"$schema": "https://schemas.wp.org/trunk/block.json",
|
||||
"apiVersion": 3,
|
||||
"name": "core/comment-author-name",
|
||||
"title": "Comment Author Name",
|
||||
"category": "theme",
|
||||
"ancestor": [ "core/comment-template" ],
|
||||
"description": "Displays the name of the author of the comment.",
|
||||
"textdomain": "default",
|
||||
"attributes": {
|
||||
"isLink": {
|
||||
"type": "boolean",
|
||||
"default": true
|
||||
},
|
||||
"linkTarget": {
|
||||
"type": "string",
|
||||
"default": "_self"
|
||||
},
|
||||
"textAlign": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"usesContext": [ "commentId" ],
|
||||
"supports": {
|
||||
"html": false,
|
||||
"spacing": {
|
||||
"margin": true,
|
||||
"padding": true
|
||||
},
|
||||
"color": {
|
||||
"gradients": true,
|
||||
"link": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"background": true,
|
||||
"text": true,
|
||||
"link": true
|
||||
}
|
||||
},
|
||||
"typography": {
|
||||
"fontSize": true,
|
||||
"lineHeight": true,
|
||||
"__experimentalFontFamily": true,
|
||||
"__experimentalFontWeight": true,
|
||||
"__experimentalFontStyle": true,
|
||||
"__experimentalTextTransform": true,
|
||||
"__experimentalTextDecoration": true,
|
||||
"__experimentalLetterSpacing": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"fontSize": true
|
||||
}
|
||||
},
|
||||
"interactivity": {
|
||||
"clientNavigation": true
|
||||
}
|
||||
}
|
||||
}
|
||||
{
|
||||
"$schema": "https://schemas.wp.org/trunk/block.json",
|
||||
"apiVersion": 3,
|
||||
"name": "core/comment-author-name",
|
||||
"title": "Comment Author Name",
|
||||
"category": "theme",
|
||||
"ancestor": [ "core/comment-template" ],
|
||||
"description": "Displays the name of the author of the comment.",
|
||||
"textdomain": "default",
|
||||
"attributes": {
|
||||
"isLink": {
|
||||
"type": "boolean",
|
||||
"default": true
|
||||
},
|
||||
"linkTarget": {
|
||||
"type": "string",
|
||||
"default": "_self"
|
||||
},
|
||||
"textAlign": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"usesContext": [ "commentId" ],
|
||||
"supports": {
|
||||
"html": false,
|
||||
"spacing": {
|
||||
"margin": true,
|
||||
"padding": true
|
||||
},
|
||||
"color": {
|
||||
"gradients": true,
|
||||
"link": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"background": true,
|
||||
"text": true,
|
||||
"link": true
|
||||
}
|
||||
},
|
||||
"typography": {
|
||||
"fontSize": true,
|
||||
"lineHeight": true,
|
||||
"__experimentalFontFamily": true,
|
||||
"__experimentalFontWeight": true,
|
||||
"__experimentalFontStyle": true,
|
||||
"__experimentalTextTransform": true,
|
||||
"__experimentalTextDecoration": true,
|
||||
"__experimentalLetterSpacing": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"fontSize": true
|
||||
}
|
||||
},
|
||||
"interactivity": {
|
||||
"clientNavigation": true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,81 +1,81 @@
|
||||
<?php
|
||||
/**
|
||||
* Server-side rendering of the `core/comment-content` block.
|
||||
*
|
||||
* @package WordPress
|
||||
*/
|
||||
|
||||
/**
|
||||
* Renders the `core/comment-content` block on the server.
|
||||
*
|
||||
* @param array $attributes Block attributes.
|
||||
* @param string $content Block default content.
|
||||
* @param WP_Block $block Block instance.
|
||||
* @return string Return the post comment's content.
|
||||
*/
|
||||
function render_block_core_comment_content( $attributes, $content, $block ) {
|
||||
if ( ! isset( $block->context['commentId'] ) ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$comment = get_comment( $block->context['commentId'] );
|
||||
$commenter = wp_get_current_commenter();
|
||||
$show_pending_links = isset( $commenter['comment_author'] ) && $commenter['comment_author'];
|
||||
if ( empty( $comment ) ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$args = array();
|
||||
$comment_text = get_comment_text( $comment, $args );
|
||||
if ( ! $comment_text ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
/** This filter is documented in wp-includes/comment-template.php */
|
||||
$comment_text = apply_filters( 'comment_text', $comment_text, $comment, $args );
|
||||
|
||||
$moderation_note = '';
|
||||
if ( '0' === $comment->comment_approved ) {
|
||||
$commenter = wp_get_current_commenter();
|
||||
|
||||
if ( $commenter['comment_author_email'] ) {
|
||||
$moderation_note = __( 'Your comment is awaiting moderation.' );
|
||||
} else {
|
||||
$moderation_note = __( 'Your comment is awaiting moderation. This is a preview; your comment will be visible after it has been approved.' );
|
||||
}
|
||||
$moderation_note = '<p><em class="comment-awaiting-moderation">' . $moderation_note . '</em></p>';
|
||||
if ( ! $show_pending_links ) {
|
||||
$comment_text = wp_kses( $comment_text, array() );
|
||||
}
|
||||
}
|
||||
|
||||
$classes = array();
|
||||
if ( isset( $attributes['textAlign'] ) ) {
|
||||
$classes[] = 'has-text-align-' . $attributes['textAlign'];
|
||||
}
|
||||
if ( isset( $attributes['style']['elements']['link']['color']['text'] ) ) {
|
||||
$classes[] = 'has-link-color';
|
||||
}
|
||||
|
||||
$wrapper_attributes = get_block_wrapper_attributes( array( 'class' => implode( ' ', $classes ) ) );
|
||||
|
||||
return sprintf(
|
||||
'<div %1$s>%2$s%3$s</div>',
|
||||
$wrapper_attributes,
|
||||
$moderation_note,
|
||||
$comment_text
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers the `core/comment-content` block on the server.
|
||||
*/
|
||||
function register_block_core_comment_content() {
|
||||
register_block_type_from_metadata(
|
||||
__DIR__ . '/comment-content',
|
||||
array(
|
||||
'render_callback' => 'render_block_core_comment_content',
|
||||
)
|
||||
);
|
||||
}
|
||||
add_action( 'init', 'register_block_core_comment_content' );
|
||||
<?php
|
||||
/**
|
||||
* Server-side rendering of the `core/comment-content` block.
|
||||
*
|
||||
* @package WordPress
|
||||
*/
|
||||
|
||||
/**
|
||||
* Renders the `core/comment-content` block on the server.
|
||||
*
|
||||
* @param array $attributes Block attributes.
|
||||
* @param string $content Block default content.
|
||||
* @param WP_Block $block Block instance.
|
||||
* @return string Return the post comment's content.
|
||||
*/
|
||||
function render_block_core_comment_content( $attributes, $content, $block ) {
|
||||
if ( ! isset( $block->context['commentId'] ) ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$comment = get_comment( $block->context['commentId'] );
|
||||
$commenter = wp_get_current_commenter();
|
||||
$show_pending_links = isset( $commenter['comment_author'] ) && $commenter['comment_author'];
|
||||
if ( empty( $comment ) ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$args = array();
|
||||
$comment_text = get_comment_text( $comment, $args );
|
||||
if ( ! $comment_text ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
/** This filter is documented in wp-includes/comment-template.php */
|
||||
$comment_text = apply_filters( 'comment_text', $comment_text, $comment, $args );
|
||||
|
||||
$moderation_note = '';
|
||||
if ( '0' === $comment->comment_approved ) {
|
||||
$commenter = wp_get_current_commenter();
|
||||
|
||||
if ( $commenter['comment_author_email'] ) {
|
||||
$moderation_note = __( 'Your comment is awaiting moderation.' );
|
||||
} else {
|
||||
$moderation_note = __( 'Your comment is awaiting moderation. This is a preview; your comment will be visible after it has been approved.' );
|
||||
}
|
||||
$moderation_note = '<p><em class="comment-awaiting-moderation">' . $moderation_note . '</em></p>';
|
||||
if ( ! $show_pending_links ) {
|
||||
$comment_text = wp_kses( $comment_text, array() );
|
||||
}
|
||||
}
|
||||
|
||||
$classes = array();
|
||||
if ( isset( $attributes['textAlign'] ) ) {
|
||||
$classes[] = 'has-text-align-' . $attributes['textAlign'];
|
||||
}
|
||||
if ( isset( $attributes['style']['elements']['link']['color']['text'] ) ) {
|
||||
$classes[] = 'has-link-color';
|
||||
}
|
||||
|
||||
$wrapper_attributes = get_block_wrapper_attributes( array( 'class' => implode( ' ', $classes ) ) );
|
||||
|
||||
return sprintf(
|
||||
'<div %1$s>%2$s%3$s</div>',
|
||||
$wrapper_attributes,
|
||||
$moderation_note,
|
||||
$comment_text
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers the `core/comment-content` block on the server.
|
||||
*/
|
||||
function register_block_core_comment_content() {
|
||||
register_block_type_from_metadata(
|
||||
__DIR__ . '/comment-content',
|
||||
array(
|
||||
'render_callback' => 'render_block_core_comment_content',
|
||||
)
|
||||
);
|
||||
}
|
||||
add_action( 'init', 'register_block_core_comment_content' );
|
||||
|
||||
@@ -1,46 +1,46 @@
|
||||
{
|
||||
"$schema": "https://schemas.wp.org/trunk/block.json",
|
||||
"apiVersion": 3,
|
||||
"name": "core/comment-content",
|
||||
"title": "Comment Content",
|
||||
"category": "theme",
|
||||
"ancestor": [ "core/comment-template" ],
|
||||
"description": "Displays the contents of a comment.",
|
||||
"textdomain": "default",
|
||||
"usesContext": [ "commentId" ],
|
||||
"attributes": {
|
||||
"textAlign": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"supports": {
|
||||
"color": {
|
||||
"gradients": true,
|
||||
"link": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"background": true,
|
||||
"text": true
|
||||
}
|
||||
},
|
||||
"typography": {
|
||||
"fontSize": true,
|
||||
"lineHeight": true,
|
||||
"__experimentalFontFamily": true,
|
||||
"__experimentalFontWeight": true,
|
||||
"__experimentalFontStyle": true,
|
||||
"__experimentalTextTransform": true,
|
||||
"__experimentalTextDecoration": true,
|
||||
"__experimentalLetterSpacing": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"fontSize": true
|
||||
}
|
||||
},
|
||||
"spacing": {
|
||||
"padding": [ "horizontal", "vertical" ],
|
||||
"__experimentalDefaultControls": {
|
||||
"padding": true
|
||||
}
|
||||
},
|
||||
"html": false
|
||||
}
|
||||
}
|
||||
{
|
||||
"$schema": "https://schemas.wp.org/trunk/block.json",
|
||||
"apiVersion": 3,
|
||||
"name": "core/comment-content",
|
||||
"title": "Comment Content",
|
||||
"category": "theme",
|
||||
"ancestor": [ "core/comment-template" ],
|
||||
"description": "Displays the contents of a comment.",
|
||||
"textdomain": "default",
|
||||
"usesContext": [ "commentId" ],
|
||||
"attributes": {
|
||||
"textAlign": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"supports": {
|
||||
"color": {
|
||||
"gradients": true,
|
||||
"link": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"background": true,
|
||||
"text": true
|
||||
}
|
||||
},
|
||||
"typography": {
|
||||
"fontSize": true,
|
||||
"lineHeight": true,
|
||||
"__experimentalFontFamily": true,
|
||||
"__experimentalFontWeight": true,
|
||||
"__experimentalFontStyle": true,
|
||||
"__experimentalTextTransform": true,
|
||||
"__experimentalTextDecoration": true,
|
||||
"__experimentalLetterSpacing": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"fontSize": true
|
||||
}
|
||||
},
|
||||
"spacing": {
|
||||
"padding": [ "horizontal", "vertical" ],
|
||||
"__experimentalDefaultControls": {
|
||||
"padding": true
|
||||
}
|
||||
},
|
||||
"html": false
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
.comment-awaiting-moderation{
|
||||
display:block;
|
||||
font-size:.875em;
|
||||
line-height:1.5;
|
||||
.comment-awaiting-moderation{
|
||||
display:block;
|
||||
font-size:.875em;
|
||||
line-height:1.5;
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
.comment-awaiting-moderation{
|
||||
display:block;
|
||||
font-size:.875em;
|
||||
line-height:1.5;
|
||||
.comment-awaiting-moderation{
|
||||
display:block;
|
||||
font-size:.875em;
|
||||
line-height:1.5;
|
||||
}
|
||||
@@ -1,58 +1,58 @@
|
||||
<?php
|
||||
/**
|
||||
* Server-side rendering of the `core/comment-date` block.
|
||||
*
|
||||
* @package WordPress
|
||||
*/
|
||||
|
||||
/**
|
||||
* Renders the `core/comment-date` block on the server.
|
||||
*
|
||||
* @param array $attributes Block attributes.
|
||||
* @param string $content Block default content.
|
||||
* @param WP_Block $block Block instance.
|
||||
* @return string Return the post comment's date.
|
||||
*/
|
||||
function render_block_core_comment_date( $attributes, $content, $block ) {
|
||||
if ( ! isset( $block->context['commentId'] ) ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$comment = get_comment( $block->context['commentId'] );
|
||||
if ( empty( $comment ) ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$classes = ( isset( $attributes['style']['elements']['link']['color']['text'] ) ) ? 'has-link-color' : '';
|
||||
|
||||
$wrapper_attributes = get_block_wrapper_attributes( array( 'class' => $classes ) );
|
||||
$formatted_date = get_comment_date(
|
||||
isset( $attributes['format'] ) ? $attributes['format'] : '',
|
||||
$comment
|
||||
);
|
||||
$link = get_comment_link( $comment );
|
||||
|
||||
if ( ! empty( $attributes['isLink'] ) ) {
|
||||
$formatted_date = sprintf( '<a href="%1s">%2s</a>', esc_url( $link ), $formatted_date );
|
||||
}
|
||||
|
||||
return sprintf(
|
||||
'<div %1$s><time datetime="%2$s">%3$s</time></div>',
|
||||
$wrapper_attributes,
|
||||
esc_attr( get_comment_date( 'c', $comment ) ),
|
||||
$formatted_date
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers the `core/comment-date` block on the server.
|
||||
*/
|
||||
function register_block_core_comment_date() {
|
||||
register_block_type_from_metadata(
|
||||
__DIR__ . '/comment-date',
|
||||
array(
|
||||
'render_callback' => 'render_block_core_comment_date',
|
||||
)
|
||||
);
|
||||
}
|
||||
add_action( 'init', 'register_block_core_comment_date' );
|
||||
<?php
|
||||
/**
|
||||
* Server-side rendering of the `core/comment-date` block.
|
||||
*
|
||||
* @package WordPress
|
||||
*/
|
||||
|
||||
/**
|
||||
* Renders the `core/comment-date` block on the server.
|
||||
*
|
||||
* @param array $attributes Block attributes.
|
||||
* @param string $content Block default content.
|
||||
* @param WP_Block $block Block instance.
|
||||
* @return string Return the post comment's date.
|
||||
*/
|
||||
function render_block_core_comment_date( $attributes, $content, $block ) {
|
||||
if ( ! isset( $block->context['commentId'] ) ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$comment = get_comment( $block->context['commentId'] );
|
||||
if ( empty( $comment ) ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$classes = ( isset( $attributes['style']['elements']['link']['color']['text'] ) ) ? 'has-link-color' : '';
|
||||
|
||||
$wrapper_attributes = get_block_wrapper_attributes( array( 'class' => $classes ) );
|
||||
$formatted_date = get_comment_date(
|
||||
isset( $attributes['format'] ) ? $attributes['format'] : '',
|
||||
$comment
|
||||
);
|
||||
$link = get_comment_link( $comment );
|
||||
|
||||
if ( ! empty( $attributes['isLink'] ) ) {
|
||||
$formatted_date = sprintf( '<a href="%1s">%2s</a>', esc_url( $link ), $formatted_date );
|
||||
}
|
||||
|
||||
return sprintf(
|
||||
'<div %1$s><time datetime="%2$s">%3$s</time></div>',
|
||||
$wrapper_attributes,
|
||||
esc_attr( get_comment_date( 'c', $comment ) ),
|
||||
$formatted_date
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers the `core/comment-date` block on the server.
|
||||
*/
|
||||
function register_block_core_comment_date() {
|
||||
register_block_type_from_metadata(
|
||||
__DIR__ . '/comment-date',
|
||||
array(
|
||||
'render_callback' => 'render_block_core_comment_date',
|
||||
)
|
||||
);
|
||||
}
|
||||
add_action( 'init', 'register_block_core_comment_date' );
|
||||
|
||||
@@ -1,52 +1,52 @@
|
||||
{
|
||||
"$schema": "https://schemas.wp.org/trunk/block.json",
|
||||
"apiVersion": 3,
|
||||
"name": "core/comment-date",
|
||||
"title": "Comment Date",
|
||||
"category": "theme",
|
||||
"ancestor": [ "core/comment-template" ],
|
||||
"description": "Displays the date on which the comment was posted.",
|
||||
"textdomain": "default",
|
||||
"attributes": {
|
||||
"format": {
|
||||
"type": "string"
|
||||
},
|
||||
"isLink": {
|
||||
"type": "boolean",
|
||||
"default": true
|
||||
}
|
||||
},
|
||||
"usesContext": [ "commentId" ],
|
||||
"supports": {
|
||||
"html": false,
|
||||
"color": {
|
||||
"gradients": true,
|
||||
"link": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"background": true,
|
||||
"text": true,
|
||||
"link": true
|
||||
}
|
||||
},
|
||||
"spacing": {
|
||||
"margin": true,
|
||||
"padding": true
|
||||
},
|
||||
"typography": {
|
||||
"fontSize": true,
|
||||
"lineHeight": true,
|
||||
"__experimentalFontFamily": true,
|
||||
"__experimentalFontWeight": true,
|
||||
"__experimentalFontStyle": true,
|
||||
"__experimentalTextTransform": true,
|
||||
"__experimentalTextDecoration": true,
|
||||
"__experimentalLetterSpacing": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"fontSize": true
|
||||
}
|
||||
},
|
||||
"interactivity": {
|
||||
"clientNavigation": true
|
||||
}
|
||||
}
|
||||
}
|
||||
{
|
||||
"$schema": "https://schemas.wp.org/trunk/block.json",
|
||||
"apiVersion": 3,
|
||||
"name": "core/comment-date",
|
||||
"title": "Comment Date",
|
||||
"category": "theme",
|
||||
"ancestor": [ "core/comment-template" ],
|
||||
"description": "Displays the date on which the comment was posted.",
|
||||
"textdomain": "default",
|
||||
"attributes": {
|
||||
"format": {
|
||||
"type": "string"
|
||||
},
|
||||
"isLink": {
|
||||
"type": "boolean",
|
||||
"default": true
|
||||
}
|
||||
},
|
||||
"usesContext": [ "commentId" ],
|
||||
"supports": {
|
||||
"html": false,
|
||||
"color": {
|
||||
"gradients": true,
|
||||
"link": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"background": true,
|
||||
"text": true,
|
||||
"link": true
|
||||
}
|
||||
},
|
||||
"spacing": {
|
||||
"margin": true,
|
||||
"padding": true
|
||||
},
|
||||
"typography": {
|
||||
"fontSize": true,
|
||||
"lineHeight": true,
|
||||
"__experimentalFontFamily": true,
|
||||
"__experimentalFontWeight": true,
|
||||
"__experimentalFontStyle": true,
|
||||
"__experimentalTextTransform": true,
|
||||
"__experimentalTextDecoration": true,
|
||||
"__experimentalLetterSpacing": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"fontSize": true
|
||||
}
|
||||
},
|
||||
"interactivity": {
|
||||
"clientNavigation": true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,61 +1,61 @@
|
||||
<?php
|
||||
/**
|
||||
* Server-side rendering of the `core/comment-edit-link` block.
|
||||
*
|
||||
* @package WordPress
|
||||
*/
|
||||
|
||||
/**
|
||||
* Renders the `core/comment-edit-link` block on the server.
|
||||
*
|
||||
* @param array $attributes Block attributes.
|
||||
* @param string $content Block default content.
|
||||
* @param WP_Block $block Block instance.
|
||||
*
|
||||
* @return string Return the post comment's date.
|
||||
*/
|
||||
function render_block_core_comment_edit_link( $attributes, $content, $block ) {
|
||||
if ( ! isset( $block->context['commentId'] ) || ! current_user_can( 'edit_comment', $block->context['commentId'] ) ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$edit_comment_link = get_edit_comment_link( $block->context['commentId'] );
|
||||
|
||||
$link_atts = '';
|
||||
|
||||
if ( ! empty( $attributes['linkTarget'] ) ) {
|
||||
$link_atts .= sprintf( 'target="%s"', esc_attr( $attributes['linkTarget'] ) );
|
||||
}
|
||||
|
||||
$classes = array();
|
||||
if ( isset( $attributes['textAlign'] ) ) {
|
||||
$classes[] = 'has-text-align-' . $attributes['textAlign'];
|
||||
}
|
||||
if ( isset( $attributes['style']['elements']['link']['color']['text'] ) ) {
|
||||
$classes[] = 'has-link-color';
|
||||
}
|
||||
|
||||
$wrapper_attributes = get_block_wrapper_attributes( array( 'class' => implode( ' ', $classes ) ) );
|
||||
|
||||
return sprintf(
|
||||
'<div %1$s><a href="%2$s" %3$s>%4$s</a></div>',
|
||||
$wrapper_attributes,
|
||||
esc_url( $edit_comment_link ),
|
||||
$link_atts,
|
||||
esc_html__( 'Edit' )
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers the `core/comment-edit-link` block on the server.
|
||||
*/
|
||||
function register_block_core_comment_edit_link() {
|
||||
register_block_type_from_metadata(
|
||||
__DIR__ . '/comment-edit-link',
|
||||
array(
|
||||
'render_callback' => 'render_block_core_comment_edit_link',
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
add_action( 'init', 'register_block_core_comment_edit_link' );
|
||||
<?php
|
||||
/**
|
||||
* Server-side rendering of the `core/comment-edit-link` block.
|
||||
*
|
||||
* @package WordPress
|
||||
*/
|
||||
|
||||
/**
|
||||
* Renders the `core/comment-edit-link` block on the server.
|
||||
*
|
||||
* @param array $attributes Block attributes.
|
||||
* @param string $content Block default content.
|
||||
* @param WP_Block $block Block instance.
|
||||
*
|
||||
* @return string Return the post comment's date.
|
||||
*/
|
||||
function render_block_core_comment_edit_link( $attributes, $content, $block ) {
|
||||
if ( ! isset( $block->context['commentId'] ) || ! current_user_can( 'edit_comment', $block->context['commentId'] ) ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$edit_comment_link = get_edit_comment_link( $block->context['commentId'] );
|
||||
|
||||
$link_atts = '';
|
||||
|
||||
if ( ! empty( $attributes['linkTarget'] ) ) {
|
||||
$link_atts .= sprintf( 'target="%s"', esc_attr( $attributes['linkTarget'] ) );
|
||||
}
|
||||
|
||||
$classes = array();
|
||||
if ( isset( $attributes['textAlign'] ) ) {
|
||||
$classes[] = 'has-text-align-' . $attributes['textAlign'];
|
||||
}
|
||||
if ( isset( $attributes['style']['elements']['link']['color']['text'] ) ) {
|
||||
$classes[] = 'has-link-color';
|
||||
}
|
||||
|
||||
$wrapper_attributes = get_block_wrapper_attributes( array( 'class' => implode( ' ', $classes ) ) );
|
||||
|
||||
return sprintf(
|
||||
'<div %1$s><a href="%2$s" %3$s>%4$s</a></div>',
|
||||
$wrapper_attributes,
|
||||
esc_url( $edit_comment_link ),
|
||||
$link_atts,
|
||||
esc_html__( 'Edit' )
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers the `core/comment-edit-link` block on the server.
|
||||
*/
|
||||
function register_block_core_comment_edit_link() {
|
||||
register_block_type_from_metadata(
|
||||
__DIR__ . '/comment-edit-link',
|
||||
array(
|
||||
'render_callback' => 'render_block_core_comment_edit_link',
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
add_action( 'init', 'register_block_core_comment_edit_link' );
|
||||
|
||||
@@ -1,52 +1,52 @@
|
||||
{
|
||||
"$schema": "https://schemas.wp.org/trunk/block.json",
|
||||
"apiVersion": 3,
|
||||
"name": "core/comment-edit-link",
|
||||
"title": "Comment Edit Link",
|
||||
"category": "theme",
|
||||
"ancestor": [ "core/comment-template" ],
|
||||
"description": "Displays a link to edit the comment in the WordPress Dashboard. This link is only visible to users with the edit comment capability.",
|
||||
"textdomain": "default",
|
||||
"usesContext": [ "commentId" ],
|
||||
"attributes": {
|
||||
"linkTarget": {
|
||||
"type": "string",
|
||||
"default": "_self"
|
||||
},
|
||||
"textAlign": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"supports": {
|
||||
"html": false,
|
||||
"color": {
|
||||
"link": true,
|
||||
"gradients": true,
|
||||
"text": false,
|
||||
"__experimentalDefaultControls": {
|
||||
"background": true,
|
||||
"link": true
|
||||
}
|
||||
},
|
||||
"spacing": {
|
||||
"margin": true,
|
||||
"padding": true
|
||||
},
|
||||
"typography": {
|
||||
"fontSize": true,
|
||||
"lineHeight": true,
|
||||
"__experimentalFontFamily": true,
|
||||
"__experimentalFontWeight": true,
|
||||
"__experimentalFontStyle": true,
|
||||
"__experimentalTextTransform": true,
|
||||
"__experimentalTextDecoration": true,
|
||||
"__experimentalLetterSpacing": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"fontSize": true
|
||||
}
|
||||
},
|
||||
"interactivity": {
|
||||
"clientNavigation": true
|
||||
}
|
||||
}
|
||||
}
|
||||
{
|
||||
"$schema": "https://schemas.wp.org/trunk/block.json",
|
||||
"apiVersion": 3,
|
||||
"name": "core/comment-edit-link",
|
||||
"title": "Comment Edit Link",
|
||||
"category": "theme",
|
||||
"ancestor": [ "core/comment-template" ],
|
||||
"description": "Displays a link to edit the comment in the WordPress Dashboard. This link is only visible to users with the edit comment capability.",
|
||||
"textdomain": "default",
|
||||
"usesContext": [ "commentId" ],
|
||||
"attributes": {
|
||||
"linkTarget": {
|
||||
"type": "string",
|
||||
"default": "_self"
|
||||
},
|
||||
"textAlign": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"supports": {
|
||||
"html": false,
|
||||
"color": {
|
||||
"link": true,
|
||||
"gradients": true,
|
||||
"text": false,
|
||||
"__experimentalDefaultControls": {
|
||||
"background": true,
|
||||
"link": true
|
||||
}
|
||||
},
|
||||
"spacing": {
|
||||
"margin": true,
|
||||
"padding": true
|
||||
},
|
||||
"typography": {
|
||||
"fontSize": true,
|
||||
"lineHeight": true,
|
||||
"__experimentalFontFamily": true,
|
||||
"__experimentalFontWeight": true,
|
||||
"__experimentalFontStyle": true,
|
||||
"__experimentalTextTransform": true,
|
||||
"__experimentalTextDecoration": true,
|
||||
"__experimentalLetterSpacing": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"fontSize": true
|
||||
}
|
||||
},
|
||||
"interactivity": {
|
||||
"clientNavigation": true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,83 +1,83 @@
|
||||
<?php
|
||||
/**
|
||||
* Server-side rendering of the `core/comment-reply-link` block.
|
||||
*
|
||||
* @package WordPress
|
||||
*/
|
||||
|
||||
/**
|
||||
* Renders the `core/comment-reply-link` block on the server.
|
||||
*
|
||||
* @param array $attributes Block attributes.
|
||||
* @param string $content Block default content.
|
||||
* @param WP_Block $block Block instance.
|
||||
* @return string Return the post comment's reply link.
|
||||
*/
|
||||
function render_block_core_comment_reply_link( $attributes, $content, $block ) {
|
||||
if ( ! isset( $block->context['commentId'] ) ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$thread_comments = get_option( 'thread_comments' );
|
||||
if ( ! $thread_comments ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$comment = get_comment( $block->context['commentId'] );
|
||||
if ( empty( $comment ) ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$depth = 1;
|
||||
$max_depth = get_option( 'thread_comments_depth' );
|
||||
$parent_id = $comment->comment_parent;
|
||||
|
||||
// Compute comment's depth iterating over its ancestors.
|
||||
while ( ! empty( $parent_id ) ) {
|
||||
++$depth;
|
||||
$parent_id = get_comment( $parent_id )->comment_parent;
|
||||
}
|
||||
|
||||
$comment_reply_link = get_comment_reply_link(
|
||||
array(
|
||||
'depth' => $depth,
|
||||
'max_depth' => $max_depth,
|
||||
),
|
||||
$comment
|
||||
);
|
||||
|
||||
// Render nothing if the generated reply link is empty.
|
||||
if ( empty( $comment_reply_link ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$classes = array();
|
||||
if ( isset( $attributes['textAlign'] ) ) {
|
||||
$classes[] = 'has-text-align-' . $attributes['textAlign'];
|
||||
}
|
||||
if ( isset( $attributes['style']['elements']['link']['color']['text'] ) ) {
|
||||
$classes[] = 'has-link-color';
|
||||
}
|
||||
|
||||
$wrapper_attributes = get_block_wrapper_attributes( array( 'class' => implode( ' ', $classes ) ) );
|
||||
|
||||
return sprintf(
|
||||
'<div %1$s>%2$s</div>',
|
||||
$wrapper_attributes,
|
||||
$comment_reply_link
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers the `core/comment-reply-link` block on the server.
|
||||
*/
|
||||
function register_block_core_comment_reply_link() {
|
||||
register_block_type_from_metadata(
|
||||
__DIR__ . '/comment-reply-link',
|
||||
array(
|
||||
'render_callback' => 'render_block_core_comment_reply_link',
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
add_action( 'init', 'register_block_core_comment_reply_link' );
|
||||
<?php
|
||||
/**
|
||||
* Server-side rendering of the `core/comment-reply-link` block.
|
||||
*
|
||||
* @package WordPress
|
||||
*/
|
||||
|
||||
/**
|
||||
* Renders the `core/comment-reply-link` block on the server.
|
||||
*
|
||||
* @param array $attributes Block attributes.
|
||||
* @param string $content Block default content.
|
||||
* @param WP_Block $block Block instance.
|
||||
* @return string Return the post comment's reply link.
|
||||
*/
|
||||
function render_block_core_comment_reply_link( $attributes, $content, $block ) {
|
||||
if ( ! isset( $block->context['commentId'] ) ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$thread_comments = get_option( 'thread_comments' );
|
||||
if ( ! $thread_comments ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$comment = get_comment( $block->context['commentId'] );
|
||||
if ( empty( $comment ) ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$depth = 1;
|
||||
$max_depth = get_option( 'thread_comments_depth' );
|
||||
$parent_id = $comment->comment_parent;
|
||||
|
||||
// Compute comment's depth iterating over its ancestors.
|
||||
while ( ! empty( $parent_id ) ) {
|
||||
++$depth;
|
||||
$parent_id = get_comment( $parent_id )->comment_parent;
|
||||
}
|
||||
|
||||
$comment_reply_link = get_comment_reply_link(
|
||||
array(
|
||||
'depth' => $depth,
|
||||
'max_depth' => $max_depth,
|
||||
),
|
||||
$comment
|
||||
);
|
||||
|
||||
// Render nothing if the generated reply link is empty.
|
||||
if ( empty( $comment_reply_link ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$classes = array();
|
||||
if ( isset( $attributes['textAlign'] ) ) {
|
||||
$classes[] = 'has-text-align-' . $attributes['textAlign'];
|
||||
}
|
||||
if ( isset( $attributes['style']['elements']['link']['color']['text'] ) ) {
|
||||
$classes[] = 'has-link-color';
|
||||
}
|
||||
|
||||
$wrapper_attributes = get_block_wrapper_attributes( array( 'class' => implode( ' ', $classes ) ) );
|
||||
|
||||
return sprintf(
|
||||
'<div %1$s>%2$s</div>',
|
||||
$wrapper_attributes,
|
||||
$comment_reply_link
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers the `core/comment-reply-link` block on the server.
|
||||
*/
|
||||
function register_block_core_comment_reply_link() {
|
||||
register_block_type_from_metadata(
|
||||
__DIR__ . '/comment-reply-link',
|
||||
array(
|
||||
'render_callback' => 'render_block_core_comment_reply_link',
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
add_action( 'init', 'register_block_core_comment_reply_link' );
|
||||
|
||||
@@ -1,45 +1,45 @@
|
||||
{
|
||||
"$schema": "https://schemas.wp.org/trunk/block.json",
|
||||
"apiVersion": 3,
|
||||
"name": "core/comment-reply-link",
|
||||
"title": "Comment Reply Link",
|
||||
"category": "theme",
|
||||
"ancestor": [ "core/comment-template" ],
|
||||
"description": "Displays a link to reply to a comment.",
|
||||
"textdomain": "default",
|
||||
"usesContext": [ "commentId" ],
|
||||
"attributes": {
|
||||
"textAlign": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"supports": {
|
||||
"color": {
|
||||
"gradients": true,
|
||||
"link": true,
|
||||
"text": false,
|
||||
"__experimentalDefaultControls": {
|
||||
"background": true,
|
||||
"link": true
|
||||
}
|
||||
},
|
||||
"spacing": {
|
||||
"margin": true,
|
||||
"padding": true
|
||||
},
|
||||
"typography": {
|
||||
"fontSize": true,
|
||||
"lineHeight": true,
|
||||
"__experimentalFontFamily": true,
|
||||
"__experimentalFontWeight": true,
|
||||
"__experimentalFontStyle": true,
|
||||
"__experimentalTextTransform": true,
|
||||
"__experimentalTextDecoration": true,
|
||||
"__experimentalLetterSpacing": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"fontSize": true
|
||||
}
|
||||
},
|
||||
"html": false
|
||||
}
|
||||
}
|
||||
{
|
||||
"$schema": "https://schemas.wp.org/trunk/block.json",
|
||||
"apiVersion": 3,
|
||||
"name": "core/comment-reply-link",
|
||||
"title": "Comment Reply Link",
|
||||
"category": "theme",
|
||||
"ancestor": [ "core/comment-template" ],
|
||||
"description": "Displays a link to reply to a comment.",
|
||||
"textdomain": "default",
|
||||
"usesContext": [ "commentId" ],
|
||||
"attributes": {
|
||||
"textAlign": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"supports": {
|
||||
"color": {
|
||||
"gradients": true,
|
||||
"link": true,
|
||||
"text": false,
|
||||
"__experimentalDefaultControls": {
|
||||
"background": true,
|
||||
"link": true
|
||||
}
|
||||
},
|
||||
"spacing": {
|
||||
"margin": true,
|
||||
"padding": true
|
||||
},
|
||||
"typography": {
|
||||
"fontSize": true,
|
||||
"lineHeight": true,
|
||||
"__experimentalFontFamily": true,
|
||||
"__experimentalFontWeight": true,
|
||||
"__experimentalFontStyle": true,
|
||||
"__experimentalTextTransform": true,
|
||||
"__experimentalTextDecoration": true,
|
||||
"__experimentalLetterSpacing": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"fontSize": true
|
||||
}
|
||||
},
|
||||
"html": false
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,149 +1,149 @@
|
||||
<?php
|
||||
/**
|
||||
* Server-side rendering of the `core/comment-template` block.
|
||||
*
|
||||
* @package WordPress
|
||||
*/
|
||||
|
||||
/**
|
||||
* Function that recursively renders a list of nested comments.
|
||||
*
|
||||
* @since 6.3.0 Changed render_block_context priority to `1`.
|
||||
*
|
||||
* @global int $comment_depth
|
||||
*
|
||||
* @param WP_Comment[] $comments The array of comments.
|
||||
* @param WP_Block $block Block instance.
|
||||
* @return string
|
||||
*/
|
||||
function block_core_comment_template_render_comments( $comments, $block ) {
|
||||
global $comment_depth;
|
||||
$thread_comments = get_option( 'thread_comments' );
|
||||
$thread_comments_depth = get_option( 'thread_comments_depth' );
|
||||
|
||||
if ( empty( $comment_depth ) ) {
|
||||
$comment_depth = 1;
|
||||
}
|
||||
|
||||
$content = '';
|
||||
foreach ( $comments as $comment ) {
|
||||
$comment_id = $comment->comment_ID;
|
||||
$filter_block_context = static function ( $context ) use ( $comment_id ) {
|
||||
$context['commentId'] = $comment_id;
|
||||
return $context;
|
||||
};
|
||||
|
||||
/*
|
||||
* We set commentId context through the `render_block_context` filter so
|
||||
* that dynamically inserted blocks (at `render_block` filter stage)
|
||||
* will also receive that context.
|
||||
*
|
||||
* Use an early priority to so that other 'render_block_context' filters
|
||||
* have access to the values.
|
||||
*/
|
||||
add_filter( 'render_block_context', $filter_block_context, 1 );
|
||||
|
||||
/*
|
||||
* We construct a new WP_Block instance from the parsed block so that
|
||||
* it'll receive any changes made by the `render_block_data` filter.
|
||||
*/
|
||||
$block_content = ( new WP_Block( $block->parsed_block ) )->render( array( 'dynamic' => false ) );
|
||||
|
||||
remove_filter( 'render_block_context', $filter_block_context, 1 );
|
||||
|
||||
$children = $comment->get_children();
|
||||
|
||||
/*
|
||||
* We need to create the CSS classes BEFORE recursing into the children.
|
||||
* This is because comment_class() uses globals like `$comment_alt`
|
||||
* and `$comment_thread_alt` which are order-sensitive.
|
||||
*
|
||||
* The `false` parameter at the end means that we do NOT want the function
|
||||
* to `echo` the output but to return a string.
|
||||
* See https://developer.wordpress.org/reference/functions/comment_class/#parameters.
|
||||
*/
|
||||
$comment_classes = comment_class( '', $comment->comment_ID, $comment->comment_post_ID, false );
|
||||
|
||||
// If the comment has children, recurse to create the HTML for the nested
|
||||
// comments.
|
||||
if ( ! empty( $children ) && ! empty( $thread_comments ) ) {
|
||||
if ( $comment_depth < $thread_comments_depth ) {
|
||||
++$comment_depth;
|
||||
$inner_content = block_core_comment_template_render_comments(
|
||||
$children,
|
||||
$block
|
||||
);
|
||||
$block_content .= sprintf( '<ol>%1$s</ol>', $inner_content );
|
||||
--$comment_depth;
|
||||
} else {
|
||||
$block_content .= block_core_comment_template_render_comments(
|
||||
$children,
|
||||
$block
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
$content .= sprintf( '<li id="comment-%1$s" %2$s>%3$s</li>', $comment->comment_ID, $comment_classes, $block_content );
|
||||
}
|
||||
|
||||
return $content;
|
||||
}
|
||||
|
||||
/**
|
||||
* Renders the `core/comment-template` block on the server.
|
||||
*
|
||||
* @param array $attributes Block attributes.
|
||||
* @param string $content Block default content.
|
||||
* @param WP_Block $block Block instance.
|
||||
*
|
||||
* @return string Returns the HTML representing the comments using the layout
|
||||
* defined by the block's inner blocks.
|
||||
*/
|
||||
function render_block_core_comment_template( $attributes, $content, $block ) {
|
||||
// Bail out early if the post ID is not set for some reason.
|
||||
if ( empty( $block->context['postId'] ) ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
if ( post_password_required( $block->context['postId'] ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$comment_query = new WP_Comment_Query(
|
||||
build_comment_query_vars_from_block( $block )
|
||||
);
|
||||
|
||||
// Get an array of comments for the current post.
|
||||
$comments = $comment_query->get_comments();
|
||||
if ( count( $comments ) === 0 ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$comment_order = get_option( 'comment_order' );
|
||||
|
||||
if ( 'desc' === $comment_order ) {
|
||||
$comments = array_reverse( $comments );
|
||||
}
|
||||
|
||||
$wrapper_attributes = get_block_wrapper_attributes();
|
||||
|
||||
return sprintf(
|
||||
'<ol %1$s>%2$s</ol>',
|
||||
$wrapper_attributes,
|
||||
block_core_comment_template_render_comments( $comments, $block )
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers the `core/comment-template` block on the server.
|
||||
*/
|
||||
function register_block_core_comment_template() {
|
||||
register_block_type_from_metadata(
|
||||
__DIR__ . '/comment-template',
|
||||
array(
|
||||
'render_callback' => 'render_block_core_comment_template',
|
||||
'skip_inner_blocks' => true,
|
||||
)
|
||||
);
|
||||
}
|
||||
add_action( 'init', 'register_block_core_comment_template' );
|
||||
<?php
|
||||
/**
|
||||
* Server-side rendering of the `core/comment-template` block.
|
||||
*
|
||||
* @package WordPress
|
||||
*/
|
||||
|
||||
/**
|
||||
* Function that recursively renders a list of nested comments.
|
||||
*
|
||||
* @since 6.3.0 Changed render_block_context priority to `1`.
|
||||
*
|
||||
* @global int $comment_depth
|
||||
*
|
||||
* @param WP_Comment[] $comments The array of comments.
|
||||
* @param WP_Block $block Block instance.
|
||||
* @return string
|
||||
*/
|
||||
function block_core_comment_template_render_comments( $comments, $block ) {
|
||||
global $comment_depth;
|
||||
$thread_comments = get_option( 'thread_comments' );
|
||||
$thread_comments_depth = get_option( 'thread_comments_depth' );
|
||||
|
||||
if ( empty( $comment_depth ) ) {
|
||||
$comment_depth = 1;
|
||||
}
|
||||
|
||||
$content = '';
|
||||
foreach ( $comments as $comment ) {
|
||||
$comment_id = $comment->comment_ID;
|
||||
$filter_block_context = static function ( $context ) use ( $comment_id ) {
|
||||
$context['commentId'] = $comment_id;
|
||||
return $context;
|
||||
};
|
||||
|
||||
/*
|
||||
* We set commentId context through the `render_block_context` filter so
|
||||
* that dynamically inserted blocks (at `render_block` filter stage)
|
||||
* will also receive that context.
|
||||
*
|
||||
* Use an early priority to so that other 'render_block_context' filters
|
||||
* have access to the values.
|
||||
*/
|
||||
add_filter( 'render_block_context', $filter_block_context, 1 );
|
||||
|
||||
/*
|
||||
* We construct a new WP_Block instance from the parsed block so that
|
||||
* it'll receive any changes made by the `render_block_data` filter.
|
||||
*/
|
||||
$block_content = ( new WP_Block( $block->parsed_block ) )->render( array( 'dynamic' => false ) );
|
||||
|
||||
remove_filter( 'render_block_context', $filter_block_context, 1 );
|
||||
|
||||
$children = $comment->get_children();
|
||||
|
||||
/*
|
||||
* We need to create the CSS classes BEFORE recursing into the children.
|
||||
* This is because comment_class() uses globals like `$comment_alt`
|
||||
* and `$comment_thread_alt` which are order-sensitive.
|
||||
*
|
||||
* The `false` parameter at the end means that we do NOT want the function
|
||||
* to `echo` the output but to return a string.
|
||||
* See https://developer.wordpress.org/reference/functions/comment_class/#parameters.
|
||||
*/
|
||||
$comment_classes = comment_class( '', $comment->comment_ID, $comment->comment_post_ID, false );
|
||||
|
||||
// If the comment has children, recurse to create the HTML for the nested
|
||||
// comments.
|
||||
if ( ! empty( $children ) && ! empty( $thread_comments ) ) {
|
||||
if ( $comment_depth < $thread_comments_depth ) {
|
||||
++$comment_depth;
|
||||
$inner_content = block_core_comment_template_render_comments(
|
||||
$children,
|
||||
$block
|
||||
);
|
||||
$block_content .= sprintf( '<ol>%1$s</ol>', $inner_content );
|
||||
--$comment_depth;
|
||||
} else {
|
||||
$block_content .= block_core_comment_template_render_comments(
|
||||
$children,
|
||||
$block
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
$content .= sprintf( '<li id="comment-%1$s" %2$s>%3$s</li>', $comment->comment_ID, $comment_classes, $block_content );
|
||||
}
|
||||
|
||||
return $content;
|
||||
}
|
||||
|
||||
/**
|
||||
* Renders the `core/comment-template` block on the server.
|
||||
*
|
||||
* @param array $attributes Block attributes.
|
||||
* @param string $content Block default content.
|
||||
* @param WP_Block $block Block instance.
|
||||
*
|
||||
* @return string Returns the HTML representing the comments using the layout
|
||||
* defined by the block's inner blocks.
|
||||
*/
|
||||
function render_block_core_comment_template( $attributes, $content, $block ) {
|
||||
// Bail out early if the post ID is not set for some reason.
|
||||
if ( empty( $block->context['postId'] ) ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
if ( post_password_required( $block->context['postId'] ) ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$comment_query = new WP_Comment_Query(
|
||||
build_comment_query_vars_from_block( $block )
|
||||
);
|
||||
|
||||
// Get an array of comments for the current post.
|
||||
$comments = $comment_query->get_comments();
|
||||
if ( count( $comments ) === 0 ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$comment_order = get_option( 'comment_order' );
|
||||
|
||||
if ( 'desc' === $comment_order ) {
|
||||
$comments = array_reverse( $comments );
|
||||
}
|
||||
|
||||
$wrapper_attributes = get_block_wrapper_attributes();
|
||||
|
||||
return sprintf(
|
||||
'<ol %1$s>%2$s</ol>',
|
||||
$wrapper_attributes,
|
||||
block_core_comment_template_render_comments( $comments, $block )
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers the `core/comment-template` block on the server.
|
||||
*/
|
||||
function register_block_core_comment_template() {
|
||||
register_block_type_from_metadata(
|
||||
__DIR__ . '/comment-template',
|
||||
array(
|
||||
'render_callback' => 'render_block_core_comment_template',
|
||||
'skip_inner_blocks' => true,
|
||||
)
|
||||
);
|
||||
}
|
||||
add_action( 'init', 'register_block_core_comment_template' );
|
||||
|
||||
@@ -1,37 +1,37 @@
|
||||
{
|
||||
"$schema": "https://schemas.wp.org/trunk/block.json",
|
||||
"apiVersion": 3,
|
||||
"name": "core/comment-template",
|
||||
"title": "Comment Template",
|
||||
"category": "design",
|
||||
"parent": [ "core/comments" ],
|
||||
"description": "Contains the block elements used to display a comment, like the title, date, author, avatar and more.",
|
||||
"textdomain": "default",
|
||||
"usesContext": [ "postId" ],
|
||||
"supports": {
|
||||
"align": true,
|
||||
"html": false,
|
||||
"reusable": false,
|
||||
"spacing": {
|
||||
"margin": true,
|
||||
"padding": true
|
||||
},
|
||||
"typography": {
|
||||
"fontSize": true,
|
||||
"lineHeight": true,
|
||||
"__experimentalFontFamily": true,
|
||||
"__experimentalFontWeight": true,
|
||||
"__experimentalFontStyle": true,
|
||||
"__experimentalTextTransform": true,
|
||||
"__experimentalTextDecoration": true,
|
||||
"__experimentalLetterSpacing": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"fontSize": true
|
||||
}
|
||||
},
|
||||
"interactivity": {
|
||||
"clientNavigation": true
|
||||
}
|
||||
},
|
||||
"style": "wp-block-comment-template"
|
||||
}
|
||||
{
|
||||
"$schema": "https://schemas.wp.org/trunk/block.json",
|
||||
"apiVersion": 3,
|
||||
"name": "core/comment-template",
|
||||
"title": "Comment Template",
|
||||
"category": "design",
|
||||
"parent": [ "core/comments" ],
|
||||
"description": "Contains the block elements used to display a comment, like the title, date, author, avatar and more.",
|
||||
"textdomain": "default",
|
||||
"usesContext": [ "postId" ],
|
||||
"supports": {
|
||||
"align": true,
|
||||
"html": false,
|
||||
"reusable": false,
|
||||
"spacing": {
|
||||
"margin": true,
|
||||
"padding": true
|
||||
},
|
||||
"typography": {
|
||||
"fontSize": true,
|
||||
"lineHeight": true,
|
||||
"__experimentalFontFamily": true,
|
||||
"__experimentalFontWeight": true,
|
||||
"__experimentalFontStyle": true,
|
||||
"__experimentalTextTransform": true,
|
||||
"__experimentalTextDecoration": true,
|
||||
"__experimentalLetterSpacing": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"fontSize": true
|
||||
}
|
||||
},
|
||||
"interactivity": {
|
||||
"clientNavigation": true
|
||||
}
|
||||
},
|
||||
"style": "wp-block-comment-template"
|
||||
}
|
||||
|
||||
@@ -1,28 +1,28 @@
|
||||
.wp-block-comment-template{
|
||||
box-sizing:border-box;
|
||||
list-style:none;
|
||||
margin-bottom:0;
|
||||
max-width:100%;
|
||||
padding:0;
|
||||
}
|
||||
.wp-block-comment-template li{
|
||||
clear:both;
|
||||
}
|
||||
.wp-block-comment-template ol{
|
||||
list-style:none;
|
||||
margin-bottom:0;
|
||||
max-width:100%;
|
||||
padding-right:2rem;
|
||||
}
|
||||
.wp-block-comment-template.alignleft{
|
||||
float:right;
|
||||
}
|
||||
.wp-block-comment-template.aligncenter{
|
||||
margin-left:auto;
|
||||
margin-right:auto;
|
||||
width:-moz-fit-content;
|
||||
width:fit-content;
|
||||
}
|
||||
.wp-block-comment-template.alignright{
|
||||
float:left;
|
||||
.wp-block-comment-template{
|
||||
box-sizing:border-box;
|
||||
list-style:none;
|
||||
margin-bottom:0;
|
||||
max-width:100%;
|
||||
padding:0;
|
||||
}
|
||||
.wp-block-comment-template li{
|
||||
clear:both;
|
||||
}
|
||||
.wp-block-comment-template ol{
|
||||
list-style:none;
|
||||
margin-bottom:0;
|
||||
max-width:100%;
|
||||
padding-right:2rem;
|
||||
}
|
||||
.wp-block-comment-template.alignleft{
|
||||
float:right;
|
||||
}
|
||||
.wp-block-comment-template.aligncenter{
|
||||
margin-left:auto;
|
||||
margin-right:auto;
|
||||
width:-moz-fit-content;
|
||||
width:fit-content;
|
||||
}
|
||||
.wp-block-comment-template.alignright{
|
||||
float:left;
|
||||
}
|
||||
@@ -1,28 +1,28 @@
|
||||
.wp-block-comment-template{
|
||||
box-sizing:border-box;
|
||||
list-style:none;
|
||||
margin-bottom:0;
|
||||
max-width:100%;
|
||||
padding:0;
|
||||
}
|
||||
.wp-block-comment-template li{
|
||||
clear:both;
|
||||
}
|
||||
.wp-block-comment-template ol{
|
||||
list-style:none;
|
||||
margin-bottom:0;
|
||||
max-width:100%;
|
||||
padding-left:2rem;
|
||||
}
|
||||
.wp-block-comment-template.alignleft{
|
||||
float:left;
|
||||
}
|
||||
.wp-block-comment-template.aligncenter{
|
||||
margin-left:auto;
|
||||
margin-right:auto;
|
||||
width:-moz-fit-content;
|
||||
width:fit-content;
|
||||
}
|
||||
.wp-block-comment-template.alignright{
|
||||
float:right;
|
||||
.wp-block-comment-template{
|
||||
box-sizing:border-box;
|
||||
list-style:none;
|
||||
margin-bottom:0;
|
||||
max-width:100%;
|
||||
padding:0;
|
||||
}
|
||||
.wp-block-comment-template li{
|
||||
clear:both;
|
||||
}
|
||||
.wp-block-comment-template ol{
|
||||
list-style:none;
|
||||
margin-bottom:0;
|
||||
max-width:100%;
|
||||
padding-left:2rem;
|
||||
}
|
||||
.wp-block-comment-template.alignleft{
|
||||
float:left;
|
||||
}
|
||||
.wp-block-comment-template.aligncenter{
|
||||
margin-left:auto;
|
||||
margin-right:auto;
|
||||
width:-moz-fit-content;
|
||||
width:fit-content;
|
||||
}
|
||||
.wp-block-comment-template.alignright{
|
||||
float:right;
|
||||
}
|
||||
@@ -1,60 +1,60 @@
|
||||
<?php
|
||||
/**
|
||||
* Server-side rendering of the `core/comments-pagination-next` block.
|
||||
*
|
||||
* @package WordPress
|
||||
*/
|
||||
|
||||
/**
|
||||
* Renders the `core/comments-pagination-next` block on the server.
|
||||
*
|
||||
* @param array $attributes Block attributes.
|
||||
* @param string $content Block default content.
|
||||
* @param WP_Block $block Block instance.
|
||||
*
|
||||
* @return string Returns the next comments link for the query pagination.
|
||||
*/
|
||||
function render_block_core_comments_pagination_next( $attributes, $content, $block ) {
|
||||
// Bail out early if the post ID is not set for some reason.
|
||||
if ( empty( $block->context['postId'] ) ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$comment_vars = build_comment_query_vars_from_block( $block );
|
||||
$max_page = ( new WP_Comment_Query( $comment_vars ) )->max_num_pages;
|
||||
$default_label = __( 'Newer Comments' );
|
||||
$label = isset( $attributes['label'] ) && ! empty( $attributes['label'] ) ? $attributes['label'] : $default_label;
|
||||
$pagination_arrow = get_comments_pagination_arrow( $block, 'next' );
|
||||
|
||||
$filter_link_attributes = static function () {
|
||||
return get_block_wrapper_attributes();
|
||||
};
|
||||
add_filter( 'next_comments_link_attributes', $filter_link_attributes );
|
||||
|
||||
if ( $pagination_arrow ) {
|
||||
$label .= $pagination_arrow;
|
||||
}
|
||||
|
||||
$next_comments_link = get_next_comments_link( $label, $max_page );
|
||||
|
||||
remove_filter( 'next_posts_link_attributes', $filter_link_attributes );
|
||||
|
||||
if ( ! isset( $next_comments_link ) ) {
|
||||
return '';
|
||||
}
|
||||
return $next_comments_link;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Registers the `core/comments-pagination-next` block on the server.
|
||||
*/
|
||||
function register_block_core_comments_pagination_next() {
|
||||
register_block_type_from_metadata(
|
||||
__DIR__ . '/comments-pagination-next',
|
||||
array(
|
||||
'render_callback' => 'render_block_core_comments_pagination_next',
|
||||
)
|
||||
);
|
||||
}
|
||||
add_action( 'init', 'register_block_core_comments_pagination_next' );
|
||||
<?php
|
||||
/**
|
||||
* Server-side rendering of the `core/comments-pagination-next` block.
|
||||
*
|
||||
* @package WordPress
|
||||
*/
|
||||
|
||||
/**
|
||||
* Renders the `core/comments-pagination-next` block on the server.
|
||||
*
|
||||
* @param array $attributes Block attributes.
|
||||
* @param string $content Block default content.
|
||||
* @param WP_Block $block Block instance.
|
||||
*
|
||||
* @return string Returns the next comments link for the query pagination.
|
||||
*/
|
||||
function render_block_core_comments_pagination_next( $attributes, $content, $block ) {
|
||||
// Bail out early if the post ID is not set for some reason.
|
||||
if ( empty( $block->context['postId'] ) ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$comment_vars = build_comment_query_vars_from_block( $block );
|
||||
$max_page = ( new WP_Comment_Query( $comment_vars ) )->max_num_pages;
|
||||
$default_label = __( 'Newer Comments' );
|
||||
$label = isset( $attributes['label'] ) && ! empty( $attributes['label'] ) ? $attributes['label'] : $default_label;
|
||||
$pagination_arrow = get_comments_pagination_arrow( $block, 'next' );
|
||||
|
||||
$filter_link_attributes = static function () {
|
||||
return get_block_wrapper_attributes();
|
||||
};
|
||||
add_filter( 'next_comments_link_attributes', $filter_link_attributes );
|
||||
|
||||
if ( $pagination_arrow ) {
|
||||
$label .= $pagination_arrow;
|
||||
}
|
||||
|
||||
$next_comments_link = get_next_comments_link( $label, $max_page );
|
||||
|
||||
remove_filter( 'next_posts_link_attributes', $filter_link_attributes );
|
||||
|
||||
if ( ! isset( $next_comments_link ) ) {
|
||||
return '';
|
||||
}
|
||||
return $next_comments_link;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Registers the `core/comments-pagination-next` block on the server.
|
||||
*/
|
||||
function register_block_core_comments_pagination_next() {
|
||||
register_block_type_from_metadata(
|
||||
__DIR__ . '/comments-pagination-next',
|
||||
array(
|
||||
'render_callback' => 'render_block_core_comments_pagination_next',
|
||||
)
|
||||
);
|
||||
}
|
||||
add_action( 'init', 'register_block_core_comments_pagination_next' );
|
||||
|
||||
@@ -1,43 +1,43 @@
|
||||
{
|
||||
"$schema": "https://schemas.wp.org/trunk/block.json",
|
||||
"apiVersion": 3,
|
||||
"name": "core/comments-pagination-next",
|
||||
"title": "Comments Next Page",
|
||||
"category": "theme",
|
||||
"parent": [ "core/comments-pagination" ],
|
||||
"description": "Displays the next comment's page link.",
|
||||
"textdomain": "default",
|
||||
"attributes": {
|
||||
"label": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"usesContext": [ "postId", "comments/paginationArrow" ],
|
||||
"supports": {
|
||||
"reusable": false,
|
||||
"html": false,
|
||||
"color": {
|
||||
"gradients": true,
|
||||
"text": false,
|
||||
"__experimentalDefaultControls": {
|
||||
"background": true
|
||||
}
|
||||
},
|
||||
"typography": {
|
||||
"fontSize": true,
|
||||
"lineHeight": true,
|
||||
"__experimentalFontFamily": true,
|
||||
"__experimentalFontWeight": true,
|
||||
"__experimentalFontStyle": true,
|
||||
"__experimentalTextTransform": true,
|
||||
"__experimentalTextDecoration": true,
|
||||
"__experimentalLetterSpacing": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"fontSize": true
|
||||
}
|
||||
},
|
||||
"interactivity": {
|
||||
"clientNavigation": true
|
||||
}
|
||||
}
|
||||
}
|
||||
{
|
||||
"$schema": "https://schemas.wp.org/trunk/block.json",
|
||||
"apiVersion": 3,
|
||||
"name": "core/comments-pagination-next",
|
||||
"title": "Comments Next Page",
|
||||
"category": "theme",
|
||||
"parent": [ "core/comments-pagination" ],
|
||||
"description": "Displays the next comment's page link.",
|
||||
"textdomain": "default",
|
||||
"attributes": {
|
||||
"label": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"usesContext": [ "postId", "comments/paginationArrow" ],
|
||||
"supports": {
|
||||
"reusable": false,
|
||||
"html": false,
|
||||
"color": {
|
||||
"gradients": true,
|
||||
"text": false,
|
||||
"__experimentalDefaultControls": {
|
||||
"background": true
|
||||
}
|
||||
},
|
||||
"typography": {
|
||||
"fontSize": true,
|
||||
"lineHeight": true,
|
||||
"__experimentalFontFamily": true,
|
||||
"__experimentalFontWeight": true,
|
||||
"__experimentalFontStyle": true,
|
||||
"__experimentalTextTransform": true,
|
||||
"__experimentalTextDecoration": true,
|
||||
"__experimentalLetterSpacing": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"fontSize": true
|
||||
}
|
||||
},
|
||||
"interactivity": {
|
||||
"clientNavigation": true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,62 +1,62 @@
|
||||
<?php
|
||||
/**
|
||||
* Server-side rendering of the `core/comments-pagination-numbers` block.
|
||||
*
|
||||
* @package WordPress
|
||||
*/
|
||||
|
||||
/**
|
||||
* Renders the `core/comments-pagination-numbers` block on the server.
|
||||
*
|
||||
* @param array $attributes Block attributes.
|
||||
* @param string $content Block default content.
|
||||
* @param WP_Block $block Block instance.
|
||||
*
|
||||
* @return string Returns the pagination numbers for the comments.
|
||||
*/
|
||||
function render_block_core_comments_pagination_numbers( $attributes, $content, $block ) {
|
||||
// Bail out early if the post ID is not set for some reason.
|
||||
if ( empty( $block->context['postId'] ) ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$comment_vars = build_comment_query_vars_from_block( $block );
|
||||
|
||||
$total = ( new WP_Comment_Query( $comment_vars ) )->max_num_pages;
|
||||
$current = ! empty( $comment_vars['paged'] ) ? $comment_vars['paged'] : null;
|
||||
|
||||
// Render links.
|
||||
$content = paginate_comments_links(
|
||||
array(
|
||||
'total' => $total,
|
||||
'current' => $current,
|
||||
'prev_next' => false,
|
||||
'echo' => false,
|
||||
)
|
||||
);
|
||||
|
||||
if ( empty( $content ) ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$wrapper_attributes = get_block_wrapper_attributes();
|
||||
|
||||
return sprintf(
|
||||
'<div %1$s>%2$s</div>',
|
||||
$wrapper_attributes,
|
||||
$content
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers the `core/comments-pagination-numbers` block on the server.
|
||||
*/
|
||||
function register_block_core_comments_pagination_numbers() {
|
||||
register_block_type_from_metadata(
|
||||
__DIR__ . '/comments-pagination-numbers',
|
||||
array(
|
||||
'render_callback' => 'render_block_core_comments_pagination_numbers',
|
||||
)
|
||||
);
|
||||
}
|
||||
add_action( 'init', 'register_block_core_comments_pagination_numbers' );
|
||||
<?php
|
||||
/**
|
||||
* Server-side rendering of the `core/comments-pagination-numbers` block.
|
||||
*
|
||||
* @package WordPress
|
||||
*/
|
||||
|
||||
/**
|
||||
* Renders the `core/comments-pagination-numbers` block on the server.
|
||||
*
|
||||
* @param array $attributes Block attributes.
|
||||
* @param string $content Block default content.
|
||||
* @param WP_Block $block Block instance.
|
||||
*
|
||||
* @return string Returns the pagination numbers for the comments.
|
||||
*/
|
||||
function render_block_core_comments_pagination_numbers( $attributes, $content, $block ) {
|
||||
// Bail out early if the post ID is not set for some reason.
|
||||
if ( empty( $block->context['postId'] ) ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$comment_vars = build_comment_query_vars_from_block( $block );
|
||||
|
||||
$total = ( new WP_Comment_Query( $comment_vars ) )->max_num_pages;
|
||||
$current = ! empty( $comment_vars['paged'] ) ? $comment_vars['paged'] : null;
|
||||
|
||||
// Render links.
|
||||
$content = paginate_comments_links(
|
||||
array(
|
||||
'total' => $total,
|
||||
'current' => $current,
|
||||
'prev_next' => false,
|
||||
'echo' => false,
|
||||
)
|
||||
);
|
||||
|
||||
if ( empty( $content ) ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
$wrapper_attributes = get_block_wrapper_attributes();
|
||||
|
||||
return sprintf(
|
||||
'<div %1$s>%2$s</div>',
|
||||
$wrapper_attributes,
|
||||
$content
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers the `core/comments-pagination-numbers` block on the server.
|
||||
*/
|
||||
function register_block_core_comments_pagination_numbers() {
|
||||
register_block_type_from_metadata(
|
||||
__DIR__ . '/comments-pagination-numbers',
|
||||
array(
|
||||
'render_callback' => 'render_block_core_comments_pagination_numbers',
|
||||
)
|
||||
);
|
||||
}
|
||||
add_action( 'init', 'register_block_core_comments_pagination_numbers' );
|
||||
|
||||
@@ -1,38 +1,38 @@
|
||||
{
|
||||
"$schema": "https://schemas.wp.org/trunk/block.json",
|
||||
"apiVersion": 3,
|
||||
"name": "core/comments-pagination-numbers",
|
||||
"title": "Comments Page Numbers",
|
||||
"category": "theme",
|
||||
"parent": [ "core/comments-pagination" ],
|
||||
"description": "Displays a list of page numbers for comments pagination.",
|
||||
"textdomain": "default",
|
||||
"usesContext": [ "postId" ],
|
||||
"supports": {
|
||||
"reusable": false,
|
||||
"html": false,
|
||||
"color": {
|
||||
"gradients": true,
|
||||
"text": false,
|
||||
"__experimentalDefaultControls": {
|
||||
"background": true
|
||||
}
|
||||
},
|
||||
"typography": {
|
||||
"fontSize": true,
|
||||
"lineHeight": true,
|
||||
"__experimentalFontFamily": true,
|
||||
"__experimentalFontWeight": true,
|
||||
"__experimentalFontStyle": true,
|
||||
"__experimentalTextTransform": true,
|
||||
"__experimentalTextDecoration": true,
|
||||
"__experimentalLetterSpacing": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"fontSize": true
|
||||
}
|
||||
},
|
||||
"interactivity": {
|
||||
"clientNavigation": true
|
||||
}
|
||||
}
|
||||
}
|
||||
{
|
||||
"$schema": "https://schemas.wp.org/trunk/block.json",
|
||||
"apiVersion": 3,
|
||||
"name": "core/comments-pagination-numbers",
|
||||
"title": "Comments Page Numbers",
|
||||
"category": "theme",
|
||||
"parent": [ "core/comments-pagination" ],
|
||||
"description": "Displays a list of page numbers for comments pagination.",
|
||||
"textdomain": "default",
|
||||
"usesContext": [ "postId" ],
|
||||
"supports": {
|
||||
"reusable": false,
|
||||
"html": false,
|
||||
"color": {
|
||||
"gradients": true,
|
||||
"text": false,
|
||||
"__experimentalDefaultControls": {
|
||||
"background": true
|
||||
}
|
||||
},
|
||||
"typography": {
|
||||
"fontSize": true,
|
||||
"lineHeight": true,
|
||||
"__experimentalFontFamily": true,
|
||||
"__experimentalFontWeight": true,
|
||||
"__experimentalFontStyle": true,
|
||||
"__experimentalTextTransform": true,
|
||||
"__experimentalTextDecoration": true,
|
||||
"__experimentalLetterSpacing": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"fontSize": true
|
||||
}
|
||||
},
|
||||
"interactivity": {
|
||||
"clientNavigation": true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
.wp-block-comments-pagination-numbers a{
|
||||
text-decoration:underline;
|
||||
}
|
||||
.wp-block-comments-pagination-numbers .page-numbers{
|
||||
margin-left:2px;
|
||||
}
|
||||
.wp-block-comments-pagination-numbers .page-numbers:last-child{
|
||||
margin-right:0;
|
||||
.wp-block-comments-pagination-numbers a{
|
||||
text-decoration:underline;
|
||||
}
|
||||
.wp-block-comments-pagination-numbers .page-numbers{
|
||||
margin-left:2px;
|
||||
}
|
||||
.wp-block-comments-pagination-numbers .page-numbers:last-child{
|
||||
margin-right:0;
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
.wp-block-comments-pagination-numbers a{
|
||||
text-decoration:underline;
|
||||
}
|
||||
.wp-block-comments-pagination-numbers .page-numbers{
|
||||
margin-right:2px;
|
||||
}
|
||||
.wp-block-comments-pagination-numbers .page-numbers:last-child{
|
||||
margin-right:0;
|
||||
.wp-block-comments-pagination-numbers a{
|
||||
text-decoration:underline;
|
||||
}
|
||||
.wp-block-comments-pagination-numbers .page-numbers{
|
||||
margin-right:2px;
|
||||
}
|
||||
.wp-block-comments-pagination-numbers .page-numbers:last-child{
|
||||
margin-right:0;
|
||||
}
|
||||
@@ -1,52 +1,52 @@
|
||||
<?php
|
||||
/**
|
||||
* Server-side rendering of the `core/comments-pagination-previous` block.
|
||||
*
|
||||
* @package WordPress
|
||||
*/
|
||||
|
||||
/**
|
||||
* Renders the `core/comments-pagination-previous` block on the server.
|
||||
*
|
||||
* @param array $attributes Block attributes.
|
||||
* @param string $content Block default content.
|
||||
* @param WP_Block $block Block instance.
|
||||
*
|
||||
* @return string Returns the previous posts link for the comments pagination.
|
||||
*/
|
||||
function render_block_core_comments_pagination_previous( $attributes, $content, $block ) {
|
||||
$default_label = __( 'Older Comments' );
|
||||
$label = isset( $attributes['label'] ) && ! empty( $attributes['label'] ) ? $attributes['label'] : $default_label;
|
||||
$pagination_arrow = get_comments_pagination_arrow( $block, 'previous' );
|
||||
if ( $pagination_arrow ) {
|
||||
$label = $pagination_arrow . $label;
|
||||
}
|
||||
|
||||
$filter_link_attributes = static function () {
|
||||
return get_block_wrapper_attributes();
|
||||
};
|
||||
add_filter( 'previous_comments_link_attributes', $filter_link_attributes );
|
||||
|
||||
$previous_comments_link = get_previous_comments_link( $label );
|
||||
|
||||
remove_filter( 'previous_comments_link_attributes', $filter_link_attributes );
|
||||
|
||||
if ( ! isset( $previous_comments_link ) ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
return $previous_comments_link;
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers the `core/comments-pagination-previous` block on the server.
|
||||
*/
|
||||
function register_block_core_comments_pagination_previous() {
|
||||
register_block_type_from_metadata(
|
||||
__DIR__ . '/comments-pagination-previous',
|
||||
array(
|
||||
'render_callback' => 'render_block_core_comments_pagination_previous',
|
||||
)
|
||||
);
|
||||
}
|
||||
add_action( 'init', 'register_block_core_comments_pagination_previous' );
|
||||
<?php
|
||||
/**
|
||||
* Server-side rendering of the `core/comments-pagination-previous` block.
|
||||
*
|
||||
* @package WordPress
|
||||
*/
|
||||
|
||||
/**
|
||||
* Renders the `core/comments-pagination-previous` block on the server.
|
||||
*
|
||||
* @param array $attributes Block attributes.
|
||||
* @param string $content Block default content.
|
||||
* @param WP_Block $block Block instance.
|
||||
*
|
||||
* @return string Returns the previous posts link for the comments pagination.
|
||||
*/
|
||||
function render_block_core_comments_pagination_previous( $attributes, $content, $block ) {
|
||||
$default_label = __( 'Older Comments' );
|
||||
$label = isset( $attributes['label'] ) && ! empty( $attributes['label'] ) ? $attributes['label'] : $default_label;
|
||||
$pagination_arrow = get_comments_pagination_arrow( $block, 'previous' );
|
||||
if ( $pagination_arrow ) {
|
||||
$label = $pagination_arrow . $label;
|
||||
}
|
||||
|
||||
$filter_link_attributes = static function () {
|
||||
return get_block_wrapper_attributes();
|
||||
};
|
||||
add_filter( 'previous_comments_link_attributes', $filter_link_attributes );
|
||||
|
||||
$previous_comments_link = get_previous_comments_link( $label );
|
||||
|
||||
remove_filter( 'previous_comments_link_attributes', $filter_link_attributes );
|
||||
|
||||
if ( ! isset( $previous_comments_link ) ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
return $previous_comments_link;
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers the `core/comments-pagination-previous` block on the server.
|
||||
*/
|
||||
function register_block_core_comments_pagination_previous() {
|
||||
register_block_type_from_metadata(
|
||||
__DIR__ . '/comments-pagination-previous',
|
||||
array(
|
||||
'render_callback' => 'render_block_core_comments_pagination_previous',
|
||||
)
|
||||
);
|
||||
}
|
||||
add_action( 'init', 'register_block_core_comments_pagination_previous' );
|
||||
|
||||
@@ -1,43 +1,43 @@
|
||||
{
|
||||
"$schema": "https://schemas.wp.org/trunk/block.json",
|
||||
"apiVersion": 3,
|
||||
"name": "core/comments-pagination-previous",
|
||||
"title": "Comments Previous Page",
|
||||
"category": "theme",
|
||||
"parent": [ "core/comments-pagination" ],
|
||||
"description": "Displays the previous comment's page link.",
|
||||
"textdomain": "default",
|
||||
"attributes": {
|
||||
"label": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"usesContext": [ "postId", "comments/paginationArrow" ],
|
||||
"supports": {
|
||||
"reusable": false,
|
||||
"html": false,
|
||||
"color": {
|
||||
"gradients": true,
|
||||
"text": false,
|
||||
"__experimentalDefaultControls": {
|
||||
"background": true
|
||||
}
|
||||
},
|
||||
"typography": {
|
||||
"fontSize": true,
|
||||
"lineHeight": true,
|
||||
"__experimentalFontFamily": true,
|
||||
"__experimentalFontWeight": true,
|
||||
"__experimentalFontStyle": true,
|
||||
"__experimentalTextTransform": true,
|
||||
"__experimentalTextDecoration": true,
|
||||
"__experimentalLetterSpacing": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"fontSize": true
|
||||
}
|
||||
},
|
||||
"interactivity": {
|
||||
"clientNavigation": true
|
||||
}
|
||||
}
|
||||
}
|
||||
{
|
||||
"$schema": "https://schemas.wp.org/trunk/block.json",
|
||||
"apiVersion": 3,
|
||||
"name": "core/comments-pagination-previous",
|
||||
"title": "Comments Previous Page",
|
||||
"category": "theme",
|
||||
"parent": [ "core/comments-pagination" ],
|
||||
"description": "Displays the previous comment's page link.",
|
||||
"textdomain": "default",
|
||||
"attributes": {
|
||||
"label": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"usesContext": [ "postId", "comments/paginationArrow" ],
|
||||
"supports": {
|
||||
"reusable": false,
|
||||
"html": false,
|
||||
"color": {
|
||||
"gradients": true,
|
||||
"text": false,
|
||||
"__experimentalDefaultControls": {
|
||||
"background": true
|
||||
}
|
||||
},
|
||||
"typography": {
|
||||
"fontSize": true,
|
||||
"lineHeight": true,
|
||||
"__experimentalFontFamily": true,
|
||||
"__experimentalFontWeight": true,
|
||||
"__experimentalFontStyle": true,
|
||||
"__experimentalTextTransform": true,
|
||||
"__experimentalTextDecoration": true,
|
||||
"__experimentalLetterSpacing": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"fontSize": true
|
||||
}
|
||||
},
|
||||
"interactivity": {
|
||||
"clientNavigation": true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,46 +1,46 @@
|
||||
<?php
|
||||
/**
|
||||
* Server-side rendering of the `core/comments-pagination` block.
|
||||
*
|
||||
* @package WordPress
|
||||
*/
|
||||
|
||||
/**
|
||||
* Renders the `core/comments-pagination` block on the server.
|
||||
*
|
||||
* @param array $attributes Block attributes.
|
||||
* @param string $content Block default content.
|
||||
*
|
||||
* @return string Returns the wrapper for the Comments pagination.
|
||||
*/
|
||||
function render_block_core_comments_pagination( $attributes, $content ) {
|
||||
if ( empty( trim( $content ) ) ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
if ( post_password_required() ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$classes = ( isset( $attributes['style']['elements']['link']['color']['text'] ) ) ? 'has-link-color' : '';
|
||||
$wrapper_attributes = get_block_wrapper_attributes( array( 'class' => $classes ) );
|
||||
|
||||
return sprintf(
|
||||
'<div %1$s>%2$s</div>',
|
||||
$wrapper_attributes,
|
||||
$content
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers the `core/comments-pagination` block on the server.
|
||||
*/
|
||||
function register_block_core_comments_pagination() {
|
||||
register_block_type_from_metadata(
|
||||
__DIR__ . '/comments-pagination',
|
||||
array(
|
||||
'render_callback' => 'render_block_core_comments_pagination',
|
||||
)
|
||||
);
|
||||
}
|
||||
add_action( 'init', 'register_block_core_comments_pagination' );
|
||||
<?php
|
||||
/**
|
||||
* Server-side rendering of the `core/comments-pagination` block.
|
||||
*
|
||||
* @package WordPress
|
||||
*/
|
||||
|
||||
/**
|
||||
* Renders the `core/comments-pagination` block on the server.
|
||||
*
|
||||
* @param array $attributes Block attributes.
|
||||
* @param string $content Block default content.
|
||||
*
|
||||
* @return string Returns the wrapper for the Comments pagination.
|
||||
*/
|
||||
function render_block_core_comments_pagination( $attributes, $content ) {
|
||||
if ( empty( trim( $content ) ) ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
if ( post_password_required() ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$classes = ( isset( $attributes['style']['elements']['link']['color']['text'] ) ) ? 'has-link-color' : '';
|
||||
$wrapper_attributes = get_block_wrapper_attributes( array( 'class' => $classes ) );
|
||||
|
||||
return sprintf(
|
||||
'<div %1$s>%2$s</div>',
|
||||
$wrapper_attributes,
|
||||
$content
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers the `core/comments-pagination` block on the server.
|
||||
*/
|
||||
function register_block_core_comments_pagination() {
|
||||
register_block_type_from_metadata(
|
||||
__DIR__ . '/comments-pagination',
|
||||
array(
|
||||
'render_callback' => 'render_block_core_comments_pagination',
|
||||
)
|
||||
);
|
||||
}
|
||||
add_action( 'init', 'register_block_core_comments_pagination' );
|
||||
|
||||
@@ -1,63 +1,63 @@
|
||||
{
|
||||
"$schema": "https://schemas.wp.org/trunk/block.json",
|
||||
"apiVersion": 3,
|
||||
"name": "core/comments-pagination",
|
||||
"title": "Comments Pagination",
|
||||
"category": "theme",
|
||||
"parent": [ "core/comments" ],
|
||||
"allowedBlocks": [
|
||||
"core/comments-pagination-previous",
|
||||
"core/comments-pagination-numbers",
|
||||
"core/comments-pagination-next"
|
||||
],
|
||||
"description": "Displays a paginated navigation to next/previous set of comments, when applicable.",
|
||||
"textdomain": "default",
|
||||
"attributes": {
|
||||
"paginationArrow": {
|
||||
"type": "string",
|
||||
"default": "none"
|
||||
}
|
||||
},
|
||||
"providesContext": {
|
||||
"comments/paginationArrow": "paginationArrow"
|
||||
},
|
||||
"supports": {
|
||||
"align": true,
|
||||
"reusable": false,
|
||||
"html": false,
|
||||
"color": {
|
||||
"gradients": true,
|
||||
"link": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"background": true,
|
||||
"text": true,
|
||||
"link": true
|
||||
}
|
||||
},
|
||||
"layout": {
|
||||
"allowSwitching": false,
|
||||
"allowInheriting": false,
|
||||
"default": {
|
||||
"type": "flex"
|
||||
}
|
||||
},
|
||||
"typography": {
|
||||
"fontSize": true,
|
||||
"lineHeight": true,
|
||||
"__experimentalFontFamily": true,
|
||||
"__experimentalFontWeight": true,
|
||||
"__experimentalFontStyle": true,
|
||||
"__experimentalTextTransform": true,
|
||||
"__experimentalTextDecoration": true,
|
||||
"__experimentalLetterSpacing": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"fontSize": true
|
||||
}
|
||||
},
|
||||
"interactivity": {
|
||||
"clientNavigation": true
|
||||
}
|
||||
},
|
||||
"editorStyle": "wp-block-comments-pagination-editor",
|
||||
"style": "wp-block-comments-pagination"
|
||||
}
|
||||
{
|
||||
"$schema": "https://schemas.wp.org/trunk/block.json",
|
||||
"apiVersion": 3,
|
||||
"name": "core/comments-pagination",
|
||||
"title": "Comments Pagination",
|
||||
"category": "theme",
|
||||
"parent": [ "core/comments" ],
|
||||
"allowedBlocks": [
|
||||
"core/comments-pagination-previous",
|
||||
"core/comments-pagination-numbers",
|
||||
"core/comments-pagination-next"
|
||||
],
|
||||
"description": "Displays a paginated navigation to next/previous set of comments, when applicable.",
|
||||
"textdomain": "default",
|
||||
"attributes": {
|
||||
"paginationArrow": {
|
||||
"type": "string",
|
||||
"default": "none"
|
||||
}
|
||||
},
|
||||
"providesContext": {
|
||||
"comments/paginationArrow": "paginationArrow"
|
||||
},
|
||||
"supports": {
|
||||
"align": true,
|
||||
"reusable": false,
|
||||
"html": false,
|
||||
"color": {
|
||||
"gradients": true,
|
||||
"link": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"background": true,
|
||||
"text": true,
|
||||
"link": true
|
||||
}
|
||||
},
|
||||
"layout": {
|
||||
"allowSwitching": false,
|
||||
"allowInheriting": false,
|
||||
"default": {
|
||||
"type": "flex"
|
||||
}
|
||||
},
|
||||
"typography": {
|
||||
"fontSize": true,
|
||||
"lineHeight": true,
|
||||
"__experimentalFontFamily": true,
|
||||
"__experimentalFontWeight": true,
|
||||
"__experimentalFontStyle": true,
|
||||
"__experimentalTextTransform": true,
|
||||
"__experimentalTextDecoration": true,
|
||||
"__experimentalLetterSpacing": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"fontSize": true
|
||||
}
|
||||
},
|
||||
"interactivity": {
|
||||
"clientNavigation": true
|
||||
}
|
||||
},
|
||||
"editorStyle": "wp-block-comments-pagination-editor",
|
||||
"style": "wp-block-comments-pagination"
|
||||
}
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
.wp-block[data-align=center]>.wp-block-comments-pagination{
|
||||
justify-content:center;
|
||||
}
|
||||
|
||||
.editor-styles-wrapper .wp-block-comments-pagination{
|
||||
max-width:100%;
|
||||
}
|
||||
.editor-styles-wrapper .wp-block-comments-pagination.block-editor-block-list__layout{
|
||||
margin:0;
|
||||
}
|
||||
|
||||
.wp-block-comments-pagination>.wp-block-comments-pagination-next,.wp-block-comments-pagination>.wp-block-comments-pagination-numbers,.wp-block-comments-pagination>.wp-block-comments-pagination-previous{
|
||||
margin-bottom:.5em;
|
||||
margin-right:.5em;
|
||||
margin-top:.5em;
|
||||
}
|
||||
.wp-block-comments-pagination>.wp-block-comments-pagination-next:last-child,.wp-block-comments-pagination>.wp-block-comments-pagination-numbers:last-child,.wp-block-comments-pagination>.wp-block-comments-pagination-previous:last-child{
|
||||
margin-right:0;
|
||||
.wp-block[data-align=center]>.wp-block-comments-pagination{
|
||||
justify-content:center;
|
||||
}
|
||||
|
||||
.editor-styles-wrapper .wp-block-comments-pagination{
|
||||
max-width:100%;
|
||||
}
|
||||
.editor-styles-wrapper .wp-block-comments-pagination.block-editor-block-list__layout{
|
||||
margin:0;
|
||||
}
|
||||
|
||||
.wp-block-comments-pagination>.wp-block-comments-pagination-next,.wp-block-comments-pagination>.wp-block-comments-pagination-numbers,.wp-block-comments-pagination>.wp-block-comments-pagination-previous{
|
||||
margin-bottom:.5em;
|
||||
margin-right:.5em;
|
||||
margin-top:.5em;
|
||||
}
|
||||
.wp-block-comments-pagination>.wp-block-comments-pagination-next:last-child,.wp-block-comments-pagination>.wp-block-comments-pagination-numbers:last-child,.wp-block-comments-pagination>.wp-block-comments-pagination-previous:last-child{
|
||||
margin-right:0;
|
||||
}
|
||||
@@ -1,17 +1,17 @@
|
||||
.wp-block[data-align=center]>.wp-block-comments-pagination{
|
||||
justify-content:center;
|
||||
}
|
||||
|
||||
.editor-styles-wrapper .wp-block-comments-pagination{
|
||||
max-width:100%;
|
||||
}
|
||||
.editor-styles-wrapper .wp-block-comments-pagination.block-editor-block-list__layout{
|
||||
margin:0;
|
||||
}
|
||||
|
||||
.wp-block-comments-pagination>.wp-block-comments-pagination-next,.wp-block-comments-pagination>.wp-block-comments-pagination-numbers,.wp-block-comments-pagination>.wp-block-comments-pagination-previous{
|
||||
margin:.5em .5em .5em 0;
|
||||
}
|
||||
.wp-block-comments-pagination>.wp-block-comments-pagination-next:last-child,.wp-block-comments-pagination>.wp-block-comments-pagination-numbers:last-child,.wp-block-comments-pagination>.wp-block-comments-pagination-previous:last-child{
|
||||
margin-right:0;
|
||||
.wp-block[data-align=center]>.wp-block-comments-pagination{
|
||||
justify-content:center;
|
||||
}
|
||||
|
||||
.editor-styles-wrapper .wp-block-comments-pagination{
|
||||
max-width:100%;
|
||||
}
|
||||
.editor-styles-wrapper .wp-block-comments-pagination.block-editor-block-list__layout{
|
||||
margin:0;
|
||||
}
|
||||
|
||||
.wp-block-comments-pagination>.wp-block-comments-pagination-next,.wp-block-comments-pagination>.wp-block-comments-pagination-numbers,.wp-block-comments-pagination>.wp-block-comments-pagination-previous{
|
||||
margin:.5em .5em .5em 0;
|
||||
}
|
||||
.wp-block-comments-pagination>.wp-block-comments-pagination-next:last-child,.wp-block-comments-pagination>.wp-block-comments-pagination-numbers:last-child,.wp-block-comments-pagination>.wp-block-comments-pagination-previous:last-child{
|
||||
margin-right:0;
|
||||
}
|
||||
@@ -1,24 +1,24 @@
|
||||
.wp-block-comments-pagination>.wp-block-comments-pagination-next,.wp-block-comments-pagination>.wp-block-comments-pagination-numbers,.wp-block-comments-pagination>.wp-block-comments-pagination-previous{
|
||||
margin-bottom:.5em;
|
||||
margin-right:.5em;
|
||||
}
|
||||
.wp-block-comments-pagination>.wp-block-comments-pagination-next:last-child,.wp-block-comments-pagination>.wp-block-comments-pagination-numbers:last-child,.wp-block-comments-pagination>.wp-block-comments-pagination-previous:last-child{
|
||||
margin-right:0;
|
||||
}
|
||||
.wp-block-comments-pagination .wp-block-comments-pagination-previous-arrow{
|
||||
display:inline-block;
|
||||
margin-left:1ch;
|
||||
}
|
||||
.wp-block-comments-pagination .wp-block-comments-pagination-previous-arrow:not(.is-arrow-chevron){
|
||||
transform:scaleX(-1);;
|
||||
}
|
||||
.wp-block-comments-pagination .wp-block-comments-pagination-next-arrow{
|
||||
display:inline-block;
|
||||
margin-right:1ch;
|
||||
}
|
||||
.wp-block-comments-pagination .wp-block-comments-pagination-next-arrow:not(.is-arrow-chevron){
|
||||
transform:scaleX(-1);;
|
||||
}
|
||||
.wp-block-comments-pagination.aligncenter{
|
||||
justify-content:center;
|
||||
.wp-block-comments-pagination>.wp-block-comments-pagination-next,.wp-block-comments-pagination>.wp-block-comments-pagination-numbers,.wp-block-comments-pagination>.wp-block-comments-pagination-previous{
|
||||
margin-bottom:.5em;
|
||||
margin-right:.5em;
|
||||
}
|
||||
.wp-block-comments-pagination>.wp-block-comments-pagination-next:last-child,.wp-block-comments-pagination>.wp-block-comments-pagination-numbers:last-child,.wp-block-comments-pagination>.wp-block-comments-pagination-previous:last-child{
|
||||
margin-right:0;
|
||||
}
|
||||
.wp-block-comments-pagination .wp-block-comments-pagination-previous-arrow{
|
||||
display:inline-block;
|
||||
margin-left:1ch;
|
||||
}
|
||||
.wp-block-comments-pagination .wp-block-comments-pagination-previous-arrow:not(.is-arrow-chevron){
|
||||
transform:scaleX(-1);;
|
||||
}
|
||||
.wp-block-comments-pagination .wp-block-comments-pagination-next-arrow{
|
||||
display:inline-block;
|
||||
margin-right:1ch;
|
||||
}
|
||||
.wp-block-comments-pagination .wp-block-comments-pagination-next-arrow:not(.is-arrow-chevron){
|
||||
transform:scaleX(-1);;
|
||||
}
|
||||
.wp-block-comments-pagination.aligncenter{
|
||||
justify-content:center;
|
||||
}
|
||||
@@ -1,24 +1,24 @@
|
||||
.wp-block-comments-pagination>.wp-block-comments-pagination-next,.wp-block-comments-pagination>.wp-block-comments-pagination-numbers,.wp-block-comments-pagination>.wp-block-comments-pagination-previous{
|
||||
margin-bottom:.5em;
|
||||
margin-right:.5em;
|
||||
}
|
||||
.wp-block-comments-pagination>.wp-block-comments-pagination-next:last-child,.wp-block-comments-pagination>.wp-block-comments-pagination-numbers:last-child,.wp-block-comments-pagination>.wp-block-comments-pagination-previous:last-child{
|
||||
margin-right:0;
|
||||
}
|
||||
.wp-block-comments-pagination .wp-block-comments-pagination-previous-arrow{
|
||||
display:inline-block;
|
||||
margin-right:1ch;
|
||||
}
|
||||
.wp-block-comments-pagination .wp-block-comments-pagination-previous-arrow:not(.is-arrow-chevron){
|
||||
transform:scaleX(1);
|
||||
}
|
||||
.wp-block-comments-pagination .wp-block-comments-pagination-next-arrow{
|
||||
display:inline-block;
|
||||
margin-left:1ch;
|
||||
}
|
||||
.wp-block-comments-pagination .wp-block-comments-pagination-next-arrow:not(.is-arrow-chevron){
|
||||
transform:scaleX(1);
|
||||
}
|
||||
.wp-block-comments-pagination.aligncenter{
|
||||
justify-content:center;
|
||||
.wp-block-comments-pagination>.wp-block-comments-pagination-next,.wp-block-comments-pagination>.wp-block-comments-pagination-numbers,.wp-block-comments-pagination>.wp-block-comments-pagination-previous{
|
||||
margin-bottom:.5em;
|
||||
margin-right:.5em;
|
||||
}
|
||||
.wp-block-comments-pagination>.wp-block-comments-pagination-next:last-child,.wp-block-comments-pagination>.wp-block-comments-pagination-numbers:last-child,.wp-block-comments-pagination>.wp-block-comments-pagination-previous:last-child{
|
||||
margin-right:0;
|
||||
}
|
||||
.wp-block-comments-pagination .wp-block-comments-pagination-previous-arrow{
|
||||
display:inline-block;
|
||||
margin-right:1ch;
|
||||
}
|
||||
.wp-block-comments-pagination .wp-block-comments-pagination-previous-arrow:not(.is-arrow-chevron){
|
||||
transform:scaleX(1);
|
||||
}
|
||||
.wp-block-comments-pagination .wp-block-comments-pagination-next-arrow{
|
||||
display:inline-block;
|
||||
margin-left:1ch;
|
||||
}
|
||||
.wp-block-comments-pagination .wp-block-comments-pagination-next-arrow:not(.is-arrow-chevron){
|
||||
transform:scaleX(1);
|
||||
}
|
||||
.wp-block-comments-pagination.aligncenter{
|
||||
justify-content:center;
|
||||
}
|
||||
@@ -1,97 +1,97 @@
|
||||
<?php
|
||||
/**
|
||||
* Server-side rendering of the `core/comments-title` block.
|
||||
*
|
||||
* @package WordPress
|
||||
*/
|
||||
|
||||
/**
|
||||
* Renders the `core/comments-title` block on the server.
|
||||
*
|
||||
* @param array $attributes Block attributes.
|
||||
*
|
||||
* @return string Return the post comments title.
|
||||
*/
|
||||
function render_block_core_comments_title( $attributes ) {
|
||||
|
||||
if ( post_password_required() ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$align_class_name = empty( $attributes['textAlign'] ) ? '' : "has-text-align-{$attributes['textAlign']}";
|
||||
$show_post_title = ! empty( $attributes['showPostTitle'] ) && $attributes['showPostTitle'];
|
||||
$show_comments_count = ! empty( $attributes['showCommentsCount'] ) && $attributes['showCommentsCount'];
|
||||
$wrapper_attributes = get_block_wrapper_attributes( array( 'class' => $align_class_name ) );
|
||||
$comments_count = get_comments_number();
|
||||
/* translators: %s: Post title. */
|
||||
$post_title = sprintf( __( '“%s”' ), get_the_title() );
|
||||
$tag_name = 'h2';
|
||||
if ( isset( $attributes['level'] ) ) {
|
||||
$tag_name = 'h' . $attributes['level'];
|
||||
}
|
||||
|
||||
if ( '0' === $comments_count ) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ( $show_comments_count ) {
|
||||
if ( $show_post_title ) {
|
||||
if ( '1' === $comments_count ) {
|
||||
/* translators: %s: Post title. */
|
||||
$comments_title = sprintf( __( 'One response to %s' ), $post_title );
|
||||
} else {
|
||||
$comments_title = sprintf(
|
||||
/* translators: 1: Number of comments, 2: Post title. */
|
||||
_n(
|
||||
'%1$s response to %2$s',
|
||||
'%1$s responses to %2$s',
|
||||
$comments_count
|
||||
),
|
||||
number_format_i18n( $comments_count ),
|
||||
$post_title
|
||||
);
|
||||
}
|
||||
} elseif ( '1' === $comments_count ) {
|
||||
$comments_title = __( 'One response' );
|
||||
} else {
|
||||
$comments_title = sprintf(
|
||||
/* translators: %s: Number of comments. */
|
||||
_n( '%s response', '%s responses', $comments_count ),
|
||||
number_format_i18n( $comments_count )
|
||||
);
|
||||
}
|
||||
} elseif ( $show_post_title ) {
|
||||
if ( '1' === $comments_count ) {
|
||||
/* translators: %s: Post title. */
|
||||
$comments_title = sprintf( __( 'Response to %s' ), $post_title );
|
||||
} else {
|
||||
/* translators: %s: Post title. */
|
||||
$comments_title = sprintf( __( 'Responses to %s' ), $post_title );
|
||||
}
|
||||
} elseif ( '1' === $comments_count ) {
|
||||
$comments_title = __( 'Response' );
|
||||
} else {
|
||||
$comments_title = __( 'Responses' );
|
||||
}
|
||||
|
||||
return sprintf(
|
||||
'<%1$s id="comments" %2$s>%3$s</%1$s>',
|
||||
$tag_name,
|
||||
$wrapper_attributes,
|
||||
$comments_title
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers the `core/comments-title` block on the server.
|
||||
*/
|
||||
function register_block_core_comments_title() {
|
||||
register_block_type_from_metadata(
|
||||
__DIR__ . '/comments-title',
|
||||
array(
|
||||
'render_callback' => 'render_block_core_comments_title',
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
add_action( 'init', 'register_block_core_comments_title' );
|
||||
<?php
|
||||
/**
|
||||
* Server-side rendering of the `core/comments-title` block.
|
||||
*
|
||||
* @package WordPress
|
||||
*/
|
||||
|
||||
/**
|
||||
* Renders the `core/comments-title` block on the server.
|
||||
*
|
||||
* @param array $attributes Block attributes.
|
||||
*
|
||||
* @return string Return the post comments title.
|
||||
*/
|
||||
function render_block_core_comments_title( $attributes ) {
|
||||
|
||||
if ( post_password_required() ) {
|
||||
return;
|
||||
}
|
||||
|
||||
$align_class_name = empty( $attributes['textAlign'] ) ? '' : "has-text-align-{$attributes['textAlign']}";
|
||||
$show_post_title = ! empty( $attributes['showPostTitle'] ) && $attributes['showPostTitle'];
|
||||
$show_comments_count = ! empty( $attributes['showCommentsCount'] ) && $attributes['showCommentsCount'];
|
||||
$wrapper_attributes = get_block_wrapper_attributes( array( 'class' => $align_class_name ) );
|
||||
$comments_count = get_comments_number();
|
||||
/* translators: %s: Post title. */
|
||||
$post_title = sprintf( __( '“%s”' ), get_the_title() );
|
||||
$tag_name = 'h2';
|
||||
if ( isset( $attributes['level'] ) ) {
|
||||
$tag_name = 'h' . $attributes['level'];
|
||||
}
|
||||
|
||||
if ( '0' === $comments_count ) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ( $show_comments_count ) {
|
||||
if ( $show_post_title ) {
|
||||
if ( '1' === $comments_count ) {
|
||||
/* translators: %s: Post title. */
|
||||
$comments_title = sprintf( __( 'One response to %s' ), $post_title );
|
||||
} else {
|
||||
$comments_title = sprintf(
|
||||
/* translators: 1: Number of comments, 2: Post title. */
|
||||
_n(
|
||||
'%1$s response to %2$s',
|
||||
'%1$s responses to %2$s',
|
||||
$comments_count
|
||||
),
|
||||
number_format_i18n( $comments_count ),
|
||||
$post_title
|
||||
);
|
||||
}
|
||||
} elseif ( '1' === $comments_count ) {
|
||||
$comments_title = __( 'One response' );
|
||||
} else {
|
||||
$comments_title = sprintf(
|
||||
/* translators: %s: Number of comments. */
|
||||
_n( '%s response', '%s responses', $comments_count ),
|
||||
number_format_i18n( $comments_count )
|
||||
);
|
||||
}
|
||||
} elseif ( $show_post_title ) {
|
||||
if ( '1' === $comments_count ) {
|
||||
/* translators: %s: Post title. */
|
||||
$comments_title = sprintf( __( 'Response to %s' ), $post_title );
|
||||
} else {
|
||||
/* translators: %s: Post title. */
|
||||
$comments_title = sprintf( __( 'Responses to %s' ), $post_title );
|
||||
}
|
||||
} elseif ( '1' === $comments_count ) {
|
||||
$comments_title = __( 'Response' );
|
||||
} else {
|
||||
$comments_title = __( 'Responses' );
|
||||
}
|
||||
|
||||
return sprintf(
|
||||
'<%1$s id="comments" %2$s>%3$s</%1$s>',
|
||||
$tag_name,
|
||||
$wrapper_attributes,
|
||||
$comments_title
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers the `core/comments-title` block on the server.
|
||||
*/
|
||||
function register_block_core_comments_title() {
|
||||
register_block_type_from_metadata(
|
||||
__DIR__ . '/comments-title',
|
||||
array(
|
||||
'render_callback' => 'render_block_core_comments_title',
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
add_action( 'init', 'register_block_core_comments_title' );
|
||||
|
||||
@@ -1,69 +1,69 @@
|
||||
{
|
||||
"$schema": "https://schemas.wp.org/trunk/block.json",
|
||||
"apiVersion": 3,
|
||||
"name": "core/comments-title",
|
||||
"title": "Comments Title",
|
||||
"category": "theme",
|
||||
"ancestor": [ "core/comments" ],
|
||||
"description": "Displays a title with the number of comments.",
|
||||
"textdomain": "default",
|
||||
"usesContext": [ "postId", "postType" ],
|
||||
"attributes": {
|
||||
"textAlign": {
|
||||
"type": "string"
|
||||
},
|
||||
"showPostTitle": {
|
||||
"type": "boolean",
|
||||
"default": true
|
||||
},
|
||||
"showCommentsCount": {
|
||||
"type": "boolean",
|
||||
"default": true
|
||||
},
|
||||
"level": {
|
||||
"type": "number",
|
||||
"default": 2
|
||||
}
|
||||
},
|
||||
"supports": {
|
||||
"anchor": false,
|
||||
"align": true,
|
||||
"html": false,
|
||||
"__experimentalBorder": {
|
||||
"radius": true,
|
||||
"color": true,
|
||||
"width": true,
|
||||
"style": true
|
||||
},
|
||||
"color": {
|
||||
"gradients": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"background": true,
|
||||
"text": true
|
||||
}
|
||||
},
|
||||
"spacing": {
|
||||
"margin": true,
|
||||
"padding": true
|
||||
},
|
||||
"typography": {
|
||||
"fontSize": true,
|
||||
"lineHeight": true,
|
||||
"__experimentalFontFamily": true,
|
||||
"__experimentalFontWeight": true,
|
||||
"__experimentalFontStyle": true,
|
||||
"__experimentalTextTransform": true,
|
||||
"__experimentalTextDecoration": true,
|
||||
"__experimentalLetterSpacing": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"fontSize": true,
|
||||
"__experimentalFontFamily": true,
|
||||
"__experimentalFontStyle": true,
|
||||
"__experimentalFontWeight": true
|
||||
}
|
||||
},
|
||||
"interactivity": {
|
||||
"clientNavigation": true
|
||||
}
|
||||
}
|
||||
}
|
||||
{
|
||||
"$schema": "https://schemas.wp.org/trunk/block.json",
|
||||
"apiVersion": 3,
|
||||
"name": "core/comments-title",
|
||||
"title": "Comments Title",
|
||||
"category": "theme",
|
||||
"ancestor": [ "core/comments" ],
|
||||
"description": "Displays a title with the number of comments.",
|
||||
"textdomain": "default",
|
||||
"usesContext": [ "postId", "postType" ],
|
||||
"attributes": {
|
||||
"textAlign": {
|
||||
"type": "string"
|
||||
},
|
||||
"showPostTitle": {
|
||||
"type": "boolean",
|
||||
"default": true
|
||||
},
|
||||
"showCommentsCount": {
|
||||
"type": "boolean",
|
||||
"default": true
|
||||
},
|
||||
"level": {
|
||||
"type": "number",
|
||||
"default": 2
|
||||
}
|
||||
},
|
||||
"supports": {
|
||||
"anchor": false,
|
||||
"align": true,
|
||||
"html": false,
|
||||
"__experimentalBorder": {
|
||||
"radius": true,
|
||||
"color": true,
|
||||
"width": true,
|
||||
"style": true
|
||||
},
|
||||
"color": {
|
||||
"gradients": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"background": true,
|
||||
"text": true
|
||||
}
|
||||
},
|
||||
"spacing": {
|
||||
"margin": true,
|
||||
"padding": true
|
||||
},
|
||||
"typography": {
|
||||
"fontSize": true,
|
||||
"lineHeight": true,
|
||||
"__experimentalFontFamily": true,
|
||||
"__experimentalFontWeight": true,
|
||||
"__experimentalFontStyle": true,
|
||||
"__experimentalTextTransform": true,
|
||||
"__experimentalTextDecoration": true,
|
||||
"__experimentalLetterSpacing": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"fontSize": true,
|
||||
"__experimentalFontFamily": true,
|
||||
"__experimentalFontStyle": true,
|
||||
"__experimentalFontWeight": true
|
||||
}
|
||||
},
|
||||
"interactivity": {
|
||||
"clientNavigation": true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
.wp-block-comments-title.has-background{
|
||||
padding:inherit;
|
||||
.wp-block-comments-title.has-background{
|
||||
padding:inherit;
|
||||
}
|
||||
@@ -1,3 +1,3 @@
|
||||
.wp-block-comments-title.has-background{
|
||||
padding:inherit;
|
||||
.wp-block-comments-title.has-background{
|
||||
padding:inherit;
|
||||
}
|
||||
@@ -1,215 +1,215 @@
|
||||
<?php
|
||||
/**
|
||||
* Server-side rendering of the `core/comments` block.
|
||||
*
|
||||
* @package WordPress
|
||||
*/
|
||||
|
||||
/**
|
||||
* Renders the `core/comments` block on the server.
|
||||
*
|
||||
* This render callback is mainly for rendering a dynamic, legacy version of
|
||||
* this block (the old `core/post-comments`). It uses the `comments_template()`
|
||||
* function to generate the output, in the same way as classic PHP themes.
|
||||
*
|
||||
* As this callback will always run during SSR, first we need to check whether
|
||||
* the block is in legacy mode. If not, the HTML generated in the editor is
|
||||
* returned instead.
|
||||
*
|
||||
* @param array $attributes Block attributes.
|
||||
* @param string $content Block default content.
|
||||
* @param WP_Block $block Block instance.
|
||||
* @return string Returns the filtered post comments for the current post wrapped inside "p" tags.
|
||||
*/
|
||||
function render_block_core_comments( $attributes, $content, $block ) {
|
||||
global $post;
|
||||
|
||||
$post_id = $block->context['postId'];
|
||||
if ( ! isset( $post_id ) ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
// Return early if there are no comments and comments are closed.
|
||||
if ( ! comments_open( $post_id ) && (int) get_comments_number( $post_id ) === 0 ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
// If this isn't the legacy block, we need to render the static version of this block.
|
||||
$is_legacy = 'core/post-comments' === $block->name || ! empty( $attributes['legacy'] );
|
||||
if ( ! $is_legacy ) {
|
||||
return $block->render( array( 'dynamic' => false ) );
|
||||
}
|
||||
|
||||
$post_before = $post;
|
||||
$post = get_post( $post_id );
|
||||
setup_postdata( $post );
|
||||
|
||||
ob_start();
|
||||
|
||||
/*
|
||||
* There's a deprecation warning generated by WP Core.
|
||||
* Ideally this deprecation is removed from Core.
|
||||
* In the meantime, this removes it from the output.
|
||||
*/
|
||||
add_filter( 'deprecated_file_trigger_error', '__return_false' );
|
||||
comments_template();
|
||||
remove_filter( 'deprecated_file_trigger_error', '__return_false' );
|
||||
|
||||
$output = ob_get_clean();
|
||||
$post = $post_before;
|
||||
|
||||
$classnames = array();
|
||||
// Adds the old class name for styles' backwards compatibility.
|
||||
if ( isset( $attributes['legacy'] ) ) {
|
||||
$classnames[] = 'wp-block-post-comments';
|
||||
}
|
||||
if ( isset( $attributes['textAlign'] ) ) {
|
||||
$classnames[] = 'has-text-align-' . $attributes['textAlign'];
|
||||
}
|
||||
|
||||
$wrapper_attributes = get_block_wrapper_attributes(
|
||||
array( 'class' => implode( ' ', $classnames ) )
|
||||
);
|
||||
|
||||
/*
|
||||
* Enqueues scripts and styles required only for the legacy version. That is
|
||||
* why they are not defined in `block.json`.
|
||||
*/
|
||||
wp_enqueue_script( 'comment-reply' );
|
||||
enqueue_legacy_post_comments_block_styles( $block->name );
|
||||
|
||||
return sprintf( '<div %1$s>%2$s</div>', $wrapper_attributes, $output );
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers the `core/comments` block on the server.
|
||||
*/
|
||||
function register_block_core_comments() {
|
||||
register_block_type_from_metadata(
|
||||
__DIR__ . '/comments',
|
||||
array(
|
||||
'render_callback' => 'render_block_core_comments',
|
||||
'skip_inner_blocks' => true,
|
||||
)
|
||||
);
|
||||
}
|
||||
add_action( 'init', 'register_block_core_comments' );
|
||||
|
||||
/**
|
||||
* Use the button block classes for the form-submit button.
|
||||
*
|
||||
* @param array $fields The default comment form arguments.
|
||||
*
|
||||
* @return array Returns the modified fields.
|
||||
*/
|
||||
function comments_block_form_defaults( $fields ) {
|
||||
if ( wp_is_block_theme() ) {
|
||||
$fields['submit_button'] = '<input name="%1$s" type="submit" id="%2$s" class="%3$s wp-block-button__link ' . wp_theme_get_element_class_name( 'button' ) . '" value="%4$s" />';
|
||||
$fields['submit_field'] = '<p class="form-submit wp-block-button">%1$s %2$s</p>';
|
||||
}
|
||||
|
||||
return $fields;
|
||||
}
|
||||
add_filter( 'comment_form_defaults', 'comments_block_form_defaults' );
|
||||
|
||||
/**
|
||||
* Enqueues styles from the legacy `core/post-comments` block. These styles are
|
||||
* required only by the block's fallback.
|
||||
*
|
||||
* @param string $block_name Name of the new block type.
|
||||
*/
|
||||
function enqueue_legacy_post_comments_block_styles( $block_name ) {
|
||||
static $are_styles_enqueued = false;
|
||||
|
||||
if ( ! $are_styles_enqueued ) {
|
||||
$handles = array(
|
||||
'wp-block-post-comments',
|
||||
'wp-block-buttons',
|
||||
'wp-block-button',
|
||||
);
|
||||
foreach ( $handles as $handle ) {
|
||||
wp_enqueue_block_style( $block_name, array( 'handle' => $handle ) );
|
||||
}
|
||||
$are_styles_enqueued = true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Ensures backwards compatibility for any users running the Gutenberg plugin
|
||||
* who have used Post Comments before it was merged into Comments Query Loop.
|
||||
*
|
||||
* The same approach was followed when core/query-loop was renamed to
|
||||
* core/post-template.
|
||||
*
|
||||
* @see https://github.com/WordPress/gutenberg/pull/41807
|
||||
* @see https://github.com/WordPress/gutenberg/pull/32514
|
||||
*/
|
||||
function register_legacy_post_comments_block() {
|
||||
$registry = WP_Block_Type_Registry::get_instance();
|
||||
|
||||
/*
|
||||
* Remove the old `post-comments` block if it was already registered, as it
|
||||
* is about to be replaced by the type defined below.
|
||||
*/
|
||||
if ( $registry->is_registered( 'core/post-comments' ) ) {
|
||||
unregister_block_type( 'core/post-comments' );
|
||||
}
|
||||
|
||||
// Recreate the legacy block metadata.
|
||||
$metadata = array(
|
||||
'name' => 'core/post-comments',
|
||||
'category' => 'theme',
|
||||
'attributes' => array(
|
||||
'textAlign' => array(
|
||||
'type' => 'string',
|
||||
),
|
||||
),
|
||||
'uses_context' => array(
|
||||
'postId',
|
||||
'postType',
|
||||
),
|
||||
'supports' => array(
|
||||
'html' => false,
|
||||
'align' => array( 'wide', 'full' ),
|
||||
'typography' => array(
|
||||
'fontSize' => true,
|
||||
'lineHeight' => true,
|
||||
'__experimentalFontStyle' => true,
|
||||
'__experimentalFontWeight' => true,
|
||||
'__experimentalLetterSpacing' => true,
|
||||
'__experimentalTextTransform' => true,
|
||||
'__experimentalDefaultControls' => array(
|
||||
'fontSize' => true,
|
||||
),
|
||||
),
|
||||
'color' => array(
|
||||
'gradients' => true,
|
||||
'link' => true,
|
||||
'__experimentalDefaultControls' => array(
|
||||
'background' => true,
|
||||
'text' => true,
|
||||
),
|
||||
),
|
||||
'inserter' => false,
|
||||
),
|
||||
'style' => array(
|
||||
'wp-block-post-comments',
|
||||
'wp-block-buttons',
|
||||
'wp-block-button',
|
||||
),
|
||||
'render_callback' => 'render_block_core_comments',
|
||||
'skip_inner_blocks' => true,
|
||||
);
|
||||
|
||||
/*
|
||||
* Filters the metadata object, the same way it's done inside
|
||||
* `register_block_type_from_metadata()`. This applies some default filters,
|
||||
* like `_wp_multiple_block_styles`, which is required in this case because
|
||||
* the block has multiple styles.
|
||||
*/
|
||||
/** This filter is documented in wp-includes/blocks.php */
|
||||
$metadata = apply_filters( 'block_type_metadata', $metadata );
|
||||
|
||||
register_block_type( 'core/post-comments', $metadata );
|
||||
}
|
||||
add_action( 'init', 'register_legacy_post_comments_block', 21 );
|
||||
<?php
|
||||
/**
|
||||
* Server-side rendering of the `core/comments` block.
|
||||
*
|
||||
* @package WordPress
|
||||
*/
|
||||
|
||||
/**
|
||||
* Renders the `core/comments` block on the server.
|
||||
*
|
||||
* This render callback is mainly for rendering a dynamic, legacy version of
|
||||
* this block (the old `core/post-comments`). It uses the `comments_template()`
|
||||
* function to generate the output, in the same way as classic PHP themes.
|
||||
*
|
||||
* As this callback will always run during SSR, first we need to check whether
|
||||
* the block is in legacy mode. If not, the HTML generated in the editor is
|
||||
* returned instead.
|
||||
*
|
||||
* @param array $attributes Block attributes.
|
||||
* @param string $content Block default content.
|
||||
* @param WP_Block $block Block instance.
|
||||
* @return string Returns the filtered post comments for the current post wrapped inside "p" tags.
|
||||
*/
|
||||
function render_block_core_comments( $attributes, $content, $block ) {
|
||||
global $post;
|
||||
|
||||
$post_id = $block->context['postId'];
|
||||
if ( ! isset( $post_id ) ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
// Return early if there are no comments and comments are closed.
|
||||
if ( ! comments_open( $post_id ) && (int) get_comments_number( $post_id ) === 0 ) {
|
||||
return '';
|
||||
}
|
||||
|
||||
// If this isn't the legacy block, we need to render the static version of this block.
|
||||
$is_legacy = 'core/post-comments' === $block->name || ! empty( $attributes['legacy'] );
|
||||
if ( ! $is_legacy ) {
|
||||
return $block->render( array( 'dynamic' => false ) );
|
||||
}
|
||||
|
||||
$post_before = $post;
|
||||
$post = get_post( $post_id );
|
||||
setup_postdata( $post );
|
||||
|
||||
ob_start();
|
||||
|
||||
/*
|
||||
* There's a deprecation warning generated by WP Core.
|
||||
* Ideally this deprecation is removed from Core.
|
||||
* In the meantime, this removes it from the output.
|
||||
*/
|
||||
add_filter( 'deprecated_file_trigger_error', '__return_false' );
|
||||
comments_template();
|
||||
remove_filter( 'deprecated_file_trigger_error', '__return_false' );
|
||||
|
||||
$output = ob_get_clean();
|
||||
$post = $post_before;
|
||||
|
||||
$classnames = array();
|
||||
// Adds the old class name for styles' backwards compatibility.
|
||||
if ( isset( $attributes['legacy'] ) ) {
|
||||
$classnames[] = 'wp-block-post-comments';
|
||||
}
|
||||
if ( isset( $attributes['textAlign'] ) ) {
|
||||
$classnames[] = 'has-text-align-' . $attributes['textAlign'];
|
||||
}
|
||||
|
||||
$wrapper_attributes = get_block_wrapper_attributes(
|
||||
array( 'class' => implode( ' ', $classnames ) )
|
||||
);
|
||||
|
||||
/*
|
||||
* Enqueues scripts and styles required only for the legacy version. That is
|
||||
* why they are not defined in `block.json`.
|
||||
*/
|
||||
wp_enqueue_script( 'comment-reply' );
|
||||
enqueue_legacy_post_comments_block_styles( $block->name );
|
||||
|
||||
return sprintf( '<div %1$s>%2$s</div>', $wrapper_attributes, $output );
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers the `core/comments` block on the server.
|
||||
*/
|
||||
function register_block_core_comments() {
|
||||
register_block_type_from_metadata(
|
||||
__DIR__ . '/comments',
|
||||
array(
|
||||
'render_callback' => 'render_block_core_comments',
|
||||
'skip_inner_blocks' => true,
|
||||
)
|
||||
);
|
||||
}
|
||||
add_action( 'init', 'register_block_core_comments' );
|
||||
|
||||
/**
|
||||
* Use the button block classes for the form-submit button.
|
||||
*
|
||||
* @param array $fields The default comment form arguments.
|
||||
*
|
||||
* @return array Returns the modified fields.
|
||||
*/
|
||||
function comments_block_form_defaults( $fields ) {
|
||||
if ( wp_is_block_theme() ) {
|
||||
$fields['submit_button'] = '<input name="%1$s" type="submit" id="%2$s" class="%3$s wp-block-button__link ' . wp_theme_get_element_class_name( 'button' ) . '" value="%4$s" />';
|
||||
$fields['submit_field'] = '<p class="form-submit wp-block-button">%1$s %2$s</p>';
|
||||
}
|
||||
|
||||
return $fields;
|
||||
}
|
||||
add_filter( 'comment_form_defaults', 'comments_block_form_defaults' );
|
||||
|
||||
/**
|
||||
* Enqueues styles from the legacy `core/post-comments` block. These styles are
|
||||
* required only by the block's fallback.
|
||||
*
|
||||
* @param string $block_name Name of the new block type.
|
||||
*/
|
||||
function enqueue_legacy_post_comments_block_styles( $block_name ) {
|
||||
static $are_styles_enqueued = false;
|
||||
|
||||
if ( ! $are_styles_enqueued ) {
|
||||
$handles = array(
|
||||
'wp-block-post-comments',
|
||||
'wp-block-buttons',
|
||||
'wp-block-button',
|
||||
);
|
||||
foreach ( $handles as $handle ) {
|
||||
wp_enqueue_block_style( $block_name, array( 'handle' => $handle ) );
|
||||
}
|
||||
$are_styles_enqueued = true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Ensures backwards compatibility for any users running the Gutenberg plugin
|
||||
* who have used Post Comments before it was merged into Comments Query Loop.
|
||||
*
|
||||
* The same approach was followed when core/query-loop was renamed to
|
||||
* core/post-template.
|
||||
*
|
||||
* @see https://github.com/WordPress/gutenberg/pull/41807
|
||||
* @see https://github.com/WordPress/gutenberg/pull/32514
|
||||
*/
|
||||
function register_legacy_post_comments_block() {
|
||||
$registry = WP_Block_Type_Registry::get_instance();
|
||||
|
||||
/*
|
||||
* Remove the old `post-comments` block if it was already registered, as it
|
||||
* is about to be replaced by the type defined below.
|
||||
*/
|
||||
if ( $registry->is_registered( 'core/post-comments' ) ) {
|
||||
unregister_block_type( 'core/post-comments' );
|
||||
}
|
||||
|
||||
// Recreate the legacy block metadata.
|
||||
$metadata = array(
|
||||
'name' => 'core/post-comments',
|
||||
'category' => 'theme',
|
||||
'attributes' => array(
|
||||
'textAlign' => array(
|
||||
'type' => 'string',
|
||||
),
|
||||
),
|
||||
'uses_context' => array(
|
||||
'postId',
|
||||
'postType',
|
||||
),
|
||||
'supports' => array(
|
||||
'html' => false,
|
||||
'align' => array( 'wide', 'full' ),
|
||||
'typography' => array(
|
||||
'fontSize' => true,
|
||||
'lineHeight' => true,
|
||||
'__experimentalFontStyle' => true,
|
||||
'__experimentalFontWeight' => true,
|
||||
'__experimentalLetterSpacing' => true,
|
||||
'__experimentalTextTransform' => true,
|
||||
'__experimentalDefaultControls' => array(
|
||||
'fontSize' => true,
|
||||
),
|
||||
),
|
||||
'color' => array(
|
||||
'gradients' => true,
|
||||
'link' => true,
|
||||
'__experimentalDefaultControls' => array(
|
||||
'background' => true,
|
||||
'text' => true,
|
||||
),
|
||||
),
|
||||
'inserter' => false,
|
||||
),
|
||||
'style' => array(
|
||||
'wp-block-post-comments',
|
||||
'wp-block-buttons',
|
||||
'wp-block-button',
|
||||
),
|
||||
'render_callback' => 'render_block_core_comments',
|
||||
'skip_inner_blocks' => true,
|
||||
);
|
||||
|
||||
/*
|
||||
* Filters the metadata object, the same way it's done inside
|
||||
* `register_block_type_from_metadata()`. This applies some default filters,
|
||||
* like `_wp_multiple_block_styles`, which is required in this case because
|
||||
* the block has multiple styles.
|
||||
*/
|
||||
/** This filter is documented in wp-includes/blocks.php */
|
||||
$metadata = apply_filters( 'block_type_metadata', $metadata );
|
||||
|
||||
register_block_type( 'core/post-comments', $metadata );
|
||||
}
|
||||
add_action( 'init', 'register_legacy_post_comments_block', 21 );
|
||||
|
||||
@@ -1,52 +1,52 @@
|
||||
{
|
||||
"$schema": "https://schemas.wp.org/trunk/block.json",
|
||||
"apiVersion": 3,
|
||||
"name": "core/comments",
|
||||
"title": "Comments",
|
||||
"category": "theme",
|
||||
"description": "An advanced block that allows displaying post comments using different visual configurations.",
|
||||
"textdomain": "default",
|
||||
"attributes": {
|
||||
"tagName": {
|
||||
"type": "string",
|
||||
"default": "div"
|
||||
},
|
||||
"legacy": {
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
}
|
||||
},
|
||||
"supports": {
|
||||
"align": [ "wide", "full" ],
|
||||
"html": false,
|
||||
"color": {
|
||||
"gradients": true,
|
||||
"heading": true,
|
||||
"link": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"background": true,
|
||||
"text": true,
|
||||
"link": true
|
||||
}
|
||||
},
|
||||
"spacing": {
|
||||
"margin": true,
|
||||
"padding": true
|
||||
},
|
||||
"typography": {
|
||||
"fontSize": true,
|
||||
"lineHeight": true,
|
||||
"__experimentalFontFamily": true,
|
||||
"__experimentalFontWeight": true,
|
||||
"__experimentalFontStyle": true,
|
||||
"__experimentalTextTransform": true,
|
||||
"__experimentalTextDecoration": true,
|
||||
"__experimentalLetterSpacing": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"fontSize": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"editorStyle": "wp-block-comments-editor",
|
||||
"usesContext": [ "postId", "postType" ]
|
||||
}
|
||||
{
|
||||
"$schema": "https://schemas.wp.org/trunk/block.json",
|
||||
"apiVersion": 3,
|
||||
"name": "core/comments",
|
||||
"title": "Comments",
|
||||
"category": "theme",
|
||||
"description": "An advanced block that allows displaying post comments using different visual configurations.",
|
||||
"textdomain": "default",
|
||||
"attributes": {
|
||||
"tagName": {
|
||||
"type": "string",
|
||||
"default": "div"
|
||||
},
|
||||
"legacy": {
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
}
|
||||
},
|
||||
"supports": {
|
||||
"align": [ "wide", "full" ],
|
||||
"html": false,
|
||||
"color": {
|
||||
"gradients": true,
|
||||
"heading": true,
|
||||
"link": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"background": true,
|
||||
"text": true,
|
||||
"link": true
|
||||
}
|
||||
},
|
||||
"spacing": {
|
||||
"margin": true,
|
||||
"padding": true
|
||||
},
|
||||
"typography": {
|
||||
"fontSize": true,
|
||||
"lineHeight": true,
|
||||
"__experimentalFontFamily": true,
|
||||
"__experimentalFontWeight": true,
|
||||
"__experimentalFontStyle": true,
|
||||
"__experimentalTextTransform": true,
|
||||
"__experimentalTextDecoration": true,
|
||||
"__experimentalLetterSpacing": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"fontSize": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"editorStyle": "wp-block-comments-editor",
|
||||
"usesContext": [ "postId", "postType" ]
|
||||
}
|
||||
|
||||
@@ -1,111 +1,111 @@
|
||||
.wp-block-comments__legacy-placeholder,.wp-block-post-comments{
|
||||
box-sizing:border-box;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .alignleft,.wp-block-post-comments .alignleft{
|
||||
float:right;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .alignright,.wp-block-post-comments .alignright{
|
||||
float:left;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .navigation:after,.wp-block-post-comments .navigation:after{
|
||||
clear:both;
|
||||
content:"";
|
||||
display:table;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .commentlist,.wp-block-post-comments .commentlist{
|
||||
clear:both;
|
||||
list-style:none;
|
||||
margin:0;
|
||||
padding:0;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .commentlist .comment,.wp-block-post-comments .commentlist .comment{
|
||||
min-height:2.25em;
|
||||
padding-right:3.25em;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .commentlist .comment p,.wp-block-post-comments .commentlist .comment p{
|
||||
font-size:1em;
|
||||
line-height:1.8;
|
||||
margin:1em 0;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .commentlist .children,.wp-block-post-comments .commentlist .children{
|
||||
list-style:none;
|
||||
margin:0;
|
||||
padding:0;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .comment-author,.wp-block-post-comments .comment-author{
|
||||
line-height:1.5;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .comment-author .avatar,.wp-block-post-comments .comment-author .avatar{
|
||||
border-radius:1.5em;
|
||||
display:block;
|
||||
float:right;
|
||||
height:2.5em;
|
||||
margin-left:.75em;
|
||||
margin-top:.5em;
|
||||
width:2.5em;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .comment-author cite,.wp-block-post-comments .comment-author cite{
|
||||
font-style:normal;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .comment-meta,.wp-block-post-comments .comment-meta{
|
||||
font-size:.875em;
|
||||
line-height:1.5;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .comment-meta b,.wp-block-post-comments .comment-meta b{
|
||||
font-weight:400;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .comment-meta .comment-awaiting-moderation,.wp-block-post-comments .comment-meta .comment-awaiting-moderation{
|
||||
display:block;
|
||||
margin-bottom:1em;
|
||||
margin-top:1em;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .comment-body .commentmetadata,.wp-block-post-comments .comment-body .commentmetadata{
|
||||
font-size:.875em;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .comment-form-author label,.wp-block-comments__legacy-placeholder .comment-form-comment label,.wp-block-comments__legacy-placeholder .comment-form-email label,.wp-block-comments__legacy-placeholder .comment-form-url label,.wp-block-post-comments .comment-form-author label,.wp-block-post-comments .comment-form-comment label,.wp-block-post-comments .comment-form-email label,.wp-block-post-comments .comment-form-url label{
|
||||
display:block;
|
||||
margin-bottom:.25em;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .comment-form input:not([type=submit]):not([type=checkbox]),.wp-block-comments__legacy-placeholder .comment-form textarea,.wp-block-post-comments .comment-form input:not([type=submit]):not([type=checkbox]),.wp-block-post-comments .comment-form textarea{
|
||||
box-sizing:border-box;
|
||||
display:block;
|
||||
width:100%;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .comment-form-cookies-consent,.wp-block-post-comments .comment-form-cookies-consent{
|
||||
display:flex;
|
||||
gap:.25em;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .comment-form-cookies-consent #wp-comment-cookies-consent,.wp-block-post-comments .comment-form-cookies-consent #wp-comment-cookies-consent{
|
||||
margin-top:.35em;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .comment-reply-title,.wp-block-post-comments .comment-reply-title{
|
||||
margin-bottom:0;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .comment-reply-title :where(small),.wp-block-post-comments .comment-reply-title :where(small){
|
||||
font-size:var(--wp--preset--font-size--medium, smaller);
|
||||
margin-right:.5em;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .reply,.wp-block-post-comments .reply{
|
||||
font-size:.875em;
|
||||
margin-bottom:1.4em;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder input:not([type=submit]),.wp-block-comments__legacy-placeholder textarea,.wp-block-post-comments input:not([type=submit]),.wp-block-post-comments textarea{
|
||||
border:1px solid #949494;
|
||||
font-family:inherit;
|
||||
font-size:1em;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder input:not([type=submit]):not([type=checkbox]),.wp-block-comments__legacy-placeholder textarea,.wp-block-post-comments input:not([type=submit]):not([type=checkbox]),.wp-block-post-comments textarea{
|
||||
padding:calc(.667em + 2px);
|
||||
}
|
||||
|
||||
:where(.wp-block-post-comments input[type=submit]){
|
||||
border:none;
|
||||
}
|
||||
|
||||
.block-library-comments-toolbar__popover .components-popover__content{
|
||||
min-width:230px;
|
||||
}
|
||||
|
||||
.wp-block-comments__legacy-placeholder *{
|
||||
pointer-events:none;
|
||||
.wp-block-comments__legacy-placeholder,.wp-block-post-comments{
|
||||
box-sizing:border-box;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .alignleft,.wp-block-post-comments .alignleft{
|
||||
float:right;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .alignright,.wp-block-post-comments .alignright{
|
||||
float:left;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .navigation:after,.wp-block-post-comments .navigation:after{
|
||||
clear:both;
|
||||
content:"";
|
||||
display:table;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .commentlist,.wp-block-post-comments .commentlist{
|
||||
clear:both;
|
||||
list-style:none;
|
||||
margin:0;
|
||||
padding:0;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .commentlist .comment,.wp-block-post-comments .commentlist .comment{
|
||||
min-height:2.25em;
|
||||
padding-right:3.25em;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .commentlist .comment p,.wp-block-post-comments .commentlist .comment p{
|
||||
font-size:1em;
|
||||
line-height:1.8;
|
||||
margin:1em 0;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .commentlist .children,.wp-block-post-comments .commentlist .children{
|
||||
list-style:none;
|
||||
margin:0;
|
||||
padding:0;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .comment-author,.wp-block-post-comments .comment-author{
|
||||
line-height:1.5;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .comment-author .avatar,.wp-block-post-comments .comment-author .avatar{
|
||||
border-radius:1.5em;
|
||||
display:block;
|
||||
float:right;
|
||||
height:2.5em;
|
||||
margin-left:.75em;
|
||||
margin-top:.5em;
|
||||
width:2.5em;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .comment-author cite,.wp-block-post-comments .comment-author cite{
|
||||
font-style:normal;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .comment-meta,.wp-block-post-comments .comment-meta{
|
||||
font-size:.875em;
|
||||
line-height:1.5;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .comment-meta b,.wp-block-post-comments .comment-meta b{
|
||||
font-weight:400;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .comment-meta .comment-awaiting-moderation,.wp-block-post-comments .comment-meta .comment-awaiting-moderation{
|
||||
display:block;
|
||||
margin-bottom:1em;
|
||||
margin-top:1em;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .comment-body .commentmetadata,.wp-block-post-comments .comment-body .commentmetadata{
|
||||
font-size:.875em;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .comment-form-author label,.wp-block-comments__legacy-placeholder .comment-form-comment label,.wp-block-comments__legacy-placeholder .comment-form-email label,.wp-block-comments__legacy-placeholder .comment-form-url label,.wp-block-post-comments .comment-form-author label,.wp-block-post-comments .comment-form-comment label,.wp-block-post-comments .comment-form-email label,.wp-block-post-comments .comment-form-url label{
|
||||
display:block;
|
||||
margin-bottom:.25em;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .comment-form input:not([type=submit]):not([type=checkbox]),.wp-block-comments__legacy-placeholder .comment-form textarea,.wp-block-post-comments .comment-form input:not([type=submit]):not([type=checkbox]),.wp-block-post-comments .comment-form textarea{
|
||||
box-sizing:border-box;
|
||||
display:block;
|
||||
width:100%;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .comment-form-cookies-consent,.wp-block-post-comments .comment-form-cookies-consent{
|
||||
display:flex;
|
||||
gap:.25em;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .comment-form-cookies-consent #wp-comment-cookies-consent,.wp-block-post-comments .comment-form-cookies-consent #wp-comment-cookies-consent{
|
||||
margin-top:.35em;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .comment-reply-title,.wp-block-post-comments .comment-reply-title{
|
||||
margin-bottom:0;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .comment-reply-title :where(small),.wp-block-post-comments .comment-reply-title :where(small){
|
||||
font-size:var(--wp--preset--font-size--medium, smaller);
|
||||
margin-right:.5em;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .reply,.wp-block-post-comments .reply{
|
||||
font-size:.875em;
|
||||
margin-bottom:1.4em;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder input:not([type=submit]),.wp-block-comments__legacy-placeholder textarea,.wp-block-post-comments input:not([type=submit]),.wp-block-post-comments textarea{
|
||||
border:1px solid #949494;
|
||||
font-family:inherit;
|
||||
font-size:1em;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder input:not([type=submit]):not([type=checkbox]),.wp-block-comments__legacy-placeholder textarea,.wp-block-post-comments input:not([type=submit]):not([type=checkbox]),.wp-block-post-comments textarea{
|
||||
padding:calc(.667em + 2px);
|
||||
}
|
||||
|
||||
:where(.wp-block-post-comments input[type=submit]){
|
||||
border:none;
|
||||
}
|
||||
|
||||
.block-library-comments-toolbar__popover .components-popover__content{
|
||||
min-width:230px;
|
||||
}
|
||||
|
||||
.wp-block-comments__legacy-placeholder *{
|
||||
pointer-events:none;
|
||||
}
|
||||
@@ -1,111 +1,111 @@
|
||||
.wp-block-comments__legacy-placeholder,.wp-block-post-comments{
|
||||
box-sizing:border-box;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .alignleft,.wp-block-post-comments .alignleft{
|
||||
float:left;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .alignright,.wp-block-post-comments .alignright{
|
||||
float:right;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .navigation:after,.wp-block-post-comments .navigation:after{
|
||||
clear:both;
|
||||
content:"";
|
||||
display:table;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .commentlist,.wp-block-post-comments .commentlist{
|
||||
clear:both;
|
||||
list-style:none;
|
||||
margin:0;
|
||||
padding:0;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .commentlist .comment,.wp-block-post-comments .commentlist .comment{
|
||||
min-height:2.25em;
|
||||
padding-left:3.25em;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .commentlist .comment p,.wp-block-post-comments .commentlist .comment p{
|
||||
font-size:1em;
|
||||
line-height:1.8;
|
||||
margin:1em 0;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .commentlist .children,.wp-block-post-comments .commentlist .children{
|
||||
list-style:none;
|
||||
margin:0;
|
||||
padding:0;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .comment-author,.wp-block-post-comments .comment-author{
|
||||
line-height:1.5;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .comment-author .avatar,.wp-block-post-comments .comment-author .avatar{
|
||||
border-radius:1.5em;
|
||||
display:block;
|
||||
float:left;
|
||||
height:2.5em;
|
||||
margin-right:.75em;
|
||||
margin-top:.5em;
|
||||
width:2.5em;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .comment-author cite,.wp-block-post-comments .comment-author cite{
|
||||
font-style:normal;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .comment-meta,.wp-block-post-comments .comment-meta{
|
||||
font-size:.875em;
|
||||
line-height:1.5;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .comment-meta b,.wp-block-post-comments .comment-meta b{
|
||||
font-weight:400;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .comment-meta .comment-awaiting-moderation,.wp-block-post-comments .comment-meta .comment-awaiting-moderation{
|
||||
display:block;
|
||||
margin-bottom:1em;
|
||||
margin-top:1em;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .comment-body .commentmetadata,.wp-block-post-comments .comment-body .commentmetadata{
|
||||
font-size:.875em;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .comment-form-author label,.wp-block-comments__legacy-placeholder .comment-form-comment label,.wp-block-comments__legacy-placeholder .comment-form-email label,.wp-block-comments__legacy-placeholder .comment-form-url label,.wp-block-post-comments .comment-form-author label,.wp-block-post-comments .comment-form-comment label,.wp-block-post-comments .comment-form-email label,.wp-block-post-comments .comment-form-url label{
|
||||
display:block;
|
||||
margin-bottom:.25em;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .comment-form input:not([type=submit]):not([type=checkbox]),.wp-block-comments__legacy-placeholder .comment-form textarea,.wp-block-post-comments .comment-form input:not([type=submit]):not([type=checkbox]),.wp-block-post-comments .comment-form textarea{
|
||||
box-sizing:border-box;
|
||||
display:block;
|
||||
width:100%;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .comment-form-cookies-consent,.wp-block-post-comments .comment-form-cookies-consent{
|
||||
display:flex;
|
||||
gap:.25em;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .comment-form-cookies-consent #wp-comment-cookies-consent,.wp-block-post-comments .comment-form-cookies-consent #wp-comment-cookies-consent{
|
||||
margin-top:.35em;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .comment-reply-title,.wp-block-post-comments .comment-reply-title{
|
||||
margin-bottom:0;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .comment-reply-title :where(small),.wp-block-post-comments .comment-reply-title :where(small){
|
||||
font-size:var(--wp--preset--font-size--medium, smaller);
|
||||
margin-left:.5em;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .reply,.wp-block-post-comments .reply{
|
||||
font-size:.875em;
|
||||
margin-bottom:1.4em;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder input:not([type=submit]),.wp-block-comments__legacy-placeholder textarea,.wp-block-post-comments input:not([type=submit]),.wp-block-post-comments textarea{
|
||||
border:1px solid #949494;
|
||||
font-family:inherit;
|
||||
font-size:1em;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder input:not([type=submit]):not([type=checkbox]),.wp-block-comments__legacy-placeholder textarea,.wp-block-post-comments input:not([type=submit]):not([type=checkbox]),.wp-block-post-comments textarea{
|
||||
padding:calc(.667em + 2px);
|
||||
}
|
||||
|
||||
:where(.wp-block-post-comments input[type=submit]){
|
||||
border:none;
|
||||
}
|
||||
|
||||
.block-library-comments-toolbar__popover .components-popover__content{
|
||||
min-width:230px;
|
||||
}
|
||||
|
||||
.wp-block-comments__legacy-placeholder *{
|
||||
pointer-events:none;
|
||||
.wp-block-comments__legacy-placeholder,.wp-block-post-comments{
|
||||
box-sizing:border-box;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .alignleft,.wp-block-post-comments .alignleft{
|
||||
float:left;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .alignright,.wp-block-post-comments .alignright{
|
||||
float:right;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .navigation:after,.wp-block-post-comments .navigation:after{
|
||||
clear:both;
|
||||
content:"";
|
||||
display:table;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .commentlist,.wp-block-post-comments .commentlist{
|
||||
clear:both;
|
||||
list-style:none;
|
||||
margin:0;
|
||||
padding:0;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .commentlist .comment,.wp-block-post-comments .commentlist .comment{
|
||||
min-height:2.25em;
|
||||
padding-left:3.25em;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .commentlist .comment p,.wp-block-post-comments .commentlist .comment p{
|
||||
font-size:1em;
|
||||
line-height:1.8;
|
||||
margin:1em 0;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .commentlist .children,.wp-block-post-comments .commentlist .children{
|
||||
list-style:none;
|
||||
margin:0;
|
||||
padding:0;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .comment-author,.wp-block-post-comments .comment-author{
|
||||
line-height:1.5;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .comment-author .avatar,.wp-block-post-comments .comment-author .avatar{
|
||||
border-radius:1.5em;
|
||||
display:block;
|
||||
float:left;
|
||||
height:2.5em;
|
||||
margin-right:.75em;
|
||||
margin-top:.5em;
|
||||
width:2.5em;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .comment-author cite,.wp-block-post-comments .comment-author cite{
|
||||
font-style:normal;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .comment-meta,.wp-block-post-comments .comment-meta{
|
||||
font-size:.875em;
|
||||
line-height:1.5;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .comment-meta b,.wp-block-post-comments .comment-meta b{
|
||||
font-weight:400;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .comment-meta .comment-awaiting-moderation,.wp-block-post-comments .comment-meta .comment-awaiting-moderation{
|
||||
display:block;
|
||||
margin-bottom:1em;
|
||||
margin-top:1em;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .comment-body .commentmetadata,.wp-block-post-comments .comment-body .commentmetadata{
|
||||
font-size:.875em;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .comment-form-author label,.wp-block-comments__legacy-placeholder .comment-form-comment label,.wp-block-comments__legacy-placeholder .comment-form-email label,.wp-block-comments__legacy-placeholder .comment-form-url label,.wp-block-post-comments .comment-form-author label,.wp-block-post-comments .comment-form-comment label,.wp-block-post-comments .comment-form-email label,.wp-block-post-comments .comment-form-url label{
|
||||
display:block;
|
||||
margin-bottom:.25em;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .comment-form input:not([type=submit]):not([type=checkbox]),.wp-block-comments__legacy-placeholder .comment-form textarea,.wp-block-post-comments .comment-form input:not([type=submit]):not([type=checkbox]),.wp-block-post-comments .comment-form textarea{
|
||||
box-sizing:border-box;
|
||||
display:block;
|
||||
width:100%;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .comment-form-cookies-consent,.wp-block-post-comments .comment-form-cookies-consent{
|
||||
display:flex;
|
||||
gap:.25em;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .comment-form-cookies-consent #wp-comment-cookies-consent,.wp-block-post-comments .comment-form-cookies-consent #wp-comment-cookies-consent{
|
||||
margin-top:.35em;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .comment-reply-title,.wp-block-post-comments .comment-reply-title{
|
||||
margin-bottom:0;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .comment-reply-title :where(small),.wp-block-post-comments .comment-reply-title :where(small){
|
||||
font-size:var(--wp--preset--font-size--medium, smaller);
|
||||
margin-left:.5em;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder .reply,.wp-block-post-comments .reply{
|
||||
font-size:.875em;
|
||||
margin-bottom:1.4em;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder input:not([type=submit]),.wp-block-comments__legacy-placeholder textarea,.wp-block-post-comments input:not([type=submit]),.wp-block-post-comments textarea{
|
||||
border:1px solid #949494;
|
||||
font-family:inherit;
|
||||
font-size:1em;
|
||||
}
|
||||
.wp-block-comments__legacy-placeholder input:not([type=submit]):not([type=checkbox]),.wp-block-comments__legacy-placeholder textarea,.wp-block-post-comments input:not([type=submit]):not([type=checkbox]),.wp-block-post-comments textarea{
|
||||
padding:calc(.667em + 2px);
|
||||
}
|
||||
|
||||
:where(.wp-block-post-comments input[type=submit]){
|
||||
border:none;
|
||||
}
|
||||
|
||||
.block-library-comments-toolbar__popover .components-popover__content{
|
||||
min-width:230px;
|
||||
}
|
||||
|
||||
.wp-block-comments__legacy-placeholder *{
|
||||
pointer-events:none;
|
||||
}
|
||||
@@ -1,103 +1,103 @@
|
||||
.wp-block-post-comments{
|
||||
box-sizing:border-box;
|
||||
}
|
||||
.wp-block-post-comments .alignleft{
|
||||
float:right;
|
||||
}
|
||||
.wp-block-post-comments .alignright{
|
||||
float:left;
|
||||
}
|
||||
.wp-block-post-comments .navigation:after{
|
||||
clear:both;
|
||||
content:"";
|
||||
display:table;
|
||||
}
|
||||
.wp-block-post-comments .commentlist{
|
||||
clear:both;
|
||||
list-style:none;
|
||||
margin:0;
|
||||
padding:0;
|
||||
}
|
||||
.wp-block-post-comments .commentlist .comment{
|
||||
min-height:2.25em;
|
||||
padding-right:3.25em;
|
||||
}
|
||||
.wp-block-post-comments .commentlist .comment p{
|
||||
font-size:1em;
|
||||
line-height:1.8;
|
||||
margin:1em 0;
|
||||
}
|
||||
.wp-block-post-comments .commentlist .children{
|
||||
list-style:none;
|
||||
margin:0;
|
||||
padding:0;
|
||||
}
|
||||
.wp-block-post-comments .comment-author{
|
||||
line-height:1.5;
|
||||
}
|
||||
.wp-block-post-comments .comment-author .avatar{
|
||||
border-radius:1.5em;
|
||||
display:block;
|
||||
float:right;
|
||||
height:2.5em;
|
||||
margin-left:.75em;
|
||||
margin-top:.5em;
|
||||
width:2.5em;
|
||||
}
|
||||
.wp-block-post-comments .comment-author cite{
|
||||
font-style:normal;
|
||||
}
|
||||
.wp-block-post-comments .comment-meta{
|
||||
font-size:.875em;
|
||||
line-height:1.5;
|
||||
}
|
||||
.wp-block-post-comments .comment-meta b{
|
||||
font-weight:400;
|
||||
}
|
||||
.wp-block-post-comments .comment-meta .comment-awaiting-moderation{
|
||||
display:block;
|
||||
margin-bottom:1em;
|
||||
margin-top:1em;
|
||||
}
|
||||
.wp-block-post-comments .comment-body .commentmetadata{
|
||||
font-size:.875em;
|
||||
}
|
||||
.wp-block-post-comments .comment-form-author label,.wp-block-post-comments .comment-form-comment label,.wp-block-post-comments .comment-form-email label,.wp-block-post-comments .comment-form-url label{
|
||||
display:block;
|
||||
margin-bottom:.25em;
|
||||
}
|
||||
.wp-block-post-comments .comment-form input:not([type=submit]):not([type=checkbox]),.wp-block-post-comments .comment-form textarea{
|
||||
box-sizing:border-box;
|
||||
display:block;
|
||||
width:100%;
|
||||
}
|
||||
.wp-block-post-comments .comment-form-cookies-consent{
|
||||
display:flex;
|
||||
gap:.25em;
|
||||
}
|
||||
.wp-block-post-comments .comment-form-cookies-consent #wp-comment-cookies-consent{
|
||||
margin-top:.35em;
|
||||
}
|
||||
.wp-block-post-comments .comment-reply-title{
|
||||
margin-bottom:0;
|
||||
}
|
||||
.wp-block-post-comments .comment-reply-title :where(small){
|
||||
font-size:var(--wp--preset--font-size--medium, smaller);
|
||||
margin-right:.5em;
|
||||
}
|
||||
.wp-block-post-comments .reply{
|
||||
font-size:.875em;
|
||||
margin-bottom:1.4em;
|
||||
}
|
||||
.wp-block-post-comments input:not([type=submit]),.wp-block-post-comments textarea{
|
||||
border:1px solid #949494;
|
||||
font-family:inherit;
|
||||
font-size:1em;
|
||||
}
|
||||
.wp-block-post-comments input:not([type=submit]):not([type=checkbox]),.wp-block-post-comments textarea{
|
||||
padding:calc(.667em + 2px);
|
||||
}
|
||||
|
||||
:where(.wp-block-post-comments input[type=submit]){
|
||||
border:none;
|
||||
.wp-block-post-comments{
|
||||
box-sizing:border-box;
|
||||
}
|
||||
.wp-block-post-comments .alignleft{
|
||||
float:right;
|
||||
}
|
||||
.wp-block-post-comments .alignright{
|
||||
float:left;
|
||||
}
|
||||
.wp-block-post-comments .navigation:after{
|
||||
clear:both;
|
||||
content:"";
|
||||
display:table;
|
||||
}
|
||||
.wp-block-post-comments .commentlist{
|
||||
clear:both;
|
||||
list-style:none;
|
||||
margin:0;
|
||||
padding:0;
|
||||
}
|
||||
.wp-block-post-comments .commentlist .comment{
|
||||
min-height:2.25em;
|
||||
padding-right:3.25em;
|
||||
}
|
||||
.wp-block-post-comments .commentlist .comment p{
|
||||
font-size:1em;
|
||||
line-height:1.8;
|
||||
margin:1em 0;
|
||||
}
|
||||
.wp-block-post-comments .commentlist .children{
|
||||
list-style:none;
|
||||
margin:0;
|
||||
padding:0;
|
||||
}
|
||||
.wp-block-post-comments .comment-author{
|
||||
line-height:1.5;
|
||||
}
|
||||
.wp-block-post-comments .comment-author .avatar{
|
||||
border-radius:1.5em;
|
||||
display:block;
|
||||
float:right;
|
||||
height:2.5em;
|
||||
margin-left:.75em;
|
||||
margin-top:.5em;
|
||||
width:2.5em;
|
||||
}
|
||||
.wp-block-post-comments .comment-author cite{
|
||||
font-style:normal;
|
||||
}
|
||||
.wp-block-post-comments .comment-meta{
|
||||
font-size:.875em;
|
||||
line-height:1.5;
|
||||
}
|
||||
.wp-block-post-comments .comment-meta b{
|
||||
font-weight:400;
|
||||
}
|
||||
.wp-block-post-comments .comment-meta .comment-awaiting-moderation{
|
||||
display:block;
|
||||
margin-bottom:1em;
|
||||
margin-top:1em;
|
||||
}
|
||||
.wp-block-post-comments .comment-body .commentmetadata{
|
||||
font-size:.875em;
|
||||
}
|
||||
.wp-block-post-comments .comment-form-author label,.wp-block-post-comments .comment-form-comment label,.wp-block-post-comments .comment-form-email label,.wp-block-post-comments .comment-form-url label{
|
||||
display:block;
|
||||
margin-bottom:.25em;
|
||||
}
|
||||
.wp-block-post-comments .comment-form input:not([type=submit]):not([type=checkbox]),.wp-block-post-comments .comment-form textarea{
|
||||
box-sizing:border-box;
|
||||
display:block;
|
||||
width:100%;
|
||||
}
|
||||
.wp-block-post-comments .comment-form-cookies-consent{
|
||||
display:flex;
|
||||
gap:.25em;
|
||||
}
|
||||
.wp-block-post-comments .comment-form-cookies-consent #wp-comment-cookies-consent{
|
||||
margin-top:.35em;
|
||||
}
|
||||
.wp-block-post-comments .comment-reply-title{
|
||||
margin-bottom:0;
|
||||
}
|
||||
.wp-block-post-comments .comment-reply-title :where(small){
|
||||
font-size:var(--wp--preset--font-size--medium, smaller);
|
||||
margin-right:.5em;
|
||||
}
|
||||
.wp-block-post-comments .reply{
|
||||
font-size:.875em;
|
||||
margin-bottom:1.4em;
|
||||
}
|
||||
.wp-block-post-comments input:not([type=submit]),.wp-block-post-comments textarea{
|
||||
border:1px solid #949494;
|
||||
font-family:inherit;
|
||||
font-size:1em;
|
||||
}
|
||||
.wp-block-post-comments input:not([type=submit]):not([type=checkbox]),.wp-block-post-comments textarea{
|
||||
padding:calc(.667em + 2px);
|
||||
}
|
||||
|
||||
:where(.wp-block-post-comments input[type=submit]){
|
||||
border:none;
|
||||
}
|
||||
@@ -1,103 +1,103 @@
|
||||
.wp-block-post-comments{
|
||||
box-sizing:border-box;
|
||||
}
|
||||
.wp-block-post-comments .alignleft{
|
||||
float:left;
|
||||
}
|
||||
.wp-block-post-comments .alignright{
|
||||
float:right;
|
||||
}
|
||||
.wp-block-post-comments .navigation:after{
|
||||
clear:both;
|
||||
content:"";
|
||||
display:table;
|
||||
}
|
||||
.wp-block-post-comments .commentlist{
|
||||
clear:both;
|
||||
list-style:none;
|
||||
margin:0;
|
||||
padding:0;
|
||||
}
|
||||
.wp-block-post-comments .commentlist .comment{
|
||||
min-height:2.25em;
|
||||
padding-left:3.25em;
|
||||
}
|
||||
.wp-block-post-comments .commentlist .comment p{
|
||||
font-size:1em;
|
||||
line-height:1.8;
|
||||
margin:1em 0;
|
||||
}
|
||||
.wp-block-post-comments .commentlist .children{
|
||||
list-style:none;
|
||||
margin:0;
|
||||
padding:0;
|
||||
}
|
||||
.wp-block-post-comments .comment-author{
|
||||
line-height:1.5;
|
||||
}
|
||||
.wp-block-post-comments .comment-author .avatar{
|
||||
border-radius:1.5em;
|
||||
display:block;
|
||||
float:left;
|
||||
height:2.5em;
|
||||
margin-right:.75em;
|
||||
margin-top:.5em;
|
||||
width:2.5em;
|
||||
}
|
||||
.wp-block-post-comments .comment-author cite{
|
||||
font-style:normal;
|
||||
}
|
||||
.wp-block-post-comments .comment-meta{
|
||||
font-size:.875em;
|
||||
line-height:1.5;
|
||||
}
|
||||
.wp-block-post-comments .comment-meta b{
|
||||
font-weight:400;
|
||||
}
|
||||
.wp-block-post-comments .comment-meta .comment-awaiting-moderation{
|
||||
display:block;
|
||||
margin-bottom:1em;
|
||||
margin-top:1em;
|
||||
}
|
||||
.wp-block-post-comments .comment-body .commentmetadata{
|
||||
font-size:.875em;
|
||||
}
|
||||
.wp-block-post-comments .comment-form-author label,.wp-block-post-comments .comment-form-comment label,.wp-block-post-comments .comment-form-email label,.wp-block-post-comments .comment-form-url label{
|
||||
display:block;
|
||||
margin-bottom:.25em;
|
||||
}
|
||||
.wp-block-post-comments .comment-form input:not([type=submit]):not([type=checkbox]),.wp-block-post-comments .comment-form textarea{
|
||||
box-sizing:border-box;
|
||||
display:block;
|
||||
width:100%;
|
||||
}
|
||||
.wp-block-post-comments .comment-form-cookies-consent{
|
||||
display:flex;
|
||||
gap:.25em;
|
||||
}
|
||||
.wp-block-post-comments .comment-form-cookies-consent #wp-comment-cookies-consent{
|
||||
margin-top:.35em;
|
||||
}
|
||||
.wp-block-post-comments .comment-reply-title{
|
||||
margin-bottom:0;
|
||||
}
|
||||
.wp-block-post-comments .comment-reply-title :where(small){
|
||||
font-size:var(--wp--preset--font-size--medium, smaller);
|
||||
margin-left:.5em;
|
||||
}
|
||||
.wp-block-post-comments .reply{
|
||||
font-size:.875em;
|
||||
margin-bottom:1.4em;
|
||||
}
|
||||
.wp-block-post-comments input:not([type=submit]),.wp-block-post-comments textarea{
|
||||
border:1px solid #949494;
|
||||
font-family:inherit;
|
||||
font-size:1em;
|
||||
}
|
||||
.wp-block-post-comments input:not([type=submit]):not([type=checkbox]),.wp-block-post-comments textarea{
|
||||
padding:calc(.667em + 2px);
|
||||
}
|
||||
|
||||
:where(.wp-block-post-comments input[type=submit]){
|
||||
border:none;
|
||||
.wp-block-post-comments{
|
||||
box-sizing:border-box;
|
||||
}
|
||||
.wp-block-post-comments .alignleft{
|
||||
float:left;
|
||||
}
|
||||
.wp-block-post-comments .alignright{
|
||||
float:right;
|
||||
}
|
||||
.wp-block-post-comments .navigation:after{
|
||||
clear:both;
|
||||
content:"";
|
||||
display:table;
|
||||
}
|
||||
.wp-block-post-comments .commentlist{
|
||||
clear:both;
|
||||
list-style:none;
|
||||
margin:0;
|
||||
padding:0;
|
||||
}
|
||||
.wp-block-post-comments .commentlist .comment{
|
||||
min-height:2.25em;
|
||||
padding-left:3.25em;
|
||||
}
|
||||
.wp-block-post-comments .commentlist .comment p{
|
||||
font-size:1em;
|
||||
line-height:1.8;
|
||||
margin:1em 0;
|
||||
}
|
||||
.wp-block-post-comments .commentlist .children{
|
||||
list-style:none;
|
||||
margin:0;
|
||||
padding:0;
|
||||
}
|
||||
.wp-block-post-comments .comment-author{
|
||||
line-height:1.5;
|
||||
}
|
||||
.wp-block-post-comments .comment-author .avatar{
|
||||
border-radius:1.5em;
|
||||
display:block;
|
||||
float:left;
|
||||
height:2.5em;
|
||||
margin-right:.75em;
|
||||
margin-top:.5em;
|
||||
width:2.5em;
|
||||
}
|
||||
.wp-block-post-comments .comment-author cite{
|
||||
font-style:normal;
|
||||
}
|
||||
.wp-block-post-comments .comment-meta{
|
||||
font-size:.875em;
|
||||
line-height:1.5;
|
||||
}
|
||||
.wp-block-post-comments .comment-meta b{
|
||||
font-weight:400;
|
||||
}
|
||||
.wp-block-post-comments .comment-meta .comment-awaiting-moderation{
|
||||
display:block;
|
||||
margin-bottom:1em;
|
||||
margin-top:1em;
|
||||
}
|
||||
.wp-block-post-comments .comment-body .commentmetadata{
|
||||
font-size:.875em;
|
||||
}
|
||||
.wp-block-post-comments .comment-form-author label,.wp-block-post-comments .comment-form-comment label,.wp-block-post-comments .comment-form-email label,.wp-block-post-comments .comment-form-url label{
|
||||
display:block;
|
||||
margin-bottom:.25em;
|
||||
}
|
||||
.wp-block-post-comments .comment-form input:not([type=submit]):not([type=checkbox]),.wp-block-post-comments .comment-form textarea{
|
||||
box-sizing:border-box;
|
||||
display:block;
|
||||
width:100%;
|
||||
}
|
||||
.wp-block-post-comments .comment-form-cookies-consent{
|
||||
display:flex;
|
||||
gap:.25em;
|
||||
}
|
||||
.wp-block-post-comments .comment-form-cookies-consent #wp-comment-cookies-consent{
|
||||
margin-top:.35em;
|
||||
}
|
||||
.wp-block-post-comments .comment-reply-title{
|
||||
margin-bottom:0;
|
||||
}
|
||||
.wp-block-post-comments .comment-reply-title :where(small){
|
||||
font-size:var(--wp--preset--font-size--medium, smaller);
|
||||
margin-left:.5em;
|
||||
}
|
||||
.wp-block-post-comments .reply{
|
||||
font-size:.875em;
|
||||
margin-bottom:1.4em;
|
||||
}
|
||||
.wp-block-post-comments input:not([type=submit]),.wp-block-post-comments textarea{
|
||||
border:1px solid #949494;
|
||||
font-family:inherit;
|
||||
font-size:1em;
|
||||
}
|
||||
.wp-block-post-comments input:not([type=submit]):not([type=checkbox]),.wp-block-post-comments textarea{
|
||||
padding:calc(.667em + 2px);
|
||||
}
|
||||
|
||||
:where(.wp-block-post-comments input[type=submit]){
|
||||
border:none;
|
||||
}
|
||||
@@ -1,78 +1,78 @@
|
||||
<?php
|
||||
/**
|
||||
* Server-side rendering of the `core/cover` block.
|
||||
*
|
||||
* @package WordPress
|
||||
*/
|
||||
|
||||
/**
|
||||
* Renders the `core/cover` block on server.
|
||||
*
|
||||
* @param array $attributes The block attributes.
|
||||
* @param string $content The block rendered content.
|
||||
*
|
||||
* @return string Returns the cover block markup, if useFeaturedImage is true.
|
||||
*/
|
||||
function render_block_core_cover( $attributes, $content ) {
|
||||
if ( 'image' !== $attributes['backgroundType'] || false === $attributes['useFeaturedImage'] ) {
|
||||
return $content;
|
||||
}
|
||||
|
||||
if ( ! ( $attributes['hasParallax'] || $attributes['isRepeated'] ) ) {
|
||||
$attr = array(
|
||||
'class' => 'wp-block-cover__image-background',
|
||||
'data-object-fit' => 'cover',
|
||||
);
|
||||
|
||||
if ( isset( $attributes['focalPoint'] ) ) {
|
||||
$object_position = round( $attributes['focalPoint']['x'] * 100 ) . '% ' . round( $attributes['focalPoint']['y'] * 100 ) . '%';
|
||||
$attr['data-object-position'] = $object_position;
|
||||
$attr['style'] = 'object-position: ' . $object_position;
|
||||
}
|
||||
|
||||
$image = get_the_post_thumbnail( null, 'post-thumbnail', $attr );
|
||||
|
||||
/*
|
||||
* Inserts the featured image between the (1st) cover 'background' `span` and 'inner_container' `div`,
|
||||
* and removes eventual whitespace characters between the two (typically introduced at template level)
|
||||
*/
|
||||
$inner_container_start = '/<div\b[^>]+wp-block-cover__inner-container[\s|"][^>]*>/U';
|
||||
if ( 1 === preg_match( $inner_container_start, $content, $matches, PREG_OFFSET_CAPTURE ) ) {
|
||||
$offset = $matches[0][1];
|
||||
$content = substr( $content, 0, $offset ) . $image . substr( $content, $offset );
|
||||
}
|
||||
} else {
|
||||
if ( in_the_loop() ) {
|
||||
update_post_thumbnail_cache();
|
||||
}
|
||||
$current_featured_image = get_the_post_thumbnail_url();
|
||||
if ( ! $current_featured_image ) {
|
||||
return $content;
|
||||
}
|
||||
|
||||
$processor = new WP_HTML_Tag_Processor( $content );
|
||||
$processor->next_tag();
|
||||
|
||||
$styles = $processor->get_attribute( 'style' );
|
||||
$merged_styles = ! empty( $styles ) ? $styles . ';' : '';
|
||||
$merged_styles .= 'background-image:url(' . esc_url( $current_featured_image ) . ');';
|
||||
|
||||
$processor->set_attribute( 'style', $merged_styles );
|
||||
$content = $processor->get_updated_html();
|
||||
}
|
||||
|
||||
return $content;
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers the `core/cover` block renderer on server.
|
||||
*/
|
||||
function register_block_core_cover() {
|
||||
register_block_type_from_metadata(
|
||||
__DIR__ . '/cover',
|
||||
array(
|
||||
'render_callback' => 'render_block_core_cover',
|
||||
)
|
||||
);
|
||||
}
|
||||
add_action( 'init', 'register_block_core_cover' );
|
||||
<?php
|
||||
/**
|
||||
* Server-side rendering of the `core/cover` block.
|
||||
*
|
||||
* @package WordPress
|
||||
*/
|
||||
|
||||
/**
|
||||
* Renders the `core/cover` block on server.
|
||||
*
|
||||
* @param array $attributes The block attributes.
|
||||
* @param string $content The block rendered content.
|
||||
*
|
||||
* @return string Returns the cover block markup, if useFeaturedImage is true.
|
||||
*/
|
||||
function render_block_core_cover( $attributes, $content ) {
|
||||
if ( 'image' !== $attributes['backgroundType'] || false === $attributes['useFeaturedImage'] ) {
|
||||
return $content;
|
||||
}
|
||||
|
||||
if ( ! ( $attributes['hasParallax'] || $attributes['isRepeated'] ) ) {
|
||||
$attr = array(
|
||||
'class' => 'wp-block-cover__image-background',
|
||||
'data-object-fit' => 'cover',
|
||||
);
|
||||
|
||||
if ( isset( $attributes['focalPoint'] ) ) {
|
||||
$object_position = round( $attributes['focalPoint']['x'] * 100 ) . '% ' . round( $attributes['focalPoint']['y'] * 100 ) . '%';
|
||||
$attr['data-object-position'] = $object_position;
|
||||
$attr['style'] = 'object-position: ' . $object_position;
|
||||
}
|
||||
|
||||
$image = get_the_post_thumbnail( null, 'post-thumbnail', $attr );
|
||||
|
||||
/*
|
||||
* Inserts the featured image between the (1st) cover 'background' `span` and 'inner_container' `div`,
|
||||
* and removes eventual whitespace characters between the two (typically introduced at template level)
|
||||
*/
|
||||
$inner_container_start = '/<div\b[^>]+wp-block-cover__inner-container[\s|"][^>]*>/U';
|
||||
if ( 1 === preg_match( $inner_container_start, $content, $matches, PREG_OFFSET_CAPTURE ) ) {
|
||||
$offset = $matches[0][1];
|
||||
$content = substr( $content, 0, $offset ) . $image . substr( $content, $offset );
|
||||
}
|
||||
} else {
|
||||
if ( in_the_loop() ) {
|
||||
update_post_thumbnail_cache();
|
||||
}
|
||||
$current_featured_image = get_the_post_thumbnail_url();
|
||||
if ( ! $current_featured_image ) {
|
||||
return $content;
|
||||
}
|
||||
|
||||
$processor = new WP_HTML_Tag_Processor( $content );
|
||||
$processor->next_tag();
|
||||
|
||||
$styles = $processor->get_attribute( 'style' );
|
||||
$merged_styles = ! empty( $styles ) ? $styles . ';' : '';
|
||||
$merged_styles .= 'background-image:url(' . esc_url( $current_featured_image ) . ');';
|
||||
|
||||
$processor->set_attribute( 'style', $merged_styles );
|
||||
$content = $processor->get_updated_html();
|
||||
}
|
||||
|
||||
return $content;
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers the `core/cover` block renderer on server.
|
||||
*/
|
||||
function register_block_core_cover() {
|
||||
register_block_type_from_metadata(
|
||||
__DIR__ . '/cover',
|
||||
array(
|
||||
'render_callback' => 'render_block_core_cover',
|
||||
)
|
||||
);
|
||||
}
|
||||
add_action( 'init', 'register_block_core_cover' );
|
||||
|
||||
@@ -1,142 +1,142 @@
|
||||
{
|
||||
"$schema": "https://schemas.wp.org/trunk/block.json",
|
||||
"apiVersion": 3,
|
||||
"name": "core/cover",
|
||||
"title": "Cover",
|
||||
"category": "media",
|
||||
"description": "Add an image or video with a text overlay.",
|
||||
"textdomain": "default",
|
||||
"attributes": {
|
||||
"url": {
|
||||
"type": "string"
|
||||
},
|
||||
"useFeaturedImage": {
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
},
|
||||
"id": {
|
||||
"type": "number"
|
||||
},
|
||||
"alt": {
|
||||
"type": "string",
|
||||
"default": ""
|
||||
},
|
||||
"hasParallax": {
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
},
|
||||
"isRepeated": {
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
},
|
||||
"dimRatio": {
|
||||
"type": "number",
|
||||
"default": 100
|
||||
},
|
||||
"overlayColor": {
|
||||
"type": "string"
|
||||
},
|
||||
"customOverlayColor": {
|
||||
"type": "string"
|
||||
},
|
||||
"isUserOverlayColor": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"backgroundType": {
|
||||
"type": "string",
|
||||
"default": "image"
|
||||
},
|
||||
"focalPoint": {
|
||||
"type": "object"
|
||||
},
|
||||
"minHeight": {
|
||||
"type": "number"
|
||||
},
|
||||
"minHeightUnit": {
|
||||
"type": "string"
|
||||
},
|
||||
"gradient": {
|
||||
"type": "string"
|
||||
},
|
||||
"customGradient": {
|
||||
"type": "string"
|
||||
},
|
||||
"contentPosition": {
|
||||
"type": "string"
|
||||
},
|
||||
"isDark": {
|
||||
"type": "boolean",
|
||||
"default": true
|
||||
},
|
||||
"allowedBlocks": {
|
||||
"type": "array"
|
||||
},
|
||||
"templateLock": {
|
||||
"type": [ "string", "boolean" ],
|
||||
"enum": [ "all", "insert", "contentOnly", false ]
|
||||
},
|
||||
"tagName": {
|
||||
"type": "string",
|
||||
"default": "div"
|
||||
}
|
||||
},
|
||||
"usesContext": [ "postId", "postType" ],
|
||||
"supports": {
|
||||
"anchor": true,
|
||||
"align": true,
|
||||
"html": false,
|
||||
"spacing": {
|
||||
"padding": true,
|
||||
"margin": [ "top", "bottom" ],
|
||||
"blockGap": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"padding": true,
|
||||
"blockGap": true
|
||||
}
|
||||
},
|
||||
"__experimentalBorder": {
|
||||
"color": true,
|
||||
"radius": true,
|
||||
"style": true,
|
||||
"width": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"color": true,
|
||||
"radius": true,
|
||||
"style": true,
|
||||
"width": true
|
||||
}
|
||||
},
|
||||
"color": {
|
||||
"__experimentalDuotone": "> .wp-block-cover__image-background, > .wp-block-cover__video-background",
|
||||
"heading": true,
|
||||
"text": true,
|
||||
"background": false,
|
||||
"__experimentalSkipSerialization": [ "gradients" ],
|
||||
"enableContrastChecker": false
|
||||
},
|
||||
"dimensions": {
|
||||
"aspectRatio": true
|
||||
},
|
||||
"typography": {
|
||||
"fontSize": true,
|
||||
"lineHeight": true,
|
||||
"__experimentalFontFamily": true,
|
||||
"__experimentalFontWeight": true,
|
||||
"__experimentalFontStyle": true,
|
||||
"__experimentalTextTransform": true,
|
||||
"__experimentalTextDecoration": true,
|
||||
"__experimentalLetterSpacing": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"fontSize": true
|
||||
}
|
||||
},
|
||||
"layout": {
|
||||
"allowJustification": false
|
||||
},
|
||||
"interactivity": {
|
||||
"clientNavigation": true
|
||||
}
|
||||
},
|
||||
"editorStyle": "wp-block-cover-editor",
|
||||
"style": "wp-block-cover"
|
||||
}
|
||||
{
|
||||
"$schema": "https://schemas.wp.org/trunk/block.json",
|
||||
"apiVersion": 3,
|
||||
"name": "core/cover",
|
||||
"title": "Cover",
|
||||
"category": "media",
|
||||
"description": "Add an image or video with a text overlay.",
|
||||
"textdomain": "default",
|
||||
"attributes": {
|
||||
"url": {
|
||||
"type": "string"
|
||||
},
|
||||
"useFeaturedImage": {
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
},
|
||||
"id": {
|
||||
"type": "number"
|
||||
},
|
||||
"alt": {
|
||||
"type": "string",
|
||||
"default": ""
|
||||
},
|
||||
"hasParallax": {
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
},
|
||||
"isRepeated": {
|
||||
"type": "boolean",
|
||||
"default": false
|
||||
},
|
||||
"dimRatio": {
|
||||
"type": "number",
|
||||
"default": 100
|
||||
},
|
||||
"overlayColor": {
|
||||
"type": "string"
|
||||
},
|
||||
"customOverlayColor": {
|
||||
"type": "string"
|
||||
},
|
||||
"isUserOverlayColor": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"backgroundType": {
|
||||
"type": "string",
|
||||
"default": "image"
|
||||
},
|
||||
"focalPoint": {
|
||||
"type": "object"
|
||||
},
|
||||
"minHeight": {
|
||||
"type": "number"
|
||||
},
|
||||
"minHeightUnit": {
|
||||
"type": "string"
|
||||
},
|
||||
"gradient": {
|
||||
"type": "string"
|
||||
},
|
||||
"customGradient": {
|
||||
"type": "string"
|
||||
},
|
||||
"contentPosition": {
|
||||
"type": "string"
|
||||
},
|
||||
"isDark": {
|
||||
"type": "boolean",
|
||||
"default": true
|
||||
},
|
||||
"allowedBlocks": {
|
||||
"type": "array"
|
||||
},
|
||||
"templateLock": {
|
||||
"type": [ "string", "boolean" ],
|
||||
"enum": [ "all", "insert", "contentOnly", false ]
|
||||
},
|
||||
"tagName": {
|
||||
"type": "string",
|
||||
"default": "div"
|
||||
}
|
||||
},
|
||||
"usesContext": [ "postId", "postType" ],
|
||||
"supports": {
|
||||
"anchor": true,
|
||||
"align": true,
|
||||
"html": false,
|
||||
"spacing": {
|
||||
"padding": true,
|
||||
"margin": [ "top", "bottom" ],
|
||||
"blockGap": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"padding": true,
|
||||
"blockGap": true
|
||||
}
|
||||
},
|
||||
"__experimentalBorder": {
|
||||
"color": true,
|
||||
"radius": true,
|
||||
"style": true,
|
||||
"width": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"color": true,
|
||||
"radius": true,
|
||||
"style": true,
|
||||
"width": true
|
||||
}
|
||||
},
|
||||
"color": {
|
||||
"__experimentalDuotone": "> .wp-block-cover__image-background, > .wp-block-cover__video-background",
|
||||
"heading": true,
|
||||
"text": true,
|
||||
"background": false,
|
||||
"__experimentalSkipSerialization": [ "gradients" ],
|
||||
"enableContrastChecker": false
|
||||
},
|
||||
"dimensions": {
|
||||
"aspectRatio": true
|
||||
},
|
||||
"typography": {
|
||||
"fontSize": true,
|
||||
"lineHeight": true,
|
||||
"__experimentalFontFamily": true,
|
||||
"__experimentalFontWeight": true,
|
||||
"__experimentalFontStyle": true,
|
||||
"__experimentalTextTransform": true,
|
||||
"__experimentalTextDecoration": true,
|
||||
"__experimentalLetterSpacing": true,
|
||||
"__experimentalDefaultControls": {
|
||||
"fontSize": true
|
||||
}
|
||||
},
|
||||
"layout": {
|
||||
"allowJustification": false
|
||||
},
|
||||
"interactivity": {
|
||||
"clientNavigation": true
|
||||
}
|
||||
},
|
||||
"editorStyle": "wp-block-cover-editor",
|
||||
"style": "wp-block-cover"
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user