2

何度も何度も何度も答えられている単純な質問だと思うので、ここに投稿することを控えてきました. 人々が同じことを尋ねた数え切れないほどの投稿を読んだので、これを知っていますが、何らかの理由で同じ結果を得ることができません.

必要なものはかなり単純です。WordPress ページのテンプレート ファイルで、現在のページと親ページに関連するディレクトリからすべての画像を表示する必要があります。

まず最初に、私はこのコードを WordPress の外部で動作させることができるので、テンプレート ファイル内でコンテンツが配信される方法に問題があると思われることを指摘させてください。

これは私が持っているコードです:

<?php
$page_parent = get_the_title($post->post_parent);
$current_page = get_the_title($post);
$upload_dir = wp_upload_dir();                  

$dir = $upload_dir['baseurl'].'/assets/'.$page_parent.'/'.$current_page.'/';

$files = glob($dir.'{*.jpg,*.png}', GLOB_BRACE);
foreach ($files as $image){
    echo '<img src="'.$dir.$image.'" alt="'.$image.'" />';
};

var_dump($files); // This displays array(0) { }
var_dump($image); // This display NULL              
echo $dir; // This works to display the correct URL.
?>

上記のコードは画像を表示していません。<img>タグを取り除いて単純なものを試してecho $image;も、ファイル名さえ表示されません。ただし、echo $dir;動作し、への直接パスである正しい URL を表示します。http://localhost:8888/wordpress/wp-content/uploads/assets/Photography/Holga/

var_dump($files)が得るすべてarray(0) { }を行うと、WordPressの外にあるすべてを行うと、データが表示されますvar_dump($image)NULL

ページ名のタイトルが大文字になっている可能性があることは承知しているため、フォルダー構造の一貫性を保っていますが、前述のように、WordPress の外でこの作業を行うことができて、私は死んでいます!

これがWordPressページテンプレート内で機能しない可能性がある理由や提案はありますか?

前もって感謝します!

4

1 に答える 1

1

から返される配列では、 and notwp_upload_dir()を使用します。これにより、URL ではなく、アップロード フォルダーへのパスが返されます。$upload_dir['basedir']$upload_dir['baseurl']

に有効なパスを渡していないため、結果が得られませんglob()。ドキュメントのメモから:

注: この関数はリモート ファイルでは機能しません。調査対象のファイルは、サーバーのファイル システム経由でアクセスできる必要があるためです。

于 2013-05-05T20:53:32.867 に答える