• 解決済 taiti

    (@taiti)


    標記の件について、どなたか解決方法をご教授願います。

    トップページのカテゴリー欄が現在下記のようになっています。どのようにしたら正常に表示されるようになるでしょうか?ワードプレスのバージョンアップをしてからこのようになったような気がします。

    (以下カテゴリー表示)
         ↓
    WordPress データベースエラー: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \’order ASC\’ at line 1 for query SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id WHERE tt.taxonomy IN (\’category\’) ORDER BY order ASC made by require, require_once, include, get_sidebar, locate_template, load_template, require_once, wp_list_cats, wp_list_categories, get_categories, get_terms

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • モデレーター jim912

    (@jim912)

    TAITIさん、こんにちは。

    データベースへのリクエスト文法エラーとなっています。

    おかしい点は2点ありますが、エラーメッセージから見て、(\’category\’)とシングルクォートがエスケープされているのは、おそらくフォーラム投稿時の処理だと思います。
    実際にエラーの原因となっているのは、ORDER BY orderのorderフィールドがバッククォートでエスケープ処理されておらず、SQLの命令文と解釈されているためです。(フォーラム投稿時に意図的にバッククォートを削除したのであれば、別の原因でしょう。)

    ただし、カテゴリーソートにorderというフィールドはデフォルトでは存在しないはずなので、なんらかのカスタマイズを行っておられたか、あるいはテーマ、プラグインによる拡張ではないかと推測されます。
    その点、確認してみてください。

    トピック投稿者 taiti

    (@taiti)

    jim912さんありがとうございました。

    WPは使い始めたばかりであまり専門的なことがわからないのですが、テーマ、プラグインはカスタマイズは行っていません。バージョンは最新版にアップデートしました。

    恐れ入りますが、勉強不足で下記の部分がよく理解できません。
    もう少し詳しく教えていただけませんでしょうか?

    実際にエラーの原因となっているのは、ORDER BY orderのorderフィールドがバッククォートでエスケープ処理されておらず、SQLの命令文と解釈されているためです。(フォーラム投稿時に意図的にバッククォートを削除したのであれば、別の原因でしょう。)

    バッククォートとは?
    具体的な修正方法など

    よろしくお願いします。

    モデレーター jim912

    (@jim912)

    TAITIさん、こんにちは。

    バッククォートとは?
    このフォーラム入力時に「code」ボタンを押して、挿入される文字の事です。データベースへのリクエスト時にフィールド名を明示的に指定させる場合に、バッククォートでエスケープ処理を行います。上記の場合は、フィールド名として指定されているorderがSQLのORDER句と混同されて解釈されたためにエラーが発生しているというわけです。

    具体的な修正方法など
    いくつか可能性が考えられます。
    可能性として一番大きいのは、sidebar.phpのカテゴリ出力部分のパラメータ指定ミスです。order_by=orderとなっていると同様のエラーとなる可能性がありそうです。
    他には、カテゴリーをソートさせられるようなプラグインだと、データベースの拡張を行う可能性が考えられますし、可能性としては低いですが、ファイル自体の破損ということも考えられます。

    トピック投稿者 taiti

    (@taiti)

    jim912さんありがとうございます。

    sidebar.phpのカテゴリー部分を以下に抜粋しましたのでおかしなところがあればご指摘願います。

    <h2>カテゴリー</h2>
    <ul>
    <?php wp_list_cats('orderby=order & optioncount=1 & hierarchical=1 & hide_empty=1'); ?>
    </ul>

    トピック投稿者 taiti

    (@taiti)

    orderby=orderorder by=orderとしたら正常に表示されるようになりました。

    以前この部分を変更した覚えはないんですけどね・・・^^;

    これで正しいのかは分かりませんがとりあえず、きちんと表示されているので良しとします。

    もし、「正しくはこうなんだよ」という意見がありましたらよろしくお願いします。

    jim912さん、いろいろとご指導いただき、ありがとうございました。

    今後ともよろしくお願いいたします。

    モデレーター jim912

    (@jim912)

    TAITIさん、こんにちは。

    修正いただいたorder byという指定では、単なる無効パラメータという扱いになりますので、最初の&までの部分を削除してしまって ‘optioncount=1 & hierarchical=1 & hide_empty=1’ としてしまっても問題ありません。

    パラメータとして有効にしたい場合は、order_byの指定値を有効な値に変更してください。このパラメータは、カテゴリーの表示順を何を元に決めるかという指定となります。

    なお、sidebar.phpで使われているwp_list_catsはversion2.1から非推奨となっていますので、同等のテンプレートタグwp_list_categoriesに置き換えてあげた方が良いでしょう。

    wp_list_categoriesの利用方法については、codexの方に詳細に説明されていますので、そちらを参照いただくのが良いかと思います。

    テンプレートタグ/wp list categories

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「トップページ カテゴリー欄のデータベースエラー表示について」には新たに返信することはできません。