WordPress.org

Making WordPress.org

Changeset 935


Ignore:
Timestamp:
10/25/14 06:00:53 (11 months ago)
Author:
iandunn
Message:

Add speaker information to sessions posts and vice versa.

props codebykat

Location:
sites/trunk/wordcamp.org/public_html/wp-content/plugins/wc-post-types
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • sites/trunk/wordcamp.org/public_html/wp-content/plugins/wc-post-types/css/shortcodes.css

    r502 r935  
    7474    } 
    7575} 
     76 
     77/* 
     78 * [sessions] 
     79 * [speakers] 
     80 */ 
     81#session-speaker-names, 
     82#speaker-session-names { 
     83    margin-left: 0; 
     84} 
     85 
     86    #session-speaker-names li, 
     87    #speaker-session-names li { 
     88        list-style-type: none; 
     89    } 
  • sites/trunk/wordcamp.org/public_html/wp-content/plugins/wc-post-types/wc-post-types.php

    r934 r935  
    4747 
    4848        add_filter( 'the_content', array( $this, 'add_avatar_to_speaker_posts' ) ); 
     49        add_filter( 'the_content', array( $this, 'add_speaker_info_to_session_posts' ) ); 
     50        add_filter( 'the_content', array( $this, 'add_session_info_to_speaker_posts' ) ); 
    4951    } 
    5052 
     
    196198     
    197199    function wp_enqueue_scripts() { 
    198         wp_enqueue_style( 'wcb_shortcodes', plugins_url( 'css/shortcodes.css', __FILE__ ), array(), 1 ); 
     200        wp_enqueue_style( 'wcb_shortcodes', plugins_url( 'css/shortcodes.css', __FILE__ ), array(), 2 ); 
    199201    } 
    200202 
     
    10721074        $avatar = get_avatar( get_post_meta( $post->ID, '_wcb_speaker_email', true ) ); 
    10731075        return '<div class="speaker-avatar">' . $avatar . '</div>' . $content; 
     1076    } 
     1077 
     1078    /** 
     1079     * Add speaker information to Session posts 
     1080     * 
     1081     * We don't enable it for sites that were created before it was committed, because some will have already 
     1082     * crafted the bio to include this content, so duplicating it would look wrong, but we still allow older 
     1083     * sites to opt-in. 
     1084     * 
     1085     * @param string $content 
     1086     * 
     1087     * @return string 
     1088     */ 
     1089    function add_speaker_info_to_session_posts( $content ) { 
     1090        global $post; 
     1091        $enabled_site_ids = array( 364 );    // 2014.sf 
     1092 
     1093        if ( 'wcb_session' !== $post->post_type ) { 
     1094            return $content; 
     1095        } 
     1096 
     1097        $site_id = get_current_blog_id(); 
     1098        if ( $site_id <= 463 && ! in_array( $site_id, $enabled_site_ids ) ) { 
     1099            return $content; 
     1100        } 
     1101 
     1102        $speaker_ids = (array) get_post_meta( $post->ID, '_wcpt_speaker_id' ); 
     1103 
     1104        if ( empty ( $speaker_ids ) ) { 
     1105            return $content; 
     1106        } 
     1107 
     1108        $speaker_args = array( 
     1109            'post_type'      => 'wcb_speaker', 
     1110            'posts_per_page' => -1, 
     1111            'post__in'       => $speaker_ids, 
     1112            'orderby'        => 'title', 
     1113            'order'          => 'asc', 
     1114        ); 
     1115 
     1116        $speakers = new WP_Query( $speaker_args ); 
     1117 
     1118        if ( ! $speakers->have_posts() ) { 
     1119            return $content; 
     1120        } 
     1121 
     1122        $speakers_html = sprintf( 
     1123            '<h2 class="session-speakers">%s</h2>', 
     1124            _n( 
     1125                __( 'Speaker', 'wordcamporg' ), 
     1126                __( 'Speakers', 'wordcamporg' ), 
     1127                $speakers->post_count 
     1128            ) 
     1129        ); 
     1130 
     1131        $speakers_html .= '<ul id="session-speaker-names">'; 
     1132        while ( $speakers->have_posts() ) { 
     1133            $speakers->the_post(); 
     1134            $speakers_html .= sprintf( '<li><a href="%s">%s</a></li>', get_the_permalink(), get_the_title() ); 
     1135        } 
     1136        $speakers_html .= '</ul>'; 
     1137 
     1138        wp_reset_postdata(); 
     1139 
     1140        return $content . $speakers_html; 
     1141    } 
     1142 
     1143    /** 
     1144     * Add session information to Speaker posts 
     1145     * 
     1146     * We don't enable it for sites that were created before it was committed, because some will have already 
     1147     * crafted the bio to include this content, so duplicating it would look wrong, but we still allow older 
     1148     * sites to opt-in. 
     1149     * 
     1150     * @param string $content 
     1151     * 
     1152     * @return string 
     1153     */ 
     1154    function add_session_info_to_speaker_posts( $content ) { 
     1155        global $post; 
     1156        $enabled_site_ids = array( 364 );    // 2014.sf 
     1157 
     1158        if ( 'wcb_speaker' !== $post->post_type ) { 
     1159            return $content; 
     1160        } 
     1161 
     1162        $site_id = get_current_blog_id(); 
     1163        if ( $site_id <= 463 && ! in_array( $site_id, $enabled_site_ids ) ) { 
     1164            return $content; 
     1165        } 
     1166 
     1167        $session_args = array( 
     1168            'post_type'      => 'wcb_session', 
     1169            'posts_per_page' => -1, 
     1170            'meta_key'       => '_wcpt_speaker_id', 
     1171            'meta_value'     => $post->ID, 
     1172            'orderby'        => 'title', 
     1173            'order'          => 'asc', 
     1174        ); 
     1175 
     1176        $sessions = new WP_Query( $session_args ); 
     1177 
     1178        if ( ! $sessions->have_posts() ) { 
     1179            return $content; 
     1180        } 
     1181 
     1182        $sessions_html = sprintf( 
     1183            '<h2 class="speaker-sessions">%s</h2>', 
     1184            _n( 
     1185                __( 'Session', 'wordcamporg' ), 
     1186                __( 'Sessions', 'wordcamporg' ), 
     1187                $sessions->post_count 
     1188            ) 
     1189        ); 
     1190 
     1191        $sessions_html .= '<ul id="speaker-session-names">'; 
     1192        while ( $sessions->have_posts() ) { 
     1193            $sessions->the_post(); 
     1194            $sessions_html .= sprintf( '<li><a href="%s">%s</a></li>', get_the_permalink(), get_the_title() ); 
     1195        } 
     1196        $sessions_html .= '</ul>'; 
     1197 
     1198        wp_reset_postdata(); 
     1199 
     1200        return $content . $sessions_html; 
    10741201    } 
    10751202 
Note: See TracChangeset for help on using the changeset viewer.