How do change the default “preview” button when posting using wordpress user/admin panel?
Tutorial details | |
---|---|
Difficulty | Easy (rss) |
Root privileges | No |
Requirements | Wordpress v2.0.11+ |
Time | N/A |
- preview_page_link – Applied to the link on the page editing screen that shows the page preview at the bottom (or right) of the screen.
- preview_post_link – Applied to the link on the post editing screen that shows the post preview at the bottom (or right) of the screen.
You need to use functions.php a functions file, which resides in the theme subdirectory. This file acts like a plugin, and if it is present in the theme you are using, it is automatically loaded during WordPress initialization. Edit file using a text editor such as vim:
$ vi functions.php
Append the following code:
// Change post preview button url // Change www.cyberciti.biz/faq/?p=124&preview=true // To server1.cyberciti.biz/faq/?p=124&preview=true function nixcraft_preview_link() { $slug = basename(get_permalink()); $mydomain = 'http://server1.cyberciti.biz'; $mydir = '/faq/'; $mynewpurl = "$mydomain$mydir$slug&preview=true"; return "$mynewpurl"; } add_filter( 'preview_post_link', 'nixcraft_preview_link' );
Save and close the file. Another example:
function nixcraft_update_post_link($link) { //replace www part with server1 using the following php function //preg_replace ( patter, replace, subject ) syntax $link = preg_replace('/www/', 'server1', $link); return $link; } add_filter('preview_post_link', 'nixcraft_update_post_link');
You can use the same filter when previewing to posts from a secure page (taken from secure-admin plugin):
function sa_post_link($link) { global $pagenow; if ( ('on' == $_SERVER['HTTPS']) && ('wp-comments-post.php' != $pagenow) ) $link = preg_replace('/^https?/', 'https', $link); return $link; } add_filter('preview_post_link', 'sa_post_link'); add_filter('preview_page_link', 'sa_post_link');
🐧 Please support my work on Patreon or with a donation.
🐧 Get the latest tutorials on Linux, Open Source & DevOps via:
🐧 Get the latest tutorials on Linux, Open Source & DevOps via:
- RSS feed or Weekly email newsletter
- Share on Twitter • Facebook • 7 comments... add one ↓
Category | List of Unix and Linux commands |
---|---|
File Management | cat |
Firewall | Alpine Awall • CentOS 8 • OpenSUSE • RHEL 8 • Ubuntu 16.04 • Ubuntu 18.04 • Ubuntu 20.04 |
Network Utilities | dig • host • ip • nmap |
OpenVPN | CentOS 7 • CentOS 8 • Debian 10 • Debian 8/9 • Ubuntu 18.04 • Ubuntu 20.04 |
Package Manager | apk • apt |
Processes Management | bg • chroot • cron • disown • fg • jobs • killall • kill • pidof • pstree • pwdx • time |
Searching | grep • whereis • which |
User Information | groups • id • lastcomm • last • lid/libuser-lid • logname • members • users • whoami • who • w |
WireGuard VPN | Alpine • CentOS 8 • Debian 10 • Firewall • Ubuntu 20.04 |
Why on earth would you ever need to do this??
Because sometimes you need a different url structure (for your posts or pages), so the preview url has to reflect the real url structure, or it could show a 404 instead of the post preview.
I have a perfect use-case. I’m using WordPress as an API for post content but the posts are actually appearing on a Laravel driven bespoke web-app.
As a result WordPress is not handling front-end display of post content at all.
Thank you NixCraft for sharing this!
I am having a problem where all of my links all show the same preview under them..
Whatever the top post is reading as a preview is being put under all other posts, any idea why?
This doesn’t seem to work for me in WP 4.
Did anyone else try it?
Thanks for sharing, this is great, I have it working like this: (in wp 4.3.1
Absolutely needed this today! We build a custom preview engine and needed to change these links globally!