#22352 closed enhancement (invalid)
Update get_permalink() to allow for permalink structure argument
| Reported by: |
|
Owned by: | |
|---|---|---|---|
| Milestone: | Priority: | normal | |
| Severity: | normal | Version: | 3.5 |
| Component: | Permalinks | Keywords: | has-patch needs-testing dev-feedback |
| Focuses: | Cc: |
Description
This patch allows for an optional custom permalink structure argument to the get_permalink() function, which would be used for the permalink generation in place of the structure saved in the "permalink_structure" option. Useful for showing what a permalink for a post/page would look like with a new structure, or for updating content when permalink structures change.
Attachments (1)
Change History (4)
#1
@
13 years ago
Couldn't you use the 'pre_post_link' filter?
function my_change_permalink( $permalink, $post ) {
return '/foo/bar/';
}
add_filter( 'pre_post_link', 'my_change_permalink', 10, 2 );
$link = get_permalink();
remove_filter( 'pre_post_link', 'my_change_permalink', 10, 2 );
#2
@
13 years ago
- Resolution set to invalid
- Status changed from new to closed
Ack, you are 100% correct, that would be exactly the way to do it. Got a bit carried away dealing with the bug in ticket:22351 trying to create a permalink from the "old permalink_structure" which is (not correctly) being passed by the "permalink_structure_changed" action. In hindsight it's easy enough to keep this value in an instance variable and reference it from the hooked filter, so:
class MyClass {
private $old_structure;
public function get_old_structure(){
return $this->old_structure;
}
public function permalink_structure_changed($old_structure, $new_structure){
$this->old_structure = $old_structure;
add_filter( 'pre_post_link', array($this, 'get_old_structure') );
$old_permalink = get_permalink($post_id, false);
remove_filter( 'pre_post_link', array($this, 'get_old_structure') );
// more code...
}
}
$myclass = new MyClass();
add_action( 'permalink_structure_changed', array( $myclass, 'permalink_structure_changed' ), 10, 2 );
optional permalink structure argument for get_permalink()