这给了偏头痛。我刚刚在本地完成了我的网站,并将其移至我的服务器。现在我已经在本地设置了启用SVG插件的主题,它就像一个魅力。在我的外部服务器上它没有(www.mantasmilka.com>单个帖子就是我正在处理的那个。
<?php
// check if the repeater field has rows of data
if( have_rows('info_tools') ):
?>
<div class="icon-holder">
<?php
// loop through the rows of data
while ( have_rows('info_tools') ) : the_row();
// vars
$tool_image = get_sub_field('image');
$tool_name = get_sub_field('name');
?>
<a href="#" class="<?php echo $tool_name ?>">
<svg viewbox="0 0 50 50">
<?php echo $tool_image;
echo file_get_contents($tool_image); ?>
</svg>
<img src="http://www.mantasmilka.com/wp-content/uploads/2016/05/photoshop.svg" alt="" />
<?php get_template_part(images/inline, 'http://www.mantasmilka.com/wp-content/uploads/2016/05/photoshop.svg.php'); ?>
</a>
<?php endwhile; ?>
</div>
<?php endif; ?>
我尝试了很多解决方案,似乎没有任何工作......有没有人知道我在这里缺少什么?
答案 0 :(得分:0)
不能真正回答您的确切问题,但这是 Google 搜索“svg 在本地工作但不在服务器上工作”中弹出的少数问题之一。希望对未来的研究人员有所帮助。
就我而言,原因很容易理解和解决。
在本地我直接处理一个文件,但在远程文件中包含了该文件。所以在本地,我在“root”中有 file.php
和 image.svg
,我用
<img alt="..." title="..." src="image.svg">
效果很好。
当在服务器上时,文件结构类似于
[root]
+-[includes]
| +-[MY_INCLUDE_FOLDER]
| +-image.svg
| +-file.php
+-index.php
在 index.php
的某个地方有这条线
include_once __DIR__ . '/includes/MY_INCLUDE_FOLDER/file.php';
现在,由于这不仅仅是对带有 PHP 输出的 PHP 脚本的简单调用,而是带有 HTML 的整个网页,因此它还有一行 <base href="https://example.com/">
。
这意味着 <img>
源实际上是 https://example.com/image.svg
而不是 https://example.com/includes/MY_INCLUDE_FOLDER/image.svg
。