Using WordPress ‘preview_post_link’ PHP filter

‘preview_post_link’ is a WordPress filter that allows you to modify the URL used for a post preview.

Usage

To use this filter, you need to add a custom function to your theme’s functions.php file or a custom plugin. Then, hook your function to the preview_post_link filter using the add_filter() function.

Here’s a basic code example:

function my_custom_preview_link( $preview_link, $post ) {
    // Your custom code goes here
    return $preview_link;
}
add_filter( 'preview_post_link', 'my_custom_preview_link', 10, 2 );

Parameters

  • $preview_link (string): URL used for the post preview.
  • $post (WP_Post): Post object.

Examples

Add a query parameter to the preview URL

function add_query_param_to_preview_link( $preview_link, $post ) {
    $preview_link = add_query_arg( 'my_param', 'value', $preview_link );
    return $preview_link;
}
add_filter( 'preview_post_link', 'add_query_param_to_preview_link', 10, 2 );

This code adds a query parameter my_param with the value value to the post preview URL.

Change preview URL to a custom domain

function change_preview_domain( $preview_link, $post ) {
    $preview_link = str_replace( 'example.com', 'preview.example.com', $preview_link );
    return $preview_link;
}
add_filter( 'preview_post_link', 'change_preview_domain', 10, 2 );

This code replaces the domain in the post preview URL with a custom domain (preview.example.com).

Append post ID to the preview URL

function append_post_id_to_preview_link( $preview_link, $post ) {
    $preview_link .= '-' . $post->ID;
    return $preview_link;
}
add_filter( 'preview_post_link', 'append_post_id_to_preview_link', 10, 2 );

This code appends the post ID to the post preview URL.

Add a custom path to the preview URL

function add_custom_path_to_preview_link( $preview_link, $post ) {
    $preview_link .= '/custom-path/';
    return $preview_link;
}
add_filter( 'preview_post_link', 'add_custom_path_to_preview_link', 10, 2 );

This code adds a custom path /custom-path/ to the post preview URL.

Change preview URL based on post type

function change_preview_link_based_on_post_type( $preview_link, $post ) {
    if ( 'custom_post_type' === $post->post_type ) {
        $preview_link = 'https://example.com/custom-preview-url/';
    }
    return $preview_link;
}
add_filter( 'preview_post_link', 'change_preview_link_based_on_post_type', 10, 2 );

This code changes the post preview URL to a custom URL (https://example.com/custom-preview-url/) if the post type is custom_post_type.