質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.54%

  • WordPress

    8725questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

WordPressの投稿画面で特定のカテゴリでのみ再編集しようとすると投稿画面の挙動がおかしくなる

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 849

tomy

score 96

発生している問題・エラーメッセージ

特定のカテゴリーを選んだときだけ、投稿画面の挙動がおかしくなります。
新規投稿時は問題なく動いておるのですが、一旦保存して再編集をしようとすると下記の挙動がおかしくなります。

・出るはずのカスタムフィールドとが出ない
・ビジュアルモードとテキストモードの切り替えができない
・表示オプション、ヘルプなどが開かない
・アイキャッチ画像を設定を押すと画面遷移する(通常はポップアップ)
・メディアを追加を押しても動かない
・新規投稿で記入したテキストが白抜きになり文字数が0になっている
・function.phpでカテゴリーを1つしか選べなくしているが選べるようになってしまう

問題のカテゴリーはgalleryというスラッグで子カテゴリを2つ持っています。
後述するfunction.phpの設定により親であるgallery自体の選択はできない仕様にしてありますが、2つある子カテゴリーのどちらを選んでも同じ状態になります。

原因の検討もつかず、質問主体になり申し訳ございません。
不足情報などございましたら、ご指摘ください。

試したこと

プラグインの一時停止
使用しているプラグインプラグインは下記です。
このうち、一時的に停止しても問題ないと思われるもの(★印のもの)を一つずつ停止しましたが、解決しませんでした。

・Advanced Custom Fields
・Archives for a category★
・Auto Post Thumbnail★
・Custom Post Type Permalinks★
・Custom Post Type UI★
・Duplicate Post★
・EWWW Image Optimizer★
・Intuitive Custom Post Order
・MW WP Form
・TinyMCE Advanced★
・Top Level Categories Fix
・Wordfence Security
・WP Multibyte Patch★
・Login rebuilder
・Theme Test Drive★

カテゴリーの更新
該当カテゴリーの更新をしてみましたが、解決しませんでした。

テーマの切り替え
Theme Test Driveを使用して、デフォルトテーマのTwenty Fifteen,Sixteen,Seventeenを試しましたが変わりませんでした。

補足情報

カテゴリー関連の制御でfunction.phpに下記を記載しております。

//子カテゴリーがある親カテゴリーは選べなくする
require_once(ABSPATH . '/wp-admin/includes/template.php');
class Danda_Category_Checklist extends Walker_Category_Checklist {

     function start_el( &$output, $category, $depth, $args, $id = 0 ) {
        extract($args);
        if ( empty($taxonomy) )
            $taxonomy = 'category';

        if ( $taxonomy == 'category' )
            $name = 'post_category';
        else
            $name = 'tax_input['.$taxonomy.']';

        $class = in_array( $category->term_id, $popular_cats ) ? ' class="popular-category"' : '';
    $cat_child = get_category_children($category->term_id);

    if($cat_child !== "") {
            $output .= "\n<li id='{$taxonomy}-{$category->term_id}'$class>" . '<label class="selectit"><input value="' . $category->term_id . '" type="checkbox" name="'.$name.'[]" id="in-'.$taxonomy.'-' . $category->term_id . '"' . checked( in_array( $category->term_id, $selected_cats ), true, false ) . disabled( empty( $args['disabled'] ), true, false ) . ' /> ' . esc_html( apply_filters('the_category', $category->name )) . '</label>';
        }else{
            $output .= "\n<li id='{$taxonomy}-{$category->term_id}'$class>" . '<label class="selectit"><input value="' . $category->term_id . '" type="checkbox" name="'.$name.'[]" id="in-'.$taxonomy.'-' . $category->term_id . '"' . checked( in_array( $category->term_id, $selected_cats ), true, false ) . disabled( empty( $args['disabled'] ), false, false ) . ' /> ' . esc_html( apply_filters('the_category', $category->name )) . '</label>';
        }
    }

}

function lig_wp_category_terms_checklist_no_top( $args, $post_id = null ) {
    $args['checked_ontop'] = false;
    $args['walker'] = new Danda_Category_Checklist();
    return $args;
}
add_action( 'wp_terms_checklist_args', 'lig_wp_category_terms_checklist_no_top' );

//カテゴリーを一つしか選べなくする
add_action( 'admin_print_footer_scripts', 'limit_category_select' );
function limit_category_select() {
    ?>
    <script type="text/javascript">
        jQuery(function($) {
            // 投稿画面のカテゴリー選択を制限
            var cat_checklist = $('.categorychecklist input[type=checkbox]');
            cat_checklist.click( function() {
                $(this).parents('.categorychecklist').find('input[type=checkbox]').attr('checked', false);
                $(this).attr('checked', true);
            });

            // クイック編集のカテゴリー選択を制限
            var quickedit_cat_checklist = $('.cat-checklist input[type=checkbox]');
            quickedit_cat_checklist.click( function() {
                $(this).parents('.cat-checklist').find('input[type=checkbox]').attr('checked', false);
                $(this).attr('checked', true);
            });

            $('.categorychecklist>li:first-child, .cat-checklist>li:first-child').before('<p style="padding-top:5px;">カテゴリーは1つしか選択できません</p>');
        });
    </script>
    <?php
}

デバックモードでのエラーメッセージ

Strict Standards: Declaration of Danda_Category_Checklist::start_el() should be compatible with Walker_Category_Checklist::start_el(&$output, $category, $depth = 0, $args = Array, $id = 0) in 中略 /wp-content/themes/example/functions.php on line 97

Notice: Use of undefined constant ture - assumed 'ture' in 中略 /wp-content/themes/example/functions.php on line 20

//下記2つのエラーは多数出ております。
Notice: get_category_children の使用はバージョン 2.8.0 から非推奨になっています! 代わりに get_term_children() を使ってください。 in 中略 /wp-includes/functions.php on line 3828

Notice: get_all_category_ids の使用はバージョン 4.0.0 から非推奨になっています! 代わりに get_terms() を使ってください。 in 中略 /wp-includes/functions.php on line 3828
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • tomy

    2017/01/26 19:14

    デバックモードで確認したエラーを追記しました。

    キャンセル

  • punchan

    2017/01/26 20:06

    別の子カテゴリーを作ってみたり、類似の階層構造を作って試したりはいかがでしょうか。

    キャンセル

  • tomy

    2017/01/26 20:30

    子カテゴリーを1つ増やしてみましたが、同じ状態になってしまいました。他に子カテゴリーを持つ構造がいくつかあり、同じようにカスタムフィールドも使用しているのですがそちらは通常通り機能しております。

    キャンセル

回答 2

+1

Notice: Use of undefined constant ture - assumed 'ture' in 中略 /wp-content/themes/example/functions.php on line 20

質問文にある functions.php のコードが全てではないと思いますが、コードのどこかで true を ture と書いているようです。

それのエラーが出てHTMLの構造が崩れ、JavaScriptが要素の取得に失敗するのでは。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/01/27 03:15

    Advanced Custom Fields
    https://ja.wordpress.org/plugins/advanced-custom-fields/

    ページリンクを2ヶ所取得していたのですがこれを1ヶ所にしたら直りました。投稿が多すぎるとダメなのでしょうかね。リンクは別のやり方で取得するように変更してみます。

    キャンセル

  • 2017/01/27 08:01

    まだ質問が「受付中」になっていますが、いったんご自身の回答をもって「解決済」にされてはいかがでしょうか。

    キャンセル

  • 2017/01/27 09:10

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

    キャンセル

check解決した方法

0

Advanced Custom Fields
https://ja.wordpress.org/plugins/advanced-custom-fields/

ページリンクを2ヶ所取得していたのですがこれを1ヶ所にしたら直りました。投稿が多すぎるとダメなのでしょうかね。リンクは別のやり方で取得するように変更してみます。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

同じタグがついた質問を見る

  • WordPress

    8725questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。