Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- if( ! defined( 'ABSPATH' ) ) { exit; } // Exit if accessed directly
- /**
- * Custom loop-author.php for child theme (Enfold 7.1.3 compatible)
- * Place this file in: /wp-content/themes/enfold-child/includes/loop-author.php
- */
- global $avia_config, $post_loop_count;
- if( empty( $post_loop_count ) ) {
- $post_loop_count = 1;
- }
- // Standard Argumente für Author Loop
- $default_args = array(
- 'type' => 'grid',
- 'columns' => 4,
- 'items' => get_option('posts_per_page', 12), // WordPress Einstellung, Fallback: 12
- 'contents' => 'excerpt',
- 'preview_mode' => 'auto',
- 'image_size' => 'portfolio',
- 'paginate' => 'yes',
- 'class' => '',
- 'show_modified_date' => 'no', // 'yes' oder 'no' - zeigt "Updated: XX" wenn Post bearbeitet wurde
- 'orderby' => 'date', // 'date', 'modified', 'title', 'rand', 'comment_count', 'menu_order'
- 'order' => 'DESC', // 'DESC' (neueste zuerst) oder 'ASC' (älteste zuerst)
- );
- /**
- * Filter für Author Loop Argumente
- *
- * @param array $default_args Die Standard-Argumente
- * @param string $context Immer 'author' für diese Loop
- * @return array Gefilterte Argumente
- */
- $atts = apply_filters( 'avf_author_loop_args', $default_args, 'author' );
- // Check if we got posts to display (nutzt die WordPress Haupt-Query):
- if( have_posts() )
- {
- // Grid Container starten
- $grid_class = 'av-author-grid-container';
- if( $atts['type'] == 'grid' ) {
- $grid_class .= ' av-author-grid';
- // Spalten-Klasse hinzufügen
- $grid_class .= ' av-columns-' . $atts['columns'];
- }
- /**
- * Filter für zusätzliche CSS Klassen
- */
- $grid_class = apply_filters( 'avf_author_loop_classes', $grid_class, 'author', $atts );
- echo '<div class="' . esc_attr( $grid_class ) . '">';
- while( have_posts() )
- {
- the_post();
- $post_id = get_the_ID();
- $image_size = $atts['image_size'];
- $post_format = get_post_format() ? get_post_format() : 'standard';
- // Image holen
- $thumbnail = get_the_post_thumbnail( $post_id, $image_size );
- // Content basierend auf Einstellung
- $show_content = '';
- if( in_array( $atts['contents'], array('excerpt', 'excerpt_read_more') ) ) {
- $show_content = get_the_excerpt();
- } elseif( $atts['contents'] == 'content' ) {
- $show_content = get_the_content();
- }
- // Meta Info sammeln
- $meta_info = array();
- $meta_separator = '<span class="text-sep">/</span>';
- // Published Date (aus Enfold Einstellungen)
- if( 'blog-meta-date' == avia_get_option( 'blog-meta-date' ) ) {
- $meta_info['date'] = '<time class="date-container minor-meta updated" datetime="' . get_the_time('c', $post_id) . '">' . get_the_time( get_option('date_format'), $post_id ) . '</time>';
- }
- // Modified Date (optional über Filter steuerbar)
- if( $atts['show_modified_date'] == 'yes' ) {
- $published_date = get_the_date( get_option('date_format'), $post_id );
- $modified_date = get_the_modified_date( get_option('date_format'), $post_id );
- // Nur anzeigen wenn tatsächlich bearbeitet wurde
- if( $published_date != $modified_date ) {
- $meta_info['modified'] = '<time class="date-container minor-meta modified-date" datetime="' . get_the_modified_time('c', $post_id) . '">' . __('Updated:', 'avia_framework') . ' ' . $modified_date . '</time>';
- }
- }
- if( 'blog-meta-comments' == avia_get_option( 'blog-meta-comments' ) ) {
- if( get_comments_number() != '0' || comments_open() ) {
- ob_start();
- comments_popup_link(
- "0 " . __( 'Comments', 'avia_framework' ),
- "1 " . __( 'Comment' , 'avia_framework' ),
- "% " . __( 'Comments', 'avia_framework' ),
- 'comments-link',
- __( 'Comments Disabled', 'avia_framework' )
- );
- $meta_info['comments'] = '<span class="comment-container minor-meta">' . ob_get_clean() . '</span>';
- }
- }
- $taxonomies = get_object_taxonomies( get_post_type( $post_id ) );
- $cats = '';
- $excluded_taxonomies = array_merge( get_taxonomies( array( 'public' => false ) ), array( 'post_tag', 'post_format' ) );
- $excluded_taxonomies = apply_filters( 'avf_exclude_taxonomies', $excluded_taxonomies, get_post_type( $post_id ), $post_id, 'loop-author' );
- if( ! empty( $taxonomies ) ) {
- foreach( $taxonomies as $taxonomy ) {
- if( ! in_array( $taxonomy, $excluded_taxonomies ) ) {
- $cats .= get_the_term_list( $post_id, $taxonomy, '', ', ','' ) . ' ';
- }
- }
- }
- if( 'blog-meta-category' == avia_get_option( 'blog-meta-category' ) && ! empty( $cats ) ) {
- $meta_info['categories'] = '<span class="blog-categories minor-meta">' . __( 'in', 'avia_framework') . ' ' . trim( $cats ) . '</span>';
- }
- $meta_info = apply_filters( 'avf_post_metadata_array', $meta_info, 'loop-author' );
- // Parity für Spalten (nicht mehr nötig bei Grid, aber für Kompatibilität)
- $parity = '';
- $first = $post_loop_count == 1 ? 'first' : '';
- ?>
- <article class="flex_column post-entry post-entry-<?php echo $post_id; ?> <?php echo $first; ?> <?php echo $parity; ?> post-entry-type-<?php echo $post_format; ?>">
- <div class="av-author-grid-item">
- <a href="<?php the_permalink(); ?>" class="av-author-grid-image-link" title="<?php echo esc_attr( get_the_title() ); ?>">
- <?php if( $thumbnail ): ?>
- <div class="av-author-grid-image">
- <?php echo $thumbnail; ?>
- <div class="av-author-grid-overlay"></div>
- </div>
- <?php endif; ?>
- </a>
- <div class="av-author-grid-content">
- <header class="entry-content-header">
- <h3 class="av-author-grid-title entry-title">
- <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
- </h3>
- <?php if( ! empty( $meta_info ) ): ?>
- <span class="av-author-grid-meta">
- <?php echo implode( $meta_separator, $meta_info ); ?>
- </span>
- <?php endif; ?>
- </header>
- <?php if( ! empty( $show_content ) ): ?>
- <div class="av-author-grid-excerpt entry-content">
- <?php echo wpautop( $show_content ); ?>
- </div>
- <?php endif; ?>
- </div>
- <?php if( $atts['contents'] == 'excerpt_read_more' ): ?>
- <div class="av-author-grid-read-more">
- <a href="<?php the_permalink(); ?>" class="more-link"><?php _e('Read more', 'avia_framework'); ?><span class="more-link-arrow"></span></a>
- </div>
- <?php endif; ?>
- </div>
- </article>
- <?php
- $post_loop_count++;
- }
- echo '</div>'; // Ende Grid Container
- // Pagination - genau wie in loop-index.php
- if( ! isset( $avia_config['remove_pagination'] ) && $atts['paginate'] == 'yes' ) {
- echo '<div class="av-author-pagination">';
- echo avia_pagination( '', 'nav' );
- echo '</div>';
- }
- }
- else
- {
- // Nichts gefunden
- $default_heading = 'h1';
- $args = array(
- 'heading' => $default_heading,
- 'extra_class' => ''
- );
- $args = apply_filters( 'avf_customize_heading_settings', $args, 'loop_author::nothing_found', array() );
- $heading = ! empty( $args['heading'] ) ? $args['heading'] : $default_heading;
- $css = ! empty( $args['extra_class'] ) ? $args['extra_class'] : '';
- $aria_label = 'aria-label="' . __( 'No Author Archive Posts Found', 'avia_framework' ) . '"';
- $aria_label = apply_filters( 'avf_aria_label_for_header', $aria_label, __FILE__, [] );
- ?>
- <article class="entry">
- <header class="entry-content-header" <?php echo $aria_label; ?>>
- <?php echo "<{$heading} class='post-title entry-title {$css}'>" . __( 'Nothing Found', 'avia_framework' ) . "</{$heading}>"; ?>
- </header>
- <p class="entry-content" <?php avia_markup_helper( array( 'context' => 'entry_content' ) ); ?>>
- <?php _e( 'Sorry, no posts matched your criteria', 'avia_framework' ); ?>
- </p>
- <footer class="entry-footer"></footer>
- </article>
- <?php
- }
Advertisement
Add Comment
Please, Sign In to add comment