コンテキスト:特定のセクションで使用されているサイトの画像の場合、各投稿はメタデータに追加されたベース名に依存します。メタデータは自動拡張機能で大きな画像、ギャラリーサムネイル画像、インデックスページサムネイルも生成します。
たとえば、Example_Nameがベース名の場合は、次のようになります。Example_Name_2-LG.jpg
はシリーズの2番目の大きな画像ですExample_Name_2_SM.jpg
は、対応する2番目のギャラリーのサムネイル画像ですExample_Name_IN.jpg
はセットを表すために選ばれたインデックスサムネイルです
メタデータとPHP条件文を使用することで、クライアントはベース名を1回入力して適切な名前の画像をUploadsフォルダにアップロードするだけで、ページテンプレートに空白が入ります。
これはすべてうまくいっています、1つのキャッチで。サムネイル用のスロットが7つあり、Uploadsフォルダにあるサムネイル画像が7つ未満であっても、ページにはサムネイルdivの all が表示されます。
指定された画像が指定されたファイルパスに存在しない場合、対応する空のdiv()が存在するように、それぞれのサムネイルdivをfile_exists
を使用してUploadsフォルダに実際にサムネイル画像が存在するかチェックそのハイパーリンクは表示されません。
私はwp_uploads_dir
関数、bloginfo('template_directory')
そして廃止予定のTEMPLATEPATH
を使って絶対パスを構築しようと試みましたが、PHPエラーを生成することに成功しただけです。これはパスの問題、またはPHP関数file_exists
について理解できない具体的な問題であると考えています。
Wp_upload_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 } ?>
任意の提案は大歓迎です。
file_exists()
に ファイルurl を使用することはできません。
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'];
この行では...
if ( file_exists( echo $upload_dir['baseurl'] . '/' . echo get_post_meta($post->ID, '_meta_example_name', true) . '_7_SM.jpg')` )
...あなたはそれらすべてのecho
を欲しくはありません。あなたは何もecho
しようとしていません。あなたはecho
sを文字列連結で散在させることさえしました。それらをすべて残してください。
if (
file_exists( $upload_dir['baseurl'].'/'.get_post_meta($post->ID,'_meta_example_name',true).'_7_SM.jpg')
)
私はたぶん先にポストメタをチェックし、メタキーが空の場合は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
}
__DIR__
を使うべきです。 functions.php
ファイル内をチェックしているとしたら、次のようになります。
if(file_exists(__DIR__ . '/../../uploads/Example_Name_2_SM.jpg')){
// Do something ...
}