フォーラムへの返信

13件の返信を表示中 - 1 - 13件目 (全13件中)
  • フォーラム: プラグイン
    返信が含まれるトピック: MW WP Form で、フォームの更新が保存できない
    トピック投稿者 Phullapadma

    (@phullapadma)

    早速のご指摘、ありがとうございます。

    ログを見たところ、英文に and 〜 like などと解釈できる部分があり、SQLインジェクションとみなされて、保存できなくなっていました。
    WAFを活かしたまま、.htaccess に回避するコードを追記して、保存できるようになりました。

    どうもありがとうございました。

    「FTP接続情報」のようなものは、作成者様からもらっておられませんか?

    WordPress管理画面の「テーマの編集」などから編集できないフォルダ・ファイルについては、FTPで接続するか、或いはサーバのコントロールパネル内にツールがある場合はそれを使用するか、いずれにせよ、他の手段でアクセスすることになると思います。

    もしや、「サーバーの方の設定で、古いブログを置いていた領域に、新しいドメイン設定を上書きしてしまった」ということではありませんか?

    マルチドメインの使えるサーバーでも、例えば、

    htdocs/blog0/ ←ここに古いブログのファイルとドメイン
    htdocs/blog1/ ←ここに新しいブログのファイルとドメイン

    というふうに、ドメインの当たる先を切り分けて設定しなくてはなりません。

    そして、もしそういうことでしたら、それはWordPressの問題ではなく、Webサーバーの使い方一般の問題になります。

    トピック投稿者 Phullapadma

    (@phullapadma)

    [このスレッドを見に来た方のための追記]

    session を介すれば、functions.php内で先に取得した値を、表示終了後に呼ばれる関数に渡すことは可能です。褒められたやり方かは分かりませんが……。

    (1) session が開始していなければ開始させる処理
    (例)

    function mytheme_register_session() {
        if(!session_id()) {
            session_start();
        }
    }
    add_action('init', 'mytheme_register_session');

    (2) 必要な値を取得して $_SESSION に新設するプロパティに保存する処理
    (例)

    function get_the_archives_category() {
            if(is_category()) {
                $_SESSION['MYTHEME_CAT_ID'] = get_query_var('cat');
            }
    }
    add_action( 'the_post','get_the_archives_category');

    (3) 後から別のフックで呼び出された関数から値を取得する処理

    トピック投稿者 Phullapadma

    (@phullapadma)

    私自身の問題としてはまだ一切解決していませんが、当初の表題と相当離れた方向に焦点が移りつつあることと、テーマ開発会社側にこの問題を認識してもらえていることがようやく分かったため、解決済みにしてこのトピックを閉じます。
    gblsm様、ご対応ありがとうございました。

    トピック投稿者 Phullapadma

    (@phullapadma)

    となると、functions.php のアクションフックから footer.php内に関数を移して、footer.php内で直接、クエリを適切に生成できるのかどうか、も気になりますが……。

    トピック投稿者 Phullapadma

    (@phullapadma)

    編集中のテーマ構成で、admin-ajax.phpに追加HTMLを要求するコードや、それをHTMLに追加させるコードは、footer.phpにjQueryを使用して書かれています。これが動くタイミングで、functions.phpでフックされた関数が連動し、生成したクエリを渡す形です。
    ということで、footer.php内で、取得したカテゴリIDを差し込めるならそれでもいいのですが。

    ご紹介のページでは、アクションフックの位置で $cat = $_POST[‘val’]; が取れていることが前提になっていますので、参考にならないようです。

    トピック投稿者 Phullapadma

    (@phullapadma)

    再び行き違い済みません。

    ご紹介のページは今から検証させていただきます。

    トピック投稿者 Phullapadma

    (@phullapadma)

    行き違い済みません。

    アーカイブページを最初に表示するときはcatの値を取得できるはずですよね。

    その通りです。

    それをajax呼び出し側で引数に含めることができませんか。

    それができればとも思っているのですが、アクション名’wp_ajax_infinite_scroll’と’wp_ajax_nopriv_infinite_scroll’にフックされているクエリを生成する関数に受け渡す方法が分かりません。異なる呼び出し位置の関数に値を受け渡す方法にはどのようなものがありますでしょうか。

    トピック投稿者 Phullapadma

    (@phullapadma)

    クエリ定義関数内からJavaScriptを使ってURIを取得できないかもダメ元で試してみましたが、JavaScriptが実行されずに全体が文字列として扱われてしまって無理なようでした。
    ちなみにこのフックの中からでは、is_category()等も効きません。

    トピック投稿者 Phullapadma

    (@phullapadma)

    鍵になっていることの一つは、そのAjaxに渡すクエリを生成している関数がフックされているアクションだと思われます。テーマを初期化してからページが一通り表示されるまでの適切な段階のアクションフックでは取得できる各種の値が、そこのアクションフック内では取得できません。一度表示されたらそこで一連のPHPの動作がいったん止まるからでしょうか。get_query_var( ‘cat’ ) も、また $_SERVER[‘REQUEST_URI’] も取得できないようです。
    アクション名は、’wp_ajax_infinite_scroll’と’wp_ajax_nopriv_infinite_scroll’(ログインユーザー用とそれ以外用)です。
    先のタイミングで取得した値をグローバルに投げてから後で取得できないかとも思ったのですが、私にはやり方がわかりません。これまでは失敗して空になっています。

    $_POST[‘cat’] の他に $_POST に何が入っているか確かめてはどうでしょう。

    そこで値のある配列のキーは、action, page_no, loop_file です。

    トピック投稿者 Phullapadma

    (@phullapadma)

    ご回答ありがとうございます。

    対象でないのに表示される投稿とは、どんな投稿ですか?(具体的に教えてください)

    カテゴリアーカイブにおいて、当該カテゴリ(及びその親子関係のカテゴリ)に属さない投稿のことです。こうしたカテゴリでは、functions.php内の、無限スクロール用のクエリを生成する関数が呼び出された際、$_POST[‘cat’]が空配列になっており、スクロールして次を読み込むためのクエリにおいて、どこのカテゴリのアーカイブであるかの絞り込みができていないのです。URLはきちんとそのカテゴリのスラッグが使われており、最初の読み込み(無限スクロールの始動前)では絞り込みが効いているにも関わらずです。
    一部のカテゴリでそうなる理由が分からず、無理やりにでもカテゴリIDを渡す他の方法がないか思案していました。
    そろそろ行き詰って、次は、$_SERVER[‘REQUEST_URI’]からスラッグを正規表現で抜き出して使えるかを試そうかと頭が迷走してきたところで質問させていただいております。

    トピック投稿者 Phullapadma

    (@phullapadma)

    nobita 様、核心的な情報の提供、ありがとうございます。

    まだ全容を理解できてはいませんが、頑張って関連ファイルの解析を試みたいと思います。

13件の返信を表示中 - 1 - 13件目 (全13件中)