mirror of
https://github.com/gosticks/wordpress-develop.git
synced 2026-04-14 01:24:27 +00:00
Permalinks: Add a pre_wp_unique_post_slug filter.
Returning a non-`null` value on this fillter will cause `wp_unique_post_slug()` to return early with that value, skipping potentially expensive database queries on some sites. Props coffee2code, javorszky, iCaleb. Fixes #21112. git-svn-id: https://develop.svn.wordpress.org/trunk@44454 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
@@ -1357,4 +1357,30 @@ class Tests_Post extends WP_UnitTestCase {
|
||||
$this->assertEquals( $changeset_data, json_decode( get_post( $post_id )->post_content, true ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* Test ensuring that the post_slug can be filtered with a custom value short circuiting the built in
|
||||
* function that tries to create a unique name based on the post name.
|
||||
*
|
||||
* @see wp_unique_post_slug()
|
||||
* @ticket 21112
|
||||
*/
|
||||
function test_pre_wp_unique_post_slug_filter() {
|
||||
add_filter( 'pre_wp_unique_post_slug', array( $this, 'filter_pre_wp_unique_post_slug' ), 10, 6 );
|
||||
|
||||
$post_id = $this->factory->post->create(
|
||||
array(
|
||||
'title' => 'An example',
|
||||
'post_status' => 'publish',
|
||||
'post_type' => 'page',
|
||||
)
|
||||
);
|
||||
$post = get_post( $post_id );
|
||||
$this->assertEquals( 'override-slug-' . $post->post_type, $post->post_name );
|
||||
|
||||
remove_filter( 'pre_wp_unique_post_slug', array( $this, 'filter_pre_wp_unique_post_slug' ), 10, 6 );
|
||||
}
|
||||
|
||||
function filter_pre_wp_unique_post_slug( $default, $slug, $post_ID, $post_status, $post_type, $post_parent ) {
|
||||
return 'override-slug-' . $post_type;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user