我刚刚为客户完成了我的第一个Wordpress网站,并通过FTP传输将文件发送到他们的服务器。我刚收到以下评论 -
“ ...有些东西似乎没有正确显示,或正确链接......看起来好像他们使用绝对链接而不是相对链接,所以某些事情没有正确地通过... “
我甚至没有意识到这将是一个问题因为我认为所有的链接都需要改变。是否有一个代码函数可以放在functions.php
文件中来修改它?我已经看到有wp_make_link_relative
和以下过滤器 -
add_filter( 'post_link', 'wp_make_link_relative' ); // Normal post link
add_filter( 'post_type_link', 'wp_make_link_relative' ); // Custom post type link
add_filter( 'page_link', 'wp_make_link_relative' ); // Page link
add_filter( 'attachment_link', 'wp_make_link_relative' ); // Attachment link
add_filter( 'get_shortlink', 'wp_make_link_relative' ); // Shortlink
我应该将这些应用到我的functions.php文件中吗?这会解决所有问题,还是我需要应用其他任何东西,比如插件?
答案 0 :(得分:1)
要获得图像/图标的相对链接,JS和CSS资源会执行以下操作。
我想你的资产就像这样,
- theme-name
- - assets
- - - images
- - - css
- - - js
因此,要访问scripts.js
目录中名为js
的文件,请使用以下代码链接到该文件
get_stylesheet_directory_uri() . '/assets/js/scripts.js'
它将返回以下网址
http://example.com/wp-content/themes/theme-name/assets/js/scripts.js
答案 1 :(得分:1)
有几个地方可以定义 URL。以上几行应该适用于其中的大多数,但不适用于媒体或任何自定义 API 工作。此外,像 Yoast 这样的 WordPress SEO 插件会创建绝对 URL,如果您在数据库中对其进行编辑,这会对您的 SEO 产生负面影响。
如果他们说“事情似乎没有正确显示......”他们可能是指资产。为此,请转到
<块引用>设置 > 媒体 > 文件的完整 URL 路径并将其更改为 /wp-content/uploads。
对于JS文件中的绝对URL,在functions.php中创建一个这样的函数:
function create_root_url() {
wp_localize_script( '<your-main-js-bundle>', 'any-variable-name', array(
'root_url' => get_site_url()
));
}
add_action( 'wp_enqueue_scripts', 'create_root_url' );
然后在您的 JS 文件中,将您的硬编码 url 更改为:
const endpoint = `${any-variable-name.root_url}/wp-json/api...`;
或者无论您的目的是什么。
答案 2 :(得分:0)