Making WordPress.org

Ticket #1084: wc-post-types-wceu.diff

File wc-post-types-wceu.diff, 3.8 KB (added by dzver, 9 years ago)
  • inc/back-compat.php

     
    6666        function shortcode_speakers( $attr, $content ) {
    6767                global $post;
    6868
     69                $attr = shortcode_atts( array(
     70                        'speaker_link'   => '',
     71                ), $attr );
     72
     73                $attr['speaker_link'] = in_array( $attr['speaker_link'], array( 'permalink' ) ) ? $attr['speaker_link'] : '';
     74
    6975                $speakers = new WP_Query( array(
    7076                        'post_type' => 'wcb_speaker',
    7177                        'orderby' => 'title',
     
    8187
    8288                <div class="cpt-loop speaker-gravatar-list clearfix">
    8389                        <p>
    84                         <?php while ( $speakers->have_posts() ) : $speakers->the_post(); ?>
    85                         <?php
    86                                 $href  = '#' . esc_attr( $post->post_name );
     90                        <?php while ( $speakers->have_posts() ) :
     91                                $speakers->the_post();
     92                                $href  = $attr['speaker_link'] ? get_the_permalink() : '#' . esc_attr( $post->post_name );
    8793                                $title = esc_attr( get_the_title() );
    8894                                echo "<a href='$href' title='$title'>";
    8995                                echo get_avatar( get_post_meta( get_the_ID(), '_wcb_speaker_email', true ), 48 );
     
    107113                                                        echo '</div><div class="grid_6 omega">';
    108114
    109115                                                $odd = ( ( $speakers->current_post + 1 ) % 2 ) ? 'odd' : 'even';
     116
     117                                                $speaker_title = get_the_title();
     118                                                if ( $attr['speaker_link'] === 'permalink' ) {
     119                                                        $speaker_title = '<a href="' . get_the_permalink() . '">' . get_the_title() . '</a>';
     120                                                }
    110121                                        ?>
    111122
    112123                                        <div id="<?php echo esc_attr( $post->post_name ); ?>" <?php post_class( 'speaker clearfix ' . $odd ); ?> >
    113                                                 <h3 class="entry-title speaker-name"><?php the_title(); ?></h3>
     124                                                <h3 class="entry-title speaker-name"><?php echo $speaker_title; ?></h3>
    114125                                                <div class="entry-content speaker-bio">
    115126                                                <?php
    116127                                                        echo get_avatar( get_post_meta( get_the_ID(), '_wcb_speaker_email', true ), 102 );
  • wc-post-types.php

     
    6666        function admin_init() {
    6767                register_setting( 'wcb_sponsor_options', 'wcb_sponsor_level_order', array( $this, 'validate_sponsor_options' ) );
    6868                add_action( 'pre_get_posts', array( $this, 'admin_pre_get_posts' ) );
     69                $this->speakers_comments_settings();
    6970        }
    7071
    7172        /**
     
    17121713                register_post_type( 'wcb_speaker', array(
    17131714                        'labels'            => $labels,
    17141715                        'rewrite'           => array( 'slug' => 'speaker', 'with_front' => true ),
    1715                         'supports'          => array( 'title', 'editor', 'revisions' ),
     1716                        'supports'          => $this->get_supports(),
    17161717                        'menu_position'     => 20,
    17171718                        'public'            => true,
    17181719                        'show_ui'           => true,
     
    20332034
    20342035                return $items;
    20352036        }
     2037
     2038        function speakers_comments_settings() {
     2039                add_settings_section(
     2040                        'speakers_comments_section',
     2041                        'Allow comments for speakers',
     2042                        array( $this, 'speakers_comments_section_callback' ),
     2043                        'discussion'
     2044                );
     2045
     2046                add_settings_field(
     2047                        'speakers_comments_allowed',
     2048                        'Speaker comments allowed',
     2049                        array( $this, 'speakers_comments_allowed_callback' ),
     2050                        'discussion',
     2051                        'speakers_comments_section'
     2052                );
     2053
     2054                register_setting( 'discussion', 'speakers_comments_allowed' );
     2055        }
     2056
     2057        function speakers_comments_section_callback() {
     2058                echo '<p>You can enable comments for Speakers to allow users provide feedback for the talks.</p>';
     2059        }
     2060
     2061        function speakers_comments_allowed_callback() {
     2062                echo '<input name="speakers_comments_allowed" id="speakers_comments_allowed" type="checkbox" value="1" class="code" ' . checked( 1, get_option( 'speakers_comments_allowed' ), false ) . ' />';
     2063        }
     2064
     2065        function get_supports() {
     2066                $supports = array( 'title', 'editor', 'revisions' );
     2067                if ( get_option( 'speakers_comments_allowed' ) ) {
     2068                        $supports[] = 'comments';
     2069                }
     2070                return $supports;
     2071        }
    20362072}
    20372073
    20382074// Load the plugin class.