###前提・実現したいこと
WordPressの投稿部分に、csvファイルから特定の条件(カテゴリ)を満たした行だけピックアップして、HTMLタグを出力させたい。
カテゴリ別で、同じ投稿画面に複数回同じ仕組みを使用する予定。
イメージ
処理1「CSVファイルの読み込み」
WordPress投稿画面上で入力したHTML
処理2「CSV内から、カテゴリAの情報でHTML出力」
WordPress投稿画面上で入力したHTML
処理3「CSV内から、カテゴリBの情報でHTML出力」
・・・続く
現在選択している方法としては、function.phpにショートコードを追加して、CSVファイルの読み込みと、foreachで処理を検討。
###発生している問題・エラーメッセージ
同じサーバー上で、同じphpを動かす場合は、きちんと動作するのに
Wordpressのfunction.phpに仕込むと、動作しない。
var_dumpを見ると、foreachの時点で1行目しか読み込んでくれていない様子。
foreachにこだわっているわけではなく、プラグイン追加以外で、代替案があればそちらも検討する予定で、最終手段はPC側でバッチ処理してHTMLを投稿画面に貼ります。
###該当のソースコード
<?php function hoge_csvinport() { global $file; $hoge_info = "sampledir"; $hoge_list = "$hoge_info/sample_list.csv"; $file = new SplFileObject($hoge_list); $file->setFlags(SplFileObject::READ_CSV); } add_shortcode('hoge_csv', 'hoge_csvinport'); function hoge_images() {//後々、ここに引数を入れてカテゴリ特定処理をするifで使いたい) global $file, $HOGE1, $HOGE2, $HOGE3, $HOGE4, $PHOGE5, $HOGE6, $HOGE7, $HOGE8; foreach($file as $key=>$line){ var_dump($file); //CSVが読み込まれている(結果を後半に貼ります) var_dump($line); //1行目だけが読み込まれている var_dump($key); // 0だけ入っている $HOGE1 = $line[0]; $HOGE2 = $line[1]; $HOGE3 = $line[2]; $HOGE4 = $line[3]; $HOGE5 = number_format($line[4]); $HOGE6 = $line[5]; $HOGE7 = $line[6]; $HOGE8 = $line[7]; var_dump($HOGE1); //1つしか値が入っていない var_dump($HOGE2); //1つしか値が入っていない return $HOGE1 . $HOGE2 . $HOGE3; //これはWordPress上に表示されます。本来はこの後ifで他の行も表示したいです。 } unset($line); } add_shortcode('hoge_img', 'hoge_images'); ?>
###試したこと
単純にサーバー上に置いた場合とWordPressに仕込んだ場合のvar_dumpの比較。
var_dump($file);の結果
object(SplFileObject)[6366]
private 'pathName' (SplFileInfo) => string 'sampledir/sample_list.csv' (length=23)
private 'fileName' (SplFileInfo) => string 'sample_list.csv' (length=15)
private 'openMode' => string 'r' (length=1)
private 'delimiter' => string ',' (length=1)
private 'enclosure' => string '"' (length=1)
変数の指定方法がまずいのかもしれないと、いろいろ試しましたが
原因が特定できませんでした。
PHPは過去独学で数年ぶりに触っているので、常識/お作法等に不備がありましたらすみません。
お手数ですがご指摘頂けますと幸いです。
###補足情報(言語/FW/ツール等のバージョンなど)
以下、開発環境です。(対象のWordPress環境に近いものを作成)
CentOS 6(2.6.32-642.13.1.el6.x86_64)
WordPress 4.5.6
PHP 5.6.30
rpm -qa |grep php
php-devel-5.6.30-1.el6.remi.x86_64
php-opcache-5.6.30-1.el6.remi.x86_64
php-pecl-zip-1.13.5-1.el6.remi.5.6.x86_64
php-mysqlnd-5.6.30-1.el6.remi.x86_64
php-cli-5.6.30-1.el6.remi.x86_64
php-pdo-5.6.30-1.el6.remi.x86_64
php-5.6.30-1.el6.remi.x86_64
php-fpm-5.6.30-1.el6.remi.x86_64
php-pecl-jsonc-1.3.10-2.el6.remi.5.6.x86_64
php-pecl-jsonc-devel-1.3.10-2.el6.remi.5.6.x86_64
php-xml-5.6.30-1.el6.remi.x86_64
php-gd-5.6.30-1.el6.remi.x86_64
php-mbstring-5.6.30-1.el6.remi.x86_64
php-common-5.6.30-1.el6.remi.x86_64
php-pear-1.10.1-10.el6.remi.noarch
php-process-5.6.30-1.el6.remi.x86_64
php-mcrypt-5.6.30-1.el6.remi.x86_64
回答2件
あなたの回答
tips
プレビュー