使用FILE_EXISTS在上载中检查文件

时间:2013-06-01 作者:boomturn

上下文:对于特定部分中使用的站点图像,每篇文章都依赖于放入元数据中的基本名称,然后将其与自动扩展一起使用,以生成大型图像、库缩略图以及索引页缩略图。

例如,如果example\\u Name是基名称,则:
Example_Name_2-LG.jpg 是系列中的第二个大图像
Example_Name_2_SM.jpg 是对应的第二个库缩略图图像
Example_Name_IN.jpg 是否选择索引缩略图来表示集合

通过使用元数据和PHP条件,客户端只需输入一次基名称,然后将适当命名的图像上载到Uploads文件夹,页面模板将填补空白。

所有这些都很好,但有一个问题。缩略图有七个插槽,页面显示所有缩略图div,即使上载文件夹中的缩略图图像少于七个。

我想用一个使用file_exists 检查Uploads文件夹中是否存在缩略图,以便如果指定的文件路径中不存在命名图像,则不会显示相应的空div(及其超链接)。

我试着用wp_uploads_dir 功能,以及bloginfo(\'template_directory\') 甚至不推荐的TEMPLATEPATH, 但只成功地生成了PHP错误。我假设这是一个路径问题,或者是一些我不了解PHP函数的特殊情况file_exists.

使用wp\\u upload\\u dir的页面放大示例:

<?php 
    $upload_dir = wp_upload_dir(); 
    if ( file_exists( echo $upload_dir[\'baseurl\'] . \'/\' . echo get_post_meta($post->ID, \'_meta_example_name\', true) . \'_7_SM.jpg\') ) {
?>
    <div id="thumb7" class="thumb">  <!-- Should appear only when Example_Name_7_SM.jpg exists -->
        ...
    </div>

<?php } ?>
感谢您的任何建议。

4 个回复
SO网友:birgire

您不能在中使用文件urlfile_exists() 像这样:

file_exists( "http://example.com/wp-content/uploads/Example_Name_2_SM.jpg" );
您应该使用绝对文件路径,例如:

file_exists( "/absolute/path/to/wp-content/uploads/Example_Name_2_SM.jpg" );
那你应该试试

$meta = get_post_meta( $post->ID, \'_meta_example_name\', true );
$file = $upload_basedir . \'/\' . $meta . \'_7_SM.jpg\';
if ( file_exists( $file ) ) {
   //...
}
在哪里

$upload_basedir = WP_CONTENT_DIR . \'/uploads\';

$upload_dir = wp_upload_dir();
$upload_basedir = $upload_dir[\'basedir\'];

SO网友:s_ha_dum

在这行中。。。

if ( file_exists( echo $upload_dir[\'baseurl\'] . \'/\' . echo get_post_meta($post->ID, \'_meta_example_name\', true) . \'_7_SM.jpg\')` )
。。。你不会想要这些的echos、 你不是想echo 任何东西你甚至有echos中穿插着字符串串联。把这些都去掉。

if ( 
  file_exists( $upload_dir[\'baseurl\'].\'/\'.get_post_meta($post->ID,\'_meta_example_name\',true).\'_7_SM.jpg\') 
)
不过,我可能会更早地检查post meta,并跳过调用file_exists 如果元密钥为空。

$upload_dir = wp_upload_dir();
$meta_name = get_post_meta($post->ID,\'_meta_example_name\',true);
if (
  !empty($meta_name)
  && file_exists( $upload_dir[\'baseurl\'].\'/\'.$meta_name.\'_7_SM.jpg\') 
) {
  // your markup
}

SO网友:Max

您应该使用__DIR__. 假设你在检查functions.php 文件,它将是:

if(file_exists(__DIR__ . \'/../../uploads/Example_Name_2_SM.jpg\')){
    // Do something ...
}

SO网友:Khaled Developer

如果你需要主题,你可以使用我的功能

function file_checker($file){
    //http://localhost/wordpress/wp-content/themes/THEMEName
    $location = get_template_directory_uri();// you can edit this <=
    $location = str_replace("http://","",$location);
    $location = str_replace("https://","",$location);
    $location = str_replace($_SERVER[\'HTTP_HOST\'],"",$location);
    $location = $_SERVER[\'DOCUMENT_ROOT\'].$location;
    $filename = $location.$file;
    
    if (file_exists($filename)) {
        return true;
    } else {
        return false;
    }
}
使用

if(file_checker("/style.css")){
    echo "file Has";
}else{
    echo " Error Location , Check Your Code";
}

结束

相关推荐

making php value numeric

我在堆栈溢出上使用了此页面中的一些代码:Using wp_query is it possible to orderby taxonomy?这是一个能够根据分类法值对查询进行排序的函数。虽然它工作得很好,但我想更进一步。我从分类术语中检索到的值是一个数字。但是,如果我按这个数字排序,它会给出以下顺序:1 10 11 2 21 22,依此类推。我希望它能“正常”排序,1 2 3 5 9 11 15 21 22等等。根据谷歌的说法,我应该在值中加0,使其成为一个数值,但我不知道在这段代码中应该放在哪里。在某个