サポート » プラグイン » バージョンアップ後一部ページが表示されない

  • 他社さんが作ったサイトでphp5.2 wp4.8.12だったものを両方とも最新バージョンに上げました。
    Custom Post Type UIで作ったカスタムフィールドを使い事例ページを運用しています。
    Custom Post Type UIで作った他の他のページはバージョンアップ後も正常に表示されるのですが、
    Custom Post Type UIでFAQ的なページがページの冒頭で切れるような表示になっています。
    該当するPHPファイルを参照すると他の事例ページにみられる
    <?php
    $paged = get_query_var(‘paged’);
    $paged = $paged ? $paged : 1;
    $temp = $wp_query;
    $wp_query= null;
    $wp_query = new WP_Query(~
    の記述が単に
    <?php $loop = new WP_Query( array( ‘post_type’ => ‘question_pt’, ‘posts_per_page’ => 20, ‘paged’ => $paged) ); ?>
    からはじまり
    その直後に
    <?php if( $loop->have_posts() ): ?>
    <?php while ( $loop->have_posts() ) : $loop->the_post();?>
    との記述があります。
    該当するファイルに
    <?php
    $paged = get_query_var(‘paged’);
    $paged = $paged ? $paged : 1;
    $temp = $wp_query;
    $wp_query= null;
    を足すと
    ページに「サイトに重大なエラーが発生しました。」
    と表示されます。

    これだけの情報で考えられることはなにかありますか。
    WordPressのphpファイルを最近少しさわれるようになった状態です。
    よろしくお願いいたします。

15件の返信を表示中 - 1 - 15件目 (全16件中)
  • munyagu

    (@munyagu)

    こんにちは

    デバッグモードをお試しください。

    webbingstudio

    (@webbingstudio)

    こんにちは。
    解決方法の前に、まずエラーが出ている理由から説明します。

    このページでもページ送りを実装しようとして

    $paged = get_query_var(‘paged’);
    $paged = $paged ? $paged : 1;
    $temp = $wp_query;
    $wp_query= null;

    を足したとのことですが、
    FAQ的なページ=投稿タイプが「question_pt」の一覧ページには
    変数「$temp」や「$wp_query」は出てきていないはずです。

    <?php $loop = new WP_Query( array( ‘post_type’ => ‘question_pt’, ‘posts_per_page’ => 20, ‘paged’ => $paged) ); ?>

    改行がなくて読みづらいのですが、「$loop」になっていますね。

    それ以前に <?php 〜 ?> を閉じ忘れている可能性もあるのですが…

    ここから、考えられる原因と解決方法です。

    こちらのページに詳しい解説がありますが、最近のWordPressのバージョンではWP_Queryの「posts_per_page」が正しく動作しないことがあるようなのです。
    https://2inc.org/blog/2012/09/06/1947/

    ・posts_per_pageの値が「1ページに表示する最大投稿数」よりも小さい
    ・Advanced Custom Fieldsなどのプラグインを使用している

    などの情報がありますが、詳しくはわからないです(すみません)。

    「posts_per_page」の指定だけを、実際に表示するテンプレート内ではなく、テーマの「functions.php」に書くとよいようです。

    まず、一覧テンプレートの下記のコードを

    <?php $loop = new WP_Query( array( ‘post_type’ => ‘question_pt’, ‘posts_per_page’ => 20, ‘paged’ => $paged) ); ?>

    以下の通り書き直してください。
    その際、posts_per_pageの行は削除してください。

    <?php
        $paged = get_query_var('paged') ? get_query_var('paged') : 1;
        $args = array(
            'post_type' => 'question_pt',
            'paged' => $paged;
        );
        $loop = new WP_Query( $args ); ?>
    ?>

    続いて、テーマの「functions.php」を開いて、どこかわかりやすいところ(冒頭でいいかも)に以下のコードを書いてください。

    add_filter( 'parse_query', 'parse_query' );
    function parse_query( $query ) {
        if ( get_query_var( 'post_type' ) == 'question_pt' ) {
            $query->set( 'posts_per_page', 20 );
        }
    }

    これが正しく動作しなかった場合は、こちらに差し替えてみてください。

    function change_posts_per_page($query) {
        if ( is_admin() || ! $query->is_main_query() ) {
            return;
        }
    
        if ( ( $query->query_vars['post_type'] == 'question_pt' ) && ( $query->is_post_type_archive() ) ) {
            $query->set( 'posts_per_page', '20' );
        }
    
        if ( ( $query->query_vars['post_type'] == 'question_pt' ) && ( $query->is_archive() ) ) {
            $query->set( 'posts_per_page', '20' );
        }
    
    }
    add_action( 'pre_get_posts', 'change_posts_per_page' );
    • この返信は4ヶ月前にwebbingstudioが編集しました。
    chabin1204

    (@chabin1204)

    munyagu様

    ありがとうございます。
    お返事遅くなりました。
    デバッグモードを試しましたが、何も表示されませんでした。

    munyagu

    (@munyagu)

    そうですか・・・

    何事もいっぺんにやってしまうとどこに原因があったのか調べるのは大変です。
    プラグインやテーマもアップデートされたのでしょうか?
    それらが最新の PHP や WordPress に対応しているのかどうかも気になります。

    また、「ページの冒頭で切れる」ページのURLを教えていただくことは可能でしょうか?

    chabin1204

    (@chabin1204)

    munyagu様

    早々のお返事どうもありがとうございます。
    返信遅れたこと、申し訳なく思っています。

    昨日午後から知り合いの方にこの件についてのサポートを受けてました。
    症状的には解決に至らなかったのですが、改善点もあったのですでその経緯などを書かせてください。

    カスタム投稿の出力部分を

    <?php $loop = new WP_Query( array( ‘post_type’ => ‘question_pt’, ‘posts_per_page’ => 20, ‘paged’ => $paged) ); ?>
    から
    <?php
    $args = array(
    ‘post_type’ => ‘question_pt’,
    ‘nopaging’ => true
    );
    $loop = new WP_Query( $args );
    ?>
    に変更しました。
    またphpファイルをサポートしてもらった人に渡したところ、php部分の出力もうまくいっているようでした。

    サポート終了後に確認したところ、管理画面(ダッシュボード)からアクセスする該当の投稿画面が表示できるようになってました。以前は、投稿画面にアクセスすると白地の「重要な問題が発生しました。」と表示されていたので

    問題のURLですが
    https://hiroken-jp.com/question
    になります。
    今アクセスしたところ、FAQの1問目のQがページの左上に表示されています。
    また、ブラウザに付属するソースコード表示が

    <div class=”box01″>
    <div class=”ask”>見積りを依頼した場合の見積り料金はかかりますか?</div>
    で止まっていることも気になってます。

    またCPT UIの基本設定の「投稿タイプスラッグ」と該当のphpファイルの”post_type”も一致しています。(上記コードのとおりです。)また、他のカスタム投稿ページは正常に投稿・閲覧ができます。
    なにかどこかの設定でなおる気がしますが、そこの見当が全く付きません。
    なにか考えられることはありますか。
    よろしくお願いいたします。

    ishitaka

    (@ishitaka)

    サーバーのエラーログに、なんらかのエラーが出力されていませんか?ご確認ください。

    あと、試しに PHP の使用メモリ上限(memory_limit)を大きくしてみてはと思います。
    https://www.vektor-inc.co.jp/post/lolipop-upload-max-filesize/

    munyagu

    (@munyagu)

    いまもデバッグモードは有効な状態でしょうか?

    chabin1204

    (@chabin1204)

    ありがとうございます。

    >ishitakaさん
    エラーログは明日確認します。その手がありましたか。

    memory_limitは20M(設定できる上限)で設定されていました。

    >munyaguさん
    今は無効にしています。

    ishitaka

    (@ishitaka)

    memory_limitは20M(設定できる上限)で設定されていました。

    PHP 5.6 以上のデフォルトは 128M なので 20M はちょっと少ないような気がします。今回の現象が解消するかどうかはわかりませんが、PHP をアップデート可能であればアップデートしてみるのもいいかもしれません。

    chabin1204

    (@chabin1204)

    >ishitakaさん
    どうも、ありがとうございます。
    phpは5.6を7.1(CGI版)に変更してこのエラーが起きました。
    7.1とmemory_limitの関係、自分でも調べます。

    先の投稿から時間が経ってしまいました。
    Ishikawaさんから助言してもらいましたmemory_limitの件とエラーログの件を勘案し、運用中のサーバー会社のサポートに連絡をいれました。
    先方の連絡待ちという状況です。
    ご助言に感謝しています。
    また状況が分かり次第こちらでご報告します。
    よろしくお願いいたします。

    サーバー会社から昨日の夕方既に返信が来ていました。

    >PHPのエラーが発生していた履歴はございませんでした。
    とのことです。
    まずは一安心です。
    メールを見たあと、memory_limitをWordPressのダッシュボードから確認できるプラグイン(WP-ServerInfo)を入れ表示させたところ、【 256.0 MiB】と表示されました。

    今自分が認識している問題と気になっていることは以下の2点になります。
    1.本ブログ(解体ブログ)の投稿画面が表示されたり、アクセス不能になる。

    2.お客様の声のページ(*)がバージョンアップ後ずっと表示されない。
    1,2とも管理画面からアクセスできる投稿画面を開発者モードで表示したときに
    【Found 2 elements with non-unique id #_wpnonce】
    のエラーメッセージが出ました。
    該当のエラーメッセージで検索しても英語のページばかり表示され、困惑しているというのが今の状況です。
    申し訳ありませんが、知恵をお貸しください。

    問題解決のためのチェックリスト」は試されましたか?

    これでダメなら、テーマやサイトの構成が特殊(?)なのかもしれません。ここでのやり取りで解決するのは難しい感じがします。
    開発元にお問い合わせされてはどうでしょうか。

    >ishitakaさん
    返信遅くなりました。
    「問題解決のためのチェックリスト」知りませんでした。
    どうも、ありがとうございます。

    今しばらくお時間をください。

    お時間あけてしまいました。
    解決しました。
    どうも、ありがとうございました。
    古いプラグインの影響でした。
    きちんと総括し、解決に至った経緯をここに書き込みたいと思っています。
    もうしばらくお待ちください。

15件の返信を表示中 - 1 - 15件目 (全16件中)
  • このトピックに返信するにはログインが必要です。