Diff: STRATO-apps/wordpress_03/app/wp-includes/blocks/post-terms.php
Keine Baseline-Datei – Diff nur gegen leer.
1
-
1
+
<?php
2
+
/**
3
+
* Server-side rendering of the `core/post-terms` block.
4
+
*
5
+
* @package WordPress
6
+
*/
7
+
8
+
/**
9
+
* Renders the `core/post-terms` block on the server.
10
+
*
11
+
* @since 5.8.0
12
+
*
13
+
* @param array $attributes Block attributes.
14
+
* @param string $content Block default content.
15
+
* @param WP_Block $block Block instance.
16
+
* @return string Returns the filtered post terms for the current post wrapped inside "a" tags.
17
+
*/
18
+
function render_block_core_post_terms( $attributes, $content, $block ) {
19
+
if ( ! isset( $block->context['postId'] ) || ! isset( $attributes['term'] ) ) {
20
+
return '';
21
+
}
22
+
23
+
if ( ! is_taxonomy_viewable( $attributes['term'] ) ) {
24
+
return '';
25
+
}
26
+
27
+
$classes = array( 'taxonomy-' . $attributes['term'] );
28
+
if ( isset( $attributes['textAlign'] ) ) {
29
+
$classes[] = 'has-text-align-' . $attributes['textAlign'];
30
+
}
31
+
if ( isset( $attributes['style']['elements']['link']['color']['text'] ) ) {
32
+
$classes[] = 'has-link-color';
33
+
}
34
+
35
+
$separator = empty( $attributes['separator'] ) ? ' ' : $attributes['separator'];
36
+
37
+
$wrapper_attributes = get_block_wrapper_attributes( array( 'class' => implode( ' ', $classes ) ) );
38
+
39
+
$prefix = "<div $wrapper_attributes>";
40
+
if ( isset( $attributes['prefix'] ) && $attributes['prefix'] ) {
41
+
$prefix .= '<span class="wp-block-post-terms__prefix">' . $attributes['prefix'] . '</span>';
42
+
}
43
+
44
+
$suffix = '</div>';
45
+
if ( isset( $attributes['suffix'] ) && $attributes['suffix'] ) {
46
+
$suffix = '<span class="wp-block-post-terms__suffix">' . $attributes['suffix'] . '</span>' . $suffix;
47
+
}
48
+
49
+
$post_terms = get_the_term_list(
50
+
$block->context['postId'],
51
+
$attributes['term'],
52
+
wp_kses_post( $prefix ),
53
+
'<span class="wp-block-post-terms__separator">' . esc_html( $separator ) . '</span>',
54
+
wp_kses_post( $suffix )
55
+
);
56
+
57
+
if ( is_wp_error( $post_terms ) || empty( $post_terms ) ) {
58
+
return '';
59
+
}
60
+
61
+
return $post_terms;
62
+
}
63
+
64
+
/**
65
+
* Returns the available variations for the `core/post-terms` block.
66
+
*
67
+
* @since 6.5.0
68
+
*
69
+
* @return array The available variations for the block.
70
+
*/
71
+
function block_core_post_terms_build_variations() {
72
+
$taxonomies = get_taxonomies(
73
+
array(
74
+
'publicly_queryable' => true,
75
+
'show_in_rest' => true,
76
+
),
77
+
'objects'
78
+
);
79
+
80
+
// Split the available taxonomies to `built_in` and custom ones,
81
+
// in order to prioritize the `built_in` taxonomies at the
82
+
// search results.
83
+
$built_ins = array();
84
+
$custom_variations = array();
85
+
86
+
// Create and register the eligible taxonomies variations.
87
+
foreach ( $taxonomies as $taxonomy ) {
88
+
$variation = array(
89
+
'name' => $taxonomy->name,
90
+
'title' => $taxonomy->label,
91
+
'description' => sprintf(
92
+
/* translators: %s: taxonomy's label */
93
+
__( 'Display a list of assigned terms from the taxonomy: %s' ),
94
+
$taxonomy->label
95
+
),
96
+
'attributes' => array(
97
+
'term' => $taxonomy->name,
98
+
),
99
+
'isActive' => array( 'term' ),
100
+
'scope' => array( 'inserter', 'transform' ),
101
+
);
102
+
// Set the category variation as the default one.
103
+
if ( 'category' === $taxonomy->name ) {
104
+
$variation['isDefault'] = true;
105
+
}
106
+
if ( $taxonomy->_builtin ) {
107
+
$built_ins[] = $variation;
108
+
} else {
109
+
$custom_variations[] = $variation;
110
+
}
111
+
}
112
+
113
+
return array_merge( $built_ins, $custom_variations );
114
+
}
115
+
116
+
/**
117
+
* Registers the `core/post-terms` block on the server.
118
+
*
119
+
* @since 5.8.0
120
+
*/
121
+
function register_block_core_post_terms() {
122
+
register_block_type_from_metadata(
123
+
__DIR__ . '/post-terms',
124
+
array(
125
+
'render_callback' => 'render_block_core_post_terms',
126
+
'variation_callback' => 'block_core_post_terms_build_variations',
127
+
)
128
+
);
129
+
}
130
+
add_action( 'init', 'register_block_core_post_terms' );
131
+