Make WordPress Core

Ticket #38404: 38404.2.diff

File 38404.2.diff, 4.6 KB (added by morettigeorgiev, 9 years ago)

Hide not active articles with php

  • wp-content/themes/twentyseventeen/components/page/content-front-page-panels.php

     
    88 * @version 1.0
    99 */
    1010
    11 global $twentyseventeencounter;
     11global $active_panel;
    1212
    1313?>
    1414
    1515<article id="post-<?php the_ID(); ?>" <?php post_class( 'twentyseventeen-panel ' ); ?> >
    1616
    17         <span class="panel twentyseventeen-panel<?php echo esc_attr( $twentyseventeencounter ); ?>" id="panel<?php echo esc_attr( $twentyseventeencounter ); ?>">
    18                 <span class="twentyseventeen-panel-title"><?php printf( __( 'Panel %1$s', 'twentyseventeen' ), esc_attr( $twentyseventeencounter ) ); ?></span>
     17        <span class="panel twentyseventeen-panel<?php echo esc_attr( $active_panel ); ?>" id="panel<?php echo esc_attr( $active_panel ); ?>">
     18                <span class="twentyseventeen-panel-title"><?php printf( __( 'Panel %1$s', 'twentyseventeen' ), esc_attr( $active_panel ) ); ?></span>
    1919        </span>
    2020
    2121        <?php if ( has_post_thumbnail() ) :
  • wp-content/themes/twentyseventeen/front-page.php

     
    1313 */
    1414
    1515get_header(); ?>
    16 
    1716<div id="primary" class="content-area">
    1817        <main id="main" class="site-main" role="main">
    1918
     
    2726                endif; ?>
    2827
    2928                <?php
    30                 // Get each of our panels and show the post data.
    31                 $panels = array( '1', '2', '3', '4' );
     29                // Get each of our active panels and show the post data.
     30                $active_panels = twentyseventeen_active_panels();
    3231                $titles = array();
     32               
     33                global $active_panel; // Used in components/page/content-front-page-panels.php file.
    3334
    34                 global $twentyseventeencounter; // Used in components/page/content-front-page-panels.php file.
     35                if ( ! empty ( $active_panels ) ) : // If we have pages to show.
     36                        foreach ( $active_panels as $panel ) :
     37                                $active_panel = $panel;
     38                                $post = get_post( get_theme_mod( 'panel_' . $panel ) );
     39                                setup_postdata( $post );
     40                                set_query_var( 'panel', $panel );
    3541
    36                 if ( 0 !== twentyseventeen_panel_count() || is_customize_preview() ) : // If we have pages to show.
     42                                $titles[] = get_the_title(); // Put page titles in an array for use in navigation.
     43                                get_template_part( 'components/page/content', 'front-page-panels' );
    3744
    38                         $twentyseventeencounter = 1;
    39 
    40                         foreach ( $panels as $panel ) :
    41                                 if ( get_theme_mod( 'panel_' . $panel ) ) :
    42                                         $post = get_post( get_theme_mod( 'panel_' . $panel ) );
    43                                         setup_postdata( $post );
    44                                         set_query_var( 'panel', $panel );
    45 
    46                                         $titles[] = get_the_title(); // Put page titles in an array for use in navigation.
    47                                         get_template_part( 'components/page/content', 'front-page-panels' );
    48 
    49                                         wp_reset_postdata();
    50                                 else :
    51                                         // The output placeholder anchor.
    52                                         echo '<article class="panel-placeholder panel twentyseventeen-panel twentyseventeen-panel' . esc_attr( $twentyseventeencounter ) . '" id="panel' . esc_attr( $twentyseventeencounter ) . '"><span class="twentyseventeen-panel-title">' . sprintf( __( 'Panel %1$s Placeholder', 'twentyseventeen' ), esc_attr( $twentyseventeencounter ) ) . '</span></article>';
    53                                 endif;
    54 
    55                                 $twentyseventeencounter++;
     45                                wp_reset_postdata();
    5646                        endforeach;
    5747                        ?>
    5848
    59         <?php endif; // The if ( 0 !== twentyseventeen_panel_count() ) ends here.
     49        <?php endif; // The if ( ! empty ( $active_panels ) ) ends here.
    6050        ?>
    6151
    6252        </main><!-- #main -->
  • wp-content/themes/twentyseventeen/inc/template-functions.php

     
    6767add_filter( 'body_class', 'twentyseventeen_body_classes' );
    6868
    6969/**
    70  * Count our number of active panels.
    71  *
    72  * Primarily used to see if we have any panels active, duh.
     70 * Get an array of active panels
    7371 */
    74 function twentyseventeen_panel_count() {
     72function twentyseventeen_active_panels() {
    7573        $panels = array( '1', '2', '3', '4' );
    76         $panel_count = 0;
     74        $active_panels = array();
    7775
    78         foreach ( $panels as $panel ) {
     76        foreach ( $panels as $panel ) { 
    7977                if ( get_theme_mod( 'panel_' . $panel ) ) {
    80                         $panel_count++;
     78                        array_push( $active_panels, $panel );
    8179                }
    8280        }
    8381
    84         return $panel_count;
     82        return $active_panels;
    8583}
    8684
    8785/**