Changeset 11225 for sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-learn/inc/admin.php
- Timestamp:
- 09/10/2021 10:25:05 PM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-learn/inc/admin.php
r11057 r11225 18 18 add_action( 'restrict_manage_posts', __NAMESPACE__ . '\add_workshop_list_table_filters', 10, 2 ); 19 19 add_action( 'pre_get_posts', __NAMESPACE__ . '\handle_workshop_list_table_filters' ); 20 add_filter( 'display_post_states', __NAMESPACE__ . '\add_post_states', 10, 2 ); 21 foreach ( array( 'lesson-plan', 'wporg_workshop', 'course', 'lesson' ) as $pt ) { 22 add_filter( 'views_edit-' . $pt, __NAMESPACE__ . '\list_table_views' ); 23 } 24 add_action( 'pre_get_posts', __NAMESPACE__ . '\handle_list_table_views' ); 20 25 21 26 /** … … 208 213 } 209 214 } 215 216 /** 217 * Custom post states for list tables. 218 * 219 * @param array $post_states 220 * @param \WP_Post $post 221 * 222 * @return mixed 223 */ 224 function add_post_states( $post_states, $post ) { 225 $expiration_date = $post->expiration_date; 226 227 if ( $expiration_date ) { 228 $exp = strtotime( $expiration_date ); 229 $now = strtotime( 'now' ); 230 231 if ( $exp > $now ) { 232 $post_states[] = sprintf( 233 esc_html__( 'Expires in %s', 'wporg-learn' ), 234 esc_html( human_time_diff( $now, $exp ) ) 235 ); 236 } else { 237 $post_states[] = sprintf( 238 '<span style="color: #b32d2e;">%s</span>', 239 esc_html__( 'Expired', 'wporg-learn' ) 240 ); 241 } 242 } 243 244 return $post_states; 245 } 246 247 /** 248 * Add view links to the patterns list table. 249 * 250 * @param array $views 251 * 252 * @return array 253 */ 254 function list_table_views( $views ) { 255 global $typenow; 256 257 $wants_expired = filter_input( INPUT_GET, 'expired', FILTER_VALIDATE_BOOLEAN ); 258 259 $url = add_query_arg( 260 array( 261 'post_type' => $typenow, 262 'expired' => 1, 263 ), 264 admin_url( 'edit.php' ) 265 ); 266 267 $extra_attributes = ''; 268 if ( $wants_expired ) { 269 $extra_attributes = ' class="current" aria-current="page"'; 270 } 271 272 $expired_posts_query = new \WP_Query( array( 273 'post_type' => $typenow, 274 'post_status' => 'any', 275 'numberposts' => 1, 276 'meta_query' => array( 277 array( 278 'key' => 'expiration_date', 279 'value' => current_time( 'mysql' ), 280 'compare' => '<', 281 ), 282 ), 283 ) ); 284 285 $views['expired'] = sprintf( 286 '<a href="%s"%s>%s</a>', 287 esc_url( $url ), 288 $extra_attributes, 289 sprintf( 290 /* translators: %s: Number of posts. */ 291 _n( 292 'Expired <span class="count">(%s)</span>', 293 'Expired <span class="count">(%s)</span>', 294 $expired_posts_query->found_posts, 295 'wporg-learn' 296 ), 297 number_format_i18n( $expired_posts_query->found_posts ) 298 ) 299 ); 300 301 return $views; 302 } 303 304 305 /** 306 * Modify the query that populates the patterns list table. 307 * 308 * @param WP_Query $query 309 * 310 * @return void 311 */ 312 function handle_list_table_views( WP_Query $query ) { 313 global $typenow; 314 315 $wants_expired = filter_input( INPUT_GET, 'expired', FILTER_VALIDATE_BOOLEAN ); 316 317 if ( ! is_admin() || ! $query->is_main_query() ) { 318 return; 319 } 320 321 $current_screen = get_current_screen(); 322 323 if ( 'edit-' . $typenow === $current_screen->id ) { 324 if ( $wants_expired ) { 325 $meta_query = $query->get( 'meta_query', array() ); 326 327 $meta_query[] = array( 328 'key' => 'expiration_date', 329 'value' => current_time( 'mysql' ), 330 'compare' => '<', 331 ); 332 333 $query->set( 'meta_query', $meta_query ); 334 } 335 } 336 }
Note: See TracChangeset
for help on using the changeset viewer.