WordPressのpuginについて教えてください。


社内向けの掲示用にWordPressのFeedWordpressというプラグインを使って
他のRSSを定期的に取り込んでいます。

そこで、題名に取り込み元の識別するための文字列を付けたいとtitleを加工しています。

例:日経新聞のRSSだと題名の接頭辞に[日経]とつける。

これをするのに、feedwordpress_item.phpのget_title を加工して付けるようにしてみました。

これで手動でRSSを取り込む時は問題無く動作しましたが

cronを使って、http://www.hogehoge.com?update_feedwordpress=1を実行させると
取り込まれずRSSから取り込んだままの題名が表示されます。

cronから取り込んだ場合のget_titleはどこで行なっているのでしょうか。



(xmlをパースしたときにwordpressにpostされない値で判定をしたいので、post_insert(update)する前にtitleを加工したいのです。)

もう5日もにらめっこしてて少々つかれてしまいました。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2013/08/23 20:30:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:holoholobird No.1

回答回数574ベストアンサー獲得回数104

ポイント100pt

正常ではちゃんと動くのにcronを通すと動かなくなるのですよね。
cronとphpのトラブルで一番多い原因の一つに、カレントディレクトリへの移動ができていないことが挙げられます。
http://www.es-works.com/setup_cron.html
上記のURLを参考にして、cronの実行時に、まずカレントディレクトリに移動してからphpを実行するように書き換えてみてください。

id:pinkymonk

ありがとうございます。
ただ、cronの実行はURLであること。また、実行できているがtitleの取得がおかしいので
ご回答いただいたcron側の問題というよりは、wordpressの仕組み側の問題と思っています。

2013/08/17 08:04:55
id:fowling-piece No.2

回答回数37ベストアンサー獲得回数8

ポイント100pt

cron とおっしゃってるのは、いわゆる unix の crontab で登録・参照する cron のことでしょうか?
URL を実行というのがよく分かりません。
curl や wget コマンドを使っているのだと想定します。

ブラウザでURLを打ち込む場合と、curl コマンドを実行する場合の違いで思いつくのは最後の/を補完するかどうかです。
以下のように?の前に/を補ったURLで試してみてはいかがでしょうか。

http://www.hogehoge.com/?update_feedwordpress=1


もうひとつ思いつくのはエージェントの違いです。
どのように構築されているかが分からないので想像になりますがエージェントを判定してリダイレクトしたりするような設定になっていないでしょうか?

id:pinkymonk

ありがとうございます。おそらくエージェントの違いです。
 ここがどう違うか有識者に教えて頂ければと思っておりましたが、再度設計を再検討した結果違う方法で取得することで実現できました。ご確認頂きありがとうございます。

どうもエージェントの違いでwordpressのtitleにHTMLタグを無視するような動きをしているようです。(憶測ですが。。)

2013/08/19 17:16:48
id:fowling-piece

直接お力にはなれなかったようですが、問題が解決して良かったですね。

2013/08/19 22:23:18
id:dawakaki No.3

回答回数797ベストアンサー獲得回数122

ポイント100pt

cronでPHPスクリプトを実行するのに、CGIモードで実行していませんか。
文字列を置換するための関数が、CGIモードでは禁止されているかもしれません。
確認してみて下さい。
たとえば、文字列を置換するだけのPHPスクリプトを作って、cronで実行してみてください。

また、feedwordpress_item.phpの改造箇所にデバッグポイントを仕掛けてみて下さい。
たとえば、get_titleで取得した直後のタイトルをテキストファイルに書き出し、置換後のタイトルを別のテキストファイルに書き出すようにしてみて下さい。手動でURLを呼び出すときと、cronで実行しているときのテキストファイルの結果が違うようだったら、CGIモードで正常に動かない関数を利用している可能性大です。

  • id:Lhankor_Mhy
     補足お願いします。
     
    「手動でRSSを取り込む」というのは、その http://www.hogehoge.com?update_feedwordpress=1 にブラウザからアクセスする、という意味でしょうか。
     それとも、プラグインのシンジケーションページでフィードを確認した、ということでしょうか。
     
     
     
     WordPressは全く分からないのですが、プラグインをダウンロードしてみましたところ、feedwordpie_item.class.php に get_title が定義されていました。feedwordpress_item.php というファイルは含まれていなかったようなのですが、これはインストール後に生成されるのでしょうか。
     get_title 関数を見ると、フック名 feedwordpie_item_get_title のフィルタが適用されているだけの関数で、フィルタ用の関数はおそらく定義されていないようでした。これはカスタマイズ用にフックを用意してあるように見えます。
     
     的外れでしたらすみません。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません