如何从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 的存档页面上显示所有类别的帖子?

如何在 Gatsby 中获取所有 Wordpress 帖子和显示标签

WordPress中的自定义博客存档页面

如何在引号中获取wordpress帖子作者电子邮件

如何从 wordpress 中的帖子页面 id 获取 acf 的画廊图片 url