如何在WordPress页面内容的href属性中添加自动适配域名的PHP代码
解决WordPress页面动态路径(域名+页面名)的问题
嘿,作为PHP新手遇到这种迁移后路径失效的问题太正常啦!我来帮你用WordPress原生的方法搞定,不用自己写复杂的PHP,还能保证迁移后自动适配新域名~
首先要明确:WordPress的页面/文章内容里默认是不直接执行PHP代码的,所以我们得用WordPress提供的「短代码(Shortcode)」或者模板标签来实现动态路径,同时避免硬编码localhost这种固定域名。
一、先解决你的图片路径问题
你现在的图片src是硬编码的http://localhost/doctors/wp-content/uploads/2018/04/dn...,迁移后肯定失效。推荐用WordPress的附件函数来动态生成图片URL:
方法:用短代码输出动态图片
- 打开你当前主题的
functions.php文件(建议用子主题,避免主题更新丢失代码),添加以下代码:
// 注册动态图片短代码 function dynamic_doctor_image() { // 替换成你图片的附件ID(就是wp-image-165里的165) $image_data = wp_get_attachment_image_src(165, 'full'); if ($image_data) { // 输出带动态路径的img标签 return '<img class="size-full img-responsive img-circle wp-image-165 aligncenter" src="' . esc_url($image_data[0]) . '" alt="医生头像">'; } return ''; } add_shortcode('dynamic_doctor_img', 'dynamic_doctor_image');
- 回到WordPress页面编辑器,把原来的img代码删掉,直接插入短代码:
[dynamic_doctor_img]
这样不管你迁移到哪个域名,图片都会自动使用当前站点的域名生成正确路径~
二、解决href的动态页面链接问题
要让链接自动获取域名+页面名,核心是用WordPress的get_permalink()函数,它能根据页面ID自动生成完整的永久链接。同样用短代码来实现:
方法:用短代码输出动态页面链接
- 还是在
functions.php里添加以下代码:
// 注册动态页面链接短代码 function dynamic_page_link($atts) { // 设置短代码的默认参数 $params = shortcode_atts(array( 'page_id' => '', // 必填:要链接的页面ID 'link_text' => '点击访问' // 可选:链接显示的文本 ), $atts); // 如果没传页面ID,返回空 if (empty($params['page_id'])) { return ''; } // 获取页面的永久链接 $page_url = get_permalink($params['page_id']); if ($page_url) { return '<a href="' . esc_url($page_url) . '">' . esc_html($params['link_text']) . '</a>'; } return ''; } add_shortcode('dynamic_link', 'dynamic_page_link');
- 在页面内容里这样调用:
[dynamic_link page_id="123" link_text="查看医生详情"]- 把
123替换成你要链接的页面ID link_text可以改成你想要的链接文字
- 把
这样迁移后,链接会自动变成新域名下的对应页面地址,完全不用手动修改!
三、额外小提示
- 怎么找页面/图片的ID?
- 页面ID:编辑页面时,地址栏里的
post=xxx里的xxx就是页面ID - 图片ID:在媒体库编辑图片时,地址栏里的
attachment_id=xxx就是图片ID
- 页面ID:编辑页面时,地址栏里的
- 尽量不要用第三方插件来插入PHP代码,原生短代码更安全且稳定
- 修改
functions.php前最好备份一下,避免出错导致站点崩溃
内容的提问来源于stack exchange,提问作者Tahridabbas
相关产品推荐
相关产品推荐

