Ticket #16557: filters to tweak permalink guessing.diff
File filters to tweak permalink guessing.diff, 1.8 KB (added by , 13 years ago) |
---|
-
wp-includes/canonical.php
391 391 if ( !get_query_var('name') ) 392 392 return false; 393 393 394 $where = $wpdb->prepare("post_name LIKE %s", like_escape( get_query_var('name') ) . '%'); 394 $page_where = $wpdb->prepare("post_name LIKE %s", like_escape( get_query_var('name') ) . '%'); 395 $page_where = apply_filters( 'redirect_guess_page_where', $page_where ); 395 396 396 397 // if any of post_type, year, monthnum, or day are set, use them to refine the query 398 $post_where = ''; 397 399 if ( get_query_var('post_type') ) 398 $ where .= $wpdb->prepare(" AND post_type = %s", get_query_var('post_type'));400 $post_where .= $wpdb->prepare(" AND post_type = %s", get_query_var('post_type')); 399 401 if ( get_query_var('year') ) 400 $ where .= $wpdb->prepare(" AND YEAR(post_date) = %d", get_query_var('year'));402 $post_where .= $wpdb->prepare(" AND YEAR(post_date) = %d", get_query_var('year')); 401 403 if ( get_query_var('monthnum') ) 402 $ where .= $wpdb->prepare(" AND MONTH(post_date) = %d", get_query_var('monthnum'));404 $post_where .= $wpdb->prepare(" AND MONTH(post_date) = %d", get_query_var('monthnum')); 403 405 if ( get_query_var('day') ) 404 $where .= $wpdb->prepare(" AND DAYOFMONTH(post_date) = %d", get_query_var('day')); 406 $post_where .= $wpdb->prepare(" AND DAYOFMONTH(post_date) = %d", get_query_var('day')); 407 $post_where = apply_filters( 'redirect_guess_post_where', $post_where ); 405 408 406 $post_id = $wpdb->get_var("SELECT ID FROM $wpdb->posts WHERE $ where AND post_status = 'publish'");409 $post_id = $wpdb->get_var("SELECT ID FROM $wpdb->posts WHERE $page_where $post_where AND post_status = 'publish'"); 407 410 if ( !$post_id ) 408 411 return false; 409 412 return get_permalink($post_id);