0

私はこれにしばらく苦労してきました。

jQueryサイクルプラグインを使用して実行されている画像ギャラリーがあり、ファイルはPHP glob()を使用してフォルダーから取得されます。問題は、別のページに移動すると、ファイルパスの先頭に新しいページのURLが追加されているために、ギャラリーが壊れることです。

例:

フロントページのURL:http://localhost/project/image-display-images/image.jpg

その他のページのURL:http://localhost/**NEWPAGE**/project/image-display-images/image.jpg

これが私のコードです:

$files = glob('image-display-images/*.*');

       for ($i=1; $i<count($files); $i++)

       {
          $num = $files[$i];
          echo '<img src="'.$num.'"'.' alt="Campus Images" width="362" height="246"/>';
       }

これにより、jQueryサイクルでスクロールする画像のリストが生成されます。ただし、フロントページでのみ機能します。

何か案は?

解決しました!

これが私の新しいコードです:

$files = glob(ABSPATH.'/image-display-images/*.*');

foreach ($files as $f) {
    echo '<image src="'.home_url(str_replace(ABSPATH,'',$f)).'"alt="Campus Images" width="362" height="246"/>';

}

これはすべてのページで機能します。

ありがとうございました!

4

2 に答える 2

1

絶対パスを使用します。

$files = glob(ABSPATH.'image-display-images/*.*');

WordPress コアはABSPATH定数を設定するので、かなり信頼できるはずです。

globはファイル システム パスを処理しますが、URL を読み込もうとしています。意図したとおりにファイルを表示するには、結果を URL に変換する必要があります。これは必要最小限の例です。

$files = glob(ABSPATH."*.*");
foreach ($files as $f) {
  echo home_url(str_replace(ABSPATH,'',$f));
}

glob一部のシステムでは使用できないという警告が表示されることに依存するのではなく、ファイル名を取得する独自の関数を作成する方がよい場合があります。参照: http://codex.wordpress.org/Filesystem_API

于 2013-02-22T15:50:35.723 に答える
0

'image-display-images/*.*' たとえばではなく、ギャラリーのフルパスを定義しますglob('/var/etc/www/image-display-images/*.*')

于 2013-02-22T15:49:38.720 に答える