2012-05-11 7 views
0

PDFが存在する場合は同じ名前のPDFにリンクするサムネイルを取得しようとしていますが、PDFが存在しない場合はリンクしません。私が持っているコードは次のとおりです:PHPが動作するのに問題がある場合

<?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へのリンクが表示されます。条件付きで作業することはできません。

誰もがなぜ機能しないのかを知ることができますか?

+1

'$ pdf [0]'の内容は何ですか?そして、あなたのPHPスクリプトの場所に関連してPDFの場所は何ですか? – Mischa

答えて

1

私はfile_existsは、完全なファイルパスではなくURLを望んでいるかなり確信しているあなたはURLを渡している、file_existsにあなたのFSにパスを渡す必要があります。 WordPress wp_uploads_dir関数を使用して、アップロードディレクトリのベースパスを取得し、残りのパスをその末尾に追加し、その文字列をfile_existsに渡すことをお勧めします。うまくいけばそれは理にかなっている。

+0

さて、私は '$ uploads = wp_upload_dir();を試しました。$ filename =($ uploads ['path']。 '/'。basename($ pdf [0]); 'else文はファイルパスを出力するようになりました"ファイル/ Applications/MAMP/htdocs/AWAD/wp- content/uploads/2012/05/+ D.pdfが存在します。問題は03フォルダにあるということです。元のサムネイルのフォルダを取得するにはどうすればよいですか? – sharcupine

+0

申し訳ありませんが、これはうまくいきました。(もっと複雑に思えるかもしれませんが、誰かがもっと良い方法を持っていれば、私はそれを聞いてみたいです) '$ filename =($ uploads ['basedir']。 '/'。basename($ pdf [0])); ' – sharcupine

+0

(/)'/basename(dirname(dirname($ pdf [0]))それは少し扱いに​​くいように見えます。少しの研究の後、あなたは代わりに 'get_attached_file'関数が必要なように見えます。それはおそらくもっときれいになるでしょうが、私は自分の前でそれを使用していないので、私は確かに言えません。コーデックスを参照してください:http://codex.wordpress.org/Function_Reference/get_attached_file –

4

あなたは今

+0

また、コードがファイルシステムパスを受け取るように修正された環境によっては、PHPセーフモードがドキュメントごとに結果に悪影響を与える可能性があることに注意してください。 http://php.net/manual/en/function.file-exists.php – Eli

+0

ありがとうございます。私はちょうどもう少し綴りが必要でした。 – sharcupine

関連する問題