Skip to content

Commit

Permalink
Add option to configure or disable category list on category archive …
Browse files Browse the repository at this point in the history
…page (#696)
  • Loading branch information
albig authored Aug 8, 2024
1 parent cebf836 commit bd680af
Show file tree
Hide file tree
Showing 6 changed files with 277 additions and 77 deletions.
30 changes: 10 additions & 20 deletions archive.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
<div class="row">
<div class="col-12">
<main id="primary" class="site-main archive">
<?php if ( have_posts() ) : ?>
<?php if ( have_posts() ) { ?>

<header class="page-header text-center">
<?php
Expand All @@ -22,17 +22,6 @@
?>
</header><!-- .page-header -->

<?php
$sunflower_parsed_blocks = parse_blocks( '<!-- wp:categories /-->' );
if ( $sunflower_parsed_blocks ) {
echo '<div class="filter-button-group mb-5 text-center sunflower-categories">';
foreach ( $sunflower_parsed_blocks as $sunflower_block ) {
echo wp_kses_post( render_block( $sunflower_block ) );
}
echo '</div>';
}
?>

<?php
/* Start the Loop */
$sunflower_list_items = '';
Expand Down Expand Up @@ -81,16 +70,17 @@
'next_text' => __( 'next', 'sunflower' ),
);

printf(
'<div class="d-flex justify-content-around mt-3 mb-5"><div class="sunflower-pagination">%s</div></div>',
wp_kses_post( paginate_links( $sunflower_args ) )
);

else :
$sunflower_paginated_links = paginate_links( $sunflower_args );

if ( $sunflower_paginated_links ) {
printf(
'<div class="d-flex justify-content-around mt-3 mb-5"><div class="sunflower-pagination">%s</div></div>',
wp_kses_post( $sunflower_paginated_links )
);
}
} else {
get_template_part( 'template-parts/content', 'none' );

endif;
}
?>

</main><!-- #main -->
Expand Down
121 changes: 121 additions & 0 deletions category.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
<?php
/**
* The template for displaying Category pages
*
* @link https://developer.wordpress.org/themes/basics/template-hierarchy/
*
* @package sunflower
*/

get_header();
?>
<div id="content" class="container">
<div class="row">
<div class="col-12">
<main id="primary" class="site-main archive">
<?php if ( have_posts() ) { ?>

<header class="page-header text-center">
<?php
the_archive_title( '<h1 class="page-title">', '</h1>' );
the_archive_description( '<div class="archive-description">', '</div>' );
?>
</header><!-- .page-header -->

<?php
/* Show used categories below title and description depending on settings. */
$sunflower_categories_archive_setting = sunflower_get_setting( 'sunflower_categories_archive' ) ? sunflower_get_setting( 'sunflower_categories_archive' ) : 'main-categories';

$sunflower_args = array(
'echo' => false,
'hierarchical' => false,
'parent' => 0,
'orderby' => 'name',
'hide_empty' => true,
'show_option_none' => '',
'title_li' => '',
);

if ( 'only-subcategories' === $sunflower_categories_archive_setting ) {
$sunflower_args['parent'] = $cat;
}

if ( 'no' !== $sunflower_categories_archive_setting ) {
$sunflower_categories_archive = wp_list_categories( $sunflower_args );

if ( $sunflower_categories_archive ) {
echo '<div class="filter-button-group mb-5 text-center sunflower-categories"><ul class="wp-block-categories-list wp-block-categories">';
echo wp_kses_post( $sunflower_categories_archive );
echo '</ul></div>';
}
}

/* Start the Loop */
$sunflower_list_items = '';
while ( have_posts() ) {

the_post();

/*
* Include the Post-Type-specific template for the content.
* If you want to override this in a child theme, then include a file
* called content-___.php (where ___ is the Post Type name) and that will be used instead.
*/
ob_start();
get_template_part( 'template-parts/content', 'archive' );

$sunflower_article = ob_get_clean();

$sunflower_list_items .= sprintf(
'<div class="col-md-6">%s</div>',
$sunflower_article
);

}
?>

<div class="archive-loop row" data-masonry='{"percentPosition": true }'>
<?php
echo wp_kses(
$sunflower_list_items,
array_merge(
wp_kses_allowed_html( 'post' ),
array(
'time' => array(
'class' => true,
'datetime' => true,
),
)
)
);
?>
</div>
<?php

$sunflower_args = array(
'prev_text' => __( 'previous', 'sunflower' ),
'next_text' => __( 'next', 'sunflower' ),
);

$sunflower_paginated_links = paginate_links( $sunflower_args );

if ( $sunflower_paginated_links ) {
printf(
'<div class="d-flex justify-content-around mt-3 mb-5"><div class="sunflower-pagination">%s</div></div>',
wp_kses_post( $sunflower_paginated_links )
);
}
} else {
get_template_part( 'template-parts/content', 'none' );

}

?>

</main><!-- #main -->
</div>
</div>
</div>
<?php
get_sidebar();
get_footer();
47 changes: 42 additions & 5 deletions functions/options/class-sunflowersettingspage.php
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,15 @@ public function sunflower_settings_page_init(): void {
'sunflower_layout',
array( 'sunflower_header_social_media', __( 'Show social media icons in header', 'sunflower' ) )
);

add_settings_field(
'sunflower_categories_archive',
__( 'Show list of categories on category archive', 'sunflower' ),
$this->sunflower_categories_archive( ... ),
'sunflower-setting-admin',
'sunflower_layout',
array( 'sunflower_categories_filter', __( 'Show list of categories on category archive', 'sunflower' ) )
);
}

/**
Expand Down Expand Up @@ -248,13 +257,41 @@ public function sunflower_contact_form_to(): void {
public function sunflower_header_layout(): void {
echo '<select id="sunflower_header_layout" name="sunflower_options[sunflower_header_layout]">';

$options = array( 'standard', 'personal' );
$options = array(
array( 'standard', __( 'Standard', 'sunflower' ) ),
array( 'personal', __( 'Personal', 'sunflower' ) ),
);
foreach ( $options as $option ) {
$selected = ( isset( $this->options['sunflower_header_layout'] ) && $this->options['sunflower_header_layout'] === $option[0] ) ? 'selected' : '';
printf(
'<option value="%1$s" %2$s>%3$s</option>',
esc_attr( $option[0] ),
esc_attr( $selected ),
esc_attr( $option[1] )
);
}

echo '</select>';
}

/**
* Header layout variant field
*/
public function sunflower_categories_archive(): void {
echo '<select id="sunflower_categories_archive" name="sunflower_options[sunflower_categories_archive]">';

$options = array(
array( 'no', __( 'do not show', 'sunflower' ) ),
array( 'main-categories', __( 'main categories', 'sunflower' ) ),
array( 'only-subcategories', __( 'only sub-categories', 'sunflower' ) ),
);
foreach ( $options as $option ) {
$selected = ( isset( $this->options['sunflower_header_layout'] ) && $this->options['sunflower_header_layout'] === $option ) ? 'selected' : '';
$selected = ( isset( $this->options['sunflower_categories_archive'] ) && $this->options['sunflower_categories_archive'] === $option[0] ) ? 'selected' : '';
printf(
'<option value="%1$s" %2$s>%1$s</option>',
esc_attr( $option ),
esc_attr( $selected )
'<option value="%1$s" %2$s>%3$s</option>',
esc_attr( $option[0] ),
esc_attr( $selected ),
esc_attr( $option[1] )
);
}

Expand Down
Binary file modified languages/de_DE.mo
Binary file not shown.
Loading

0 comments on commit bd680af

Please sign in to comment.