PluginProbe
Gutenberg / 7.4.0
Gutenberg v7.4.0
23.9.1 23.9.0 23.8.0 23.7.2 23.7.1 23.7.0 23.6.1 23.6.2 23.6.0 23.5.3 23.5.2 23.5.1 23.5.0 23.4.0 23.3.2 23.3.1 23.3.0 23.2.0 23.2.1 23.2.2 23.1.1 23.1.0 23.0.1 12.6.0 7.4.0 All 402 releases
gutenberg / build / block-library / blocks / archives.php

archives.php in Gutenberg 7.4.0, at build/block-library/blocks/archives.php

144 lines 3.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Server-side rendering of the `core/archives` block.
4 *
5 * @package WordPress
6 */
7
8 /**
9 * Renders the `core/archives` block on server.
10 *
11 * @see WP_Widget_Archives
12 *
13 * @param array $attributes The block attributes.
14 *
15 * @return string Returns the post content with archives added.
16 */
17 function gutenberg_render_block_core_archives( $attributes ) {
18 $show_post_count = ! empty( $attributes['showPostCounts'] );
19
20 $class = 'wp-block-archives';
21
22 if ( isset( $attributes['align'] ) ) {
23 $class .= " align{$attributes['align']}";
24 }
25
26 if ( isset( $attributes['className'] ) ) {
27 $class .= " {$attributes['className']}";
28 }
29
30 if ( ! empty( $attributes['displayAsDropdown'] ) ) {
31
32 $class .= ' wp-block-archives-dropdown';
33
34 $dropdown_id = esc_attr( uniqid( 'wp-block-archives-' ) );
35 $title = __( 'Archives' );
36
37 /** This filter is documented in wp-includes/widgets/class-wp-widget-archives.php */
38 $dropdown_args = apply_filters(
39 'widget_archives_dropdown_args',
40 array(
41 'type' => 'monthly',
42 'format' => 'option',
43 'show_post_count' => $show_post_count,
44 )
45 );
46
47 $dropdown_args['echo'] = 0;
48
49 $archives = wp_get_archives( $dropdown_args );
50
51 switch ( $dropdown_args['type'] ) {
52 case 'yearly':
53 $label = __( 'Select Year' );
54 break;
55 case 'monthly':
56 $label = __( 'Select Month' );
57 break;
58 case 'daily':
59 $label = __( 'Select Day' );
60 break;
61 case 'weekly':
62 $label = __( 'Select Week' );
63 break;
64 default:
65 $label = __( 'Select Post' );
66 break;
67 }
68
69 $label = esc_attr( $label );
70
71 $block_content = '<label class="screen-reader-text" for="' . $dropdown_id . '">' . $title . '</label>
72 <select id="' . $dropdown_id . '" name="archive-dropdown" onchange="document.location.href=this.options[this.selectedIndex].value;">
73 <option value="">' . $label . '</option>' . $archives . '</select>';
74
75 return sprintf(
76 '<div class="%1$s">%2$s</div>',
77 esc_attr( $class ),
78 $block_content
79 );
80 }
81
82 $class .= ' wp-block-archives-list';
83
84 /** This filter is documented in wp-includes/widgets/class-wp-widget-archives.php */
85 $archives_args = apply_filters(
86 'widget_archives_args',
87 array(
88 'type' => 'monthly',
89 'show_post_count' => $show_post_count,
90 )
91 );
92
93 $archives_args['echo'] = 0;
94
95 $archives = wp_get_archives( $archives_args );
96
97 $classnames = esc_attr( $class );
98
99 if ( empty( $archives ) ) {
100
101 return sprintf(
102 '<div class="%1$s">%2$s</div>',
103 $classnames,
104 __( 'No archives to show.' )
105 );
106 }
107
108 return sprintf(
109 '<ul class="%1$s">%2$s</ul>',
110 $classnames,
111 $archives
112 );
113 }
114
115 /**
116 * Register archives block.
117 */
118 function gutenberg_register_block_core_archives() {
119 register_block_type(
120 'core/archives',
121 array(
122 'attributes' => array(
123 'align' => array(
124 'type' => 'string',
125 'enum' => array( 'left', 'center', 'right', 'wide', 'full' ),
126 ),
127 'className' => array(
128 'type' => 'string',
129 ),
130 'displayAsDropdown' => array(
131 'type' => 'boolean',
132 'default' => false,
133 ),
134 'showPostCounts' => array(
135 'type' => 'boolean',
136 'default' => false,
137 ),
138 ),
139 'render_callback' => 'gutenberg_render_block_core_archives',
140 )
141 );
142 }
143 add_action( 'init', 'gutenberg_register_block_core_archives', 20 );
144