如何从Wordpress管理员替换帖子和页面的所有外部/预览
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从Wordpress管理员替换帖子和页面的所有外部/预览相关的知识,希望对你有一定的参考价值。
我使用Wordpress作为无头CMS并且仅使用API来提供内容。因此,我想链接到在其他地方托管的Vue.js框架的实际站点。
我在这里几乎取代了所有的链接,除了WP管理栏中的“查看页面”。当我查看它是如何获取链接的源代码时,它使用preview_post_link()
,我认为我已经替换了URL?
add_filter( 'preview_post_link', 'filter_preview_link');
add_filter( 'preview_page_link', 'filter_preview_link');
add_filter( 'get_sample_permalink', 'filter_preview_link');
add_filter( 'get_sample_permalink_html', 'filter_replace_base_url');
function filter_preview_link( $permalink ) {
$base_url = get_field('base_url', 'option');
if(is_array($permalink)){
$url_data = wp_parse_url($permalink[0]);
$permalink[0] = str_replace($url_data['scheme'] . '://' . $url_data['host'], untrailingslashit($base_url), $permalink[0]);
return $permalink;
} else {
$url_data = wp_parse_url($permalink);
$permalink = untrailingslashit($base_url) . $url_data['path'] . (isset($url_data['query']) ? '?' . $url_data['query'] : '');
return $permalink;
}
};
function filter_replace_base_url($html){
$base_url = get_field('base_url', 'option');
$html = str_replace(untrailingslashit(site_url()), untrailingslashit($base_url), $html);
return $html;
}
任何帮助是极大的赞赏。
答案
终于找到了丢失的代码......
add_action( 'admin_bar_menu', 'customize_wp_admin_bar_preview_links', 9999 );
function customize_wp_admin_bar_preview_links( $wp_admin_bar ){
$base_url = get_field('base_url', 'option');
$view_site = $wp_admin_bar->get_node('view-site');
$view_site->href = $base_url;
$view = $wp_admin_bar->get_node('view');
$url_data = wp_parse_url($view->href);
$view->href = untrailingslashit($base_url) . $url_data['path'] . (isset($url_data['query']) ? '?' . $url_data['query'] : '');
$wp_admin_bar->add_node($view_site);
$wp_admin_bar->add_node($view);
}
以上是关于如何从Wordpress管理员替换帖子和页面的所有外部/预览的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iframe 中的 wordpress 管理帖子页面中拥有可排序的 UI?
如何在 Wordpress 的存档页面上显示所有类别的帖子?