You are here

function gutenberg_render_block_core_archives in Gutenberg 8

Same name and namespace in other branches
  1. 8.2 vendor/gutenberg/block-library/blocks/archives.php \gutenberg_render_block_core_archives()

Renders the `core/archives` block on server.

Parameters

array $attributes The block attributes.:

Return value

string Returns the post content with archives added.

See also

WP_Widget_Archives

1 string reference to 'gutenberg_render_block_core_archives'
gutenberg_register_block_core_archives in vendor/gutenberg/block-library/blocks/archives.php
Register archives block.

File

vendor/gutenberg/block-library/blocks/archives.php, line 17

Code

function gutenberg_render_block_core_archives($attributes) {
  $show_post_count = !empty($attributes['showPostCounts']);
  $class = 'wp-block-archives';
  if (isset($attributes['align'])) {
    $class .= " align{$attributes['align']}";
  }
  if (isset($attributes['className'])) {
    $class .= " {$attributes['className']}";
  }
  if (!empty($attributes['displayAsDropdown'])) {
    $class .= ' wp-block-archives-dropdown';
    $dropdown_id = esc_attr(uniqid('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' => 'monthly',
      'format' => 'option',
      'show_post_count' => $show_post_count,
    ));
    $dropdown_args['echo'] = 0;
    $archives = wp_get_archives($dropdown_args);
    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;
    }
    $label = esc_attr($label);
    $block_content = '<label class="screen-reader-text" for="' . $dropdown_id . '">' . $title . '</label>
	<select id="' . $dropdown_id . '" name="archive-dropdown" onchange="document.location.href=this.options[this.selectedIndex].value;">
	<option value="">' . $label . '</option>' . $archives . '</select>';
    return sprintf('<div class="%1$s">%2$s</div>', esc_attr($class), $block_content);
  }
  $class .= ' wp-block-archives-list';

  /** This filter is documented in wp-includes/widgets/class-wp-widget-archives.php */
  $archives_args = apply_filters('widget_archives_args', array(
    'type' => 'monthly',
    'show_post_count' => $show_post_count,
  ));
  $archives_args['echo'] = 0;
  $archives = wp_get_archives($archives_args);
  $classnames = esc_attr($class);
  if (empty($archives)) {
    return sprintf('<div class="%1$s">%2$s</div>', $classnames, __('No archives to show.'));
  }
  return sprintf('<ul class="%1$s">%2$s</ul>', $classnames, $archives);
}