【问题标题】:Trouble getting PHP file_exists to work无法让 PHP file_exists 正常工作
【发布时间】:2012-05-11 05:03:38
【问题描述】:

如果 PDF 存在,我正在尝试获取链接到同名 PDF 的缩略图,但如果 PDF 不存在,则不链接到任何内容。这是我的代码:

<?php 
if ( function_exists('has_post_thumbnail') && has_post_thumbnail() ) {
$full_image_url = wp_get_attachment_image_src( get_post_thumbnail_id(), 'full') ;
$pdf = substr_replace($full_image_url , 'pdf', strrpos($full_image_url[0] , '.') +1);

$filename = $pdf[0];
if (file_exists($filename)) {
echo '<a href="' . $pdf[0] . '" title="' . the_title_attribute('echo=0') . '" . target="_blank" >';
the_post_thumbnail('Full Size');
echo '</a>';
  }
else {
echo "The file $filename exists";
  }
 }
?>

目前,else 语句只是为了证明它是否找到了文件。似乎是这样,因为它显示The file http://localhost/AWAD/wp-content/uploads/2012/03/+D.pdf exists。如果我去掉条件,帖子缩略图会显示一个指向 PDF 的链接。我只是无法获得工作的条件。

谁能发现它为什么不工作?

【问题讨论】:

  • $pdf[0]的内容是什么?相对于 PHP 脚本的位置,PDF 的位置是什么?

标签: php wordpress file-exists


【解决方案1】:

您应该将您的 FS 上的路径传递给 file_exists,您现在正在传递一个 URL

【讨论】:

  • 另外,根据环境,一旦代码被更正以接收文件系统路径,请注意 PHP 安全模式可能会对文档中的结果产生负面影响。 php.net/manual/en/function.file-exists.php
  • 谢谢。我只是需要再详细说明一下。
【解决方案2】:

我很确定 file_exists 需要完整的文件路径,而不是 URL。因此,您可能希望使用 WordPress wp_uploads_dir 函数来获取上传目录的基本路径,然后将路径的其余部分附加到该路径的末尾,然后将该字符串传递给 file_exists。希望这是有道理的。

【讨论】:

  • 好的,所以我尝试了$uploads = wp_upload_dir(); $filename = ($uploads['path'] . '/' . basename($pdf[0])); else 语句现在输出文件路径“文件/Applications/MAMP/htdocs/AWAD/wp-content/uploads/2012/05/+D.pdf存在”。问题是,它在 03 文件夹中。如何获取原始缩略图的文件夹?
  • 好吧,这行得通(虽然它看起来有点复杂,所以如果有人有更好的方法,我很想听听):$filename = ($uploads['basedir'] . '/' . basename(dirname(dirname($pdf[0]))) . '/' . basename(dirname($pdf[0])) . '/' . basename($pdf[0]));
  • 看起来确实有点笨拙。经过一番研究,看起来您可能想要“get_attached_file”函数。它可能会更干净,但我之前没有使用过它,所以我不能肯定地说。见法典:codex.wordpress.org/Function_Reference/get_attached_file
猜你喜欢
  • 1970-01-01
  • 2016-02-26
  • 2013-02-17
  • 2017-02-18
  • 2012-09-05
  • 2017-11-06
  • 2011-09-06
  • 1970-01-01
  • 2023-03-10
相关资源
最近更新 更多