PluginProbe
Gutenberg / 18.9.0
Gutenberg v18.9.0
24.0.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 All 403 releases
gutenberg / build / block-library / blocks / archives.php

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

123 lines 3.0 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 * @since 5.0.0
12 *
13 * @see WP_Widget_Archives
14 *
15 * @param array $attributes The block attributes.
16 *
17 * @return string Returns the post content with archives added.
18 */
19 function gutenberg_render_block_core_archives( $attributes ) {
20 $show_post_count = ! empty( $attributes['showPostCounts'] );
21 $type = isset( $attributes['type'] ) ? $attributes['type'] : 'monthly';
22
23 $class = 'wp-block-archives-list';
24
25 if ( ! empty( $attributes['displayAsDropdown'] ) ) {
26
27 $class = 'wp-block-archives-dropdown';
28
29 $dropdown_id = wp_unique_id( 'wp-block-archives-' );
30 $title = __( 'Archives' );
31
32 /** This filter is documented in wp-includes/widgets/class-wp-widget-archives.php */
33 $dropdown_args = apply_filters(
34 'widget_archives_dropdown_args',
35 array(
36 'type' => $type,
37 'format' => 'option',
38 'show_post_count' => $show_post_count,
39 )
40 );
41
42 $dropdown_args['echo'] = 0;
43
44 $archives = wp_get_archives( $dropdown_args );
45
46 $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => $class ) );
47
48 switch ( $dropdown_args['type'] ) {
49 case 'yearly':
50 $label = __( 'Select Year' );
51 break;
52 case 'monthly':
53 $label = __( 'Select Month' );
54 break;
55 case 'daily':
56 $label = __( 'Select Day' );
57 break;
58 case 'weekly':
59 $label = __( 'Select Week' );
60 break;
61 default:
62 $label = __( 'Select Post' );
63 break;
64 }
65
66 $show_label = empty( $attributes['showLabel'] ) ? ' screen-reader-text' : '';
67
68 $block_content = '<label for="' . $dropdown_id . '" class="wp-block-archives__label' . $show_label . '">' . esc_html( $title ) . '</label>
69 <select id="' . $dropdown_id . '" name="archive-dropdown" onchange="document.location.href=this.options[this.selectedIndex].value;">
70 <option value="">' . esc_html( $label ) . '</option>' . $archives . '</select>';
71
72 return sprintf(
73 '<div %1$s>%2$s</div>',
74 $wrapper_attributes,
75 $block_content
76 );
77 }
78
79 /** This filter is documented in wp-includes/widgets/class-wp-widget-archives.php */
80 $archives_args = apply_filters(
81 'widget_archives_args',
82 array(
83 'type' => $type,
84 'show_post_count' => $show_post_count,
85 )
86 );
87
88 $archives_args['echo'] = 0;
89
90 $archives = wp_get_archives( $archives_args );
91
92 $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => $class ) );
93
94 if ( empty( $archives ) ) {
95 return sprintf(
96 '<div %1$s>%2$s</div>',
97 $wrapper_attributes,
98 __( 'No archives to show.' )
99 );
100 }
101
102 return sprintf(
103 '<ul %1$s>%2$s</ul>',
104 $wrapper_attributes,
105 $archives
106 );
107 }
108
109 /**
110 * Register archives block.
111 *
112 * @since 5.0.0
113 */
114 function gutenberg_register_block_core_archives() {
115 register_block_type_from_metadata(
116 __DIR__ . '/archives',
117 array(
118 'render_callback' => 'gutenberg_render_block_core_archives',
119 )
120 );
121 }
122 add_action( 'init', 'gutenberg_register_block_core_archives', 20 );
123