Changeset 10272 for sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-learn-2020/functions.php
- Timestamp:
- 09/16/2020 10:07:05 PM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sites/trunk/wordpress.org/public_html/wp-content/themes/pub/wporg-learn-2020/functions.php
r10237 r10272 29 29 */ 30 30 function wporg_learn_scripts() { 31 wp_enqueue_style( 'wporg-style', get_theme_file_uri( '/css/style.css' ), array( 'dashicons', 'open-sans' ), filemtime( __DIR__ . '/css/style.css' ) ); 32 wp_enqueue_script( 'wporg-navigation', get_template_directory_uri() . '/js/navigation.js', array(), filemtime( __DIR__ . '/js/navigation.js' ), true ); 31 wp_enqueue_style( 32 'wporg-style', 33 get_theme_file_uri( '/css/style.css' ), 34 array( 'dashicons', 'open-sans' ), 35 filemtime( __DIR__ . '/css/style.css' ) 36 ); 37 wp_enqueue_script( 38 'wporg-navigation', 39 get_template_directory_uri() . '/js/navigation.js', 40 array(), 41 filemtime( __DIR__ . '/js/navigation.js' ), 42 true 43 ); 44 45 if ( is_post_type_archive( 'wporg_workshop' ) ) { 46 wp_enqueue_style( 'select2' ); 47 wp_enqueue_script( 48 'wporg-filters', 49 get_theme_file_uri() . '/js/filters.js', 50 array( 'jquery', 'select2' ), 51 filemtime( __DIR__ . '/js/filters.js' ), 52 true 53 ); 54 } 33 55 } 34 56 add_action( 'wp_enqueue_scripts', 'wporg_learn_scripts' ); … … 233 255 234 256 if ( $query->is_main_query() && $query->is_post_type_archive( 'wporg_workshop' ) ) { 235 $featured = wporg_get_featured_workshops(); 236 237 if ( ! empty( $featured ) ) { 238 $featured = reset( $featured ); 239 $query->set( 'post__not_in', array( $featured->ID ) ); 257 wporg_workshop_maybe_apply_query_filters( $query ); 258 259 if ( true !== $query->get( 'wporg_workshop_filters' ) ) { 260 $featured = wporg_get_featured_workshops(); 261 262 if ( ! empty( $featured ) ) { 263 $featured = reset( $featured ); 264 $query->set( 'post__not_in', array( $featured->ID ) ); 265 } 240 266 } 241 267 } … … 246 272 } 247 273 add_action( 'pre_get_posts', 'wporg_workshop_modify_query' ); 274 275 /** 276 * Update a query object if filter parameters are present. 277 * 278 * @param WP_Query $query Query object, passed by reference. 279 * 280 * @return void 281 */ 282 function wporg_workshop_maybe_apply_query_filters( WP_Query &$query ) { 283 $filters = filter_input_array( 284 INPUT_GET, 285 array( 286 'series' => FILTER_SANITIZE_NUMBER_INT, 287 'topic' => FILTER_SANITIZE_NUMBER_INT, 288 'language' => FILTER_SANITIZE_STRING, 289 'captions' => FILTER_SANITIZE_STRING, 290 'search' => FILTER_SANITIZE_STRING, 291 ), 292 false 293 ); 294 295 $meta_query = array(); 296 $tax_query = array(); 297 $is_filtered = false; 298 299 if ( is_array( $filters ) ) { 300 $filters = array_filter( $filters ); 301 302 foreach ( $filters as $filter_name => $filter_value ) { 303 switch ( $filter_name ) { 304 case 'series': 305 if ( ! empty( $tax_query ) ) { 306 $tax_query['relation'] = 'AND'; 307 } 308 $tax_query[] = array( 309 'taxonomy' => 'wporg_workshop_series', 310 'terms' => $filter_value, 311 ); 312 break; 313 case 'topic': 314 if ( ! empty( $tax_query ) ) { 315 $tax_query['relation'] = 'AND'; 316 } 317 $tax_query[] = array( 318 'taxonomy' => 'topic', 319 'terms' => $filter_value, 320 ); 321 break; 322 case 'language': 323 if ( ! empty( $meta_query ) ) { 324 $meta_query['relation'] = 'AND'; 325 } 326 $meta_query[] = array( 327 'key' => 'video_language', 328 'value' => $filter_value, 329 ); 330 break; 331 case 'captions': 332 if ( ! empty( $meta_query ) ) { 333 $meta_query['relation'] = 'AND'; 334 } 335 $meta_query[] = array( 336 'key' => 'video_caption_language', 337 'value' => $filter_value, 338 ); 339 break; 340 case 'search': 341 $query->set( 's', $filter_value ); 342 $is_filtered = true; 343 break; 344 } 345 } 346 } 347 348 if ( ! empty( $meta_query ) ) { 349 $query->set( 'meta_query', $meta_query ); 350 $is_filtered = true; 351 } 352 353 if ( ! empty( $tax_query ) ) { 354 $query->set( 'tax_query', $tax_query ); 355 $is_filtered = true; 356 } 357 358 if ( $is_filtered ) { 359 $query->set( 'wporg_workshop_filters', true ); 360 } 361 } 248 362 249 363 /** … … 300 414 301 415 return $wp_users; 416 } 417 418 /** 419 * Get the bio of a user, either from profiles.wordpress.org or usermeta. 420 * 421 * This relies on the availability of the `bpmain_bp_xprofile_data` table, so for local environments 422 * it falls back on values in `usermeta`. 423 * 424 * @param WP_User $user 425 * 426 * @return string 427 */ 428 function wporg_get_workshop_presenter_bio( WP_User $user ) { 429 global $wpdb; 430 431 $bio = ''; 432 433 if ( 'local' !== wp_get_environment_type() ) { 434 $xprofile_field_id = 3; 435 436 $sql = $wpdb->prepare( 437 ' 438 SELECT value 439 FROM bpmain_bp_xprofile_data 440 WHERE user_id = %1$d 441 AND field_id = %2$d 442 ', 443 $user->ID, 444 $xprofile_field_id 445 ); 446 447 $bio = $wpdb->get_var( $sql ) ?: ''; // phpcs:ignore WordPress.DB.PreparedSQL -- prepare called above. 448 } 449 450 if ( ! $bio ) { 451 $bio = $user->description; 452 } 453 454 return $bio; 302 455 } 303 456 … … 352 505 */ 353 506 function wporg_workshop_series_get_term( $workshop = null ) { 507 $workshop = get_post( $workshop ); 508 354 509 if ( ! $workshop instanceof WP_Post ) { 355 $workshop = get_post( $workshop );510 return false; 356 511 } 357 512
Note: See TracChangeset
for help on using the changeset viewer.