XPressME Integration Kit

フォーラム

Re: 投稿日付による記事表示について

#2948
toemon
キーマスター

行ってきたデバッグの内容を整理してみます。

  • 作成したテーマが悪いのかを確認するためにテーマをwordpress defaultのものに変更していただきました。

    テーマの問題ではないことがわかりました。

  • どのようなクエリが実施され、どのようなSQL文が生成されているのか確認するために、$query_stringと$requestを表示するテーマを作成し実行してみました。

    その結果 $query_stringに ’offset=1’や’paged=2&offset=1’などが設定されており’offset=1’が原因であることがわかりました。

  • どの時点で’offset=1’が設定されるのか確認するために、wp-includes/query.phpにデバッグログを取得するためのコードを追加してログを確認しました。

    結果 クエリの初期段階で既に’offset=1’が設定されていることがわかりました。

  • ‘offset=1’がプラグインや、WordPressやXPressMEの設定、ブロックなどの設定により発生したものかを明らかにするために新しくXPressMEをインストールしていただきました。

    結果は、同様の現象が発生し、プラグインや、WordPressやXPressMEの設定、ブロックなどの設定によるものでないということがわかりました。

  • WordPress単体でも発生するのか確認するため、wp-config.phpを修正して確認してみました。

    結果として ’offset=1’は設定されておらず正常な動作が行われており、WordPressおよびxpressmeプラグインによるものでないことが判明しました。

  • wp()を呼び出しているinclude/add_xpress_process.phpの
    <br />
    if (is_xpress_index_page_call()){<br />
    //When notifying by a private message, Notification_reserve_send();<br />
    //it is evaded that the data base becomes read-only as a result of the check on the referrer and the method.<br />
    $_SERVER = 'POST';<br />
    <br />
    require_once $xoops_config->xoops_mainfile_path; //It is necessary to execute it for the user attestation before wp-settings.php.<br />
    require_once(ABSPATH.'wp-settings.php');<br />
    if (!is_object($xoopsUser)){	// before login auth cookie clear<br />
    wp_logout();<br />
    }<br />
    wp();<br />
    

    の $_SERVER = ‘POST’; をコメントアウトして確認しましたが、’offset=1’は消えません

    require_once $xoops_config->xoops_mainfile_path;(XOOPSシステムロード) をwp();コールの後に移動してみると、’offset=1’は消え正常に動作しました。( これをやるとXOOPSユーザ情報ができなくなり、WordPressのログインが必要になる)

    結果として、require_once $xoops_config->xoops_mainfile_path;(XOOPSシステムロード) を行うことにより、wp();コール時に’offset=1’が付与されるということが判明しました。

  • require_once $xoops_config->xoops_mainfile_path;(XOOPSシステムロード)後にどのような変数が設定されているか確認するためにget_defined_varsを使ってログファイルに結果をファイルすることを試みました。

    サーバーがエラーを吐きログが取れず、これ以上の追跡は断念しました。

  • XOOPS側で何が発生しても、wp();コール時に強制的にoffset=0とするために、試しにwp(‘offset=0’);に書き換えてみました。

    結果として、正常動作が行われるようになりました。

つまりXPressMEのデータベースがどうのこうの、設定値がどうのこうのという話ではなく、なぜかしらwp();をコールする際に ‘offset=1’という値が、何らかの変数にまぎれて、XOOPS側から送られてきているらしいということです。

尚、以前、カテゴリーアイコンの問合せを行った際にメールいたしました、サーバーはそのまま開いていますので、その際にお送りしたアカウントを使用して、ご使用のモジュール、テーマ、プリロード、スクリプトなどを再現し、同様の不具合が確認できれば、こちらで確認することもできます。