Menu Close

WooCommerce: Get Draft Product URL

default

Now, this is a bit of a niche tutorial, but it may come useful you need to get a product permalink when it’s still a draft. As you can see from the screenshot below, this is helpful when the product URL is very long – in such a case WordPress truncates the “Permalink” string and you can’t really copy/paste.

For example, you may need the product URL for a scheduled blog post, a future newsletter, an email; in whatever case, this is a cool way to “get” the product URL and print it in the “Publish” meta box of the single product edit page. Enjoy!

A very long product permalink is truncated by WordPress and can’t be copied/pasted when the product is still a draft. This snippet will print the entire URL in the Publish meta box, so that you can easily copy/paste

PHP Snippet: Get Draft Product Permalink @ WordPress Dashboard > Single Product Edit Page

/**
 * @snippet       Get Draft Product Permalink @ WooCommerce Edit Product
 * @how-to        Get CustomizeWoo.com FREE
 * @author        Rodolfo Melogli
 * @compatible    WooCommerce 7
 * @donate $9     https://businessbloomer.com/bloomer-armada/
 */

add_action( 'post_submitbox_misc_actions', 'bbloomer_future_product_URL', 9999 );

function bbloomer_future_product_URL() {
	global $post, $post_id, $product_object;
	if ( 'product' !== $post->post_type ) {
		return;
	}
	list( $permalink, $postname ) = get_sample_permalink( $post_id );
	echo '<div class="misc-pub-section">Slug: <strong style="word-break: break-all">' . str_replace( '%pagename%', $postname, $permalink ) . '</strong></div>';
}

Note – if you want to get and display the permalink elsewhere, for example on the frontend, you may need to add a require statement before the get_sample_permalink call (source: this StackOverflow answer):

require_once ABSPATH . '/wp-admin/includes/post.php';
View Source
Posted in WooCommerce Tips