web-dev-qa-db-ja.com

管理者 WP リストテーブルの列が表示されない

Www.example.com/wp-admin/edit.phpのようなページで使用されているwordpressの管理テーブルはclass-wp-list-table.phpクラスを使用しています

このクラスには、特定のテーブルの列を{display: none;}で非表示にする2つの関数があります。これらの関数は次のリンクで確認できます。

wordPress/wp-admin /インクルード/クラス-wp-list-table.php

wordPress/wp-admin /インクルード/クラス-wp-list-table.php

最近、私はワードプレスのテーブルを改良しようとしていました。固定テーブルヘッダとライブフィルタリングを追加するプラグインに取り組んでいました。私は Jquery FilterTable を使用していましたが、これはスティッキーヘッダスクリプトと共に素晴らしい結果をもたらしました。

ほとんどのスティッキテーブルヘッダースクリプトは、既存のヘッダーをcss display:noneまたはvisibility:hiddenで非表示にしながら、画面の上部に達したときに既存のヘッダーを複製して修正します。すべて見ることができます ここで

Jquery Filter Tableはdisplay:noneを使用して、ユーザー検索で見つからなかった結果を隠してライブフィルタリングを行います。

何らかの理由で、これらのスタイルはページ/投稿を更新するときにclass-wp-list-tableを妨害します。それは表示を引き起こします:どれも永久的にならないために。最初はキャッシュの問題だと思いましたが、プラグインをすべて無効にしてキャッシュをクリアしました。私もワードプレスを再インストールするまで行ってきました。私はcodepress-admin-columnsをインストールした後にこれに最初に気付きましたが、プラグインを削除しました、そしてそれは何も修正していません。

display : none;はいくつかのテーブルヘッダとそれらに関連するカラムにインラインで埋め込まれました

Wordpressは値だけでなく、すべてのテーブル列htmlの値を格納するようです。

私はそれがページ付けのためにテーブルをキャッシュすることを知っています、しかし私は本当にこれがすべて起こるのかわからない。

私はなぜこれが起こったのだろうかと思っていますが、もっと重要なのは、テーブルがデータベースのどこかに保存されているかのように見えるようにテーブルを修正する方法を教えてください。私はすべてのプラグインを無効にし、14にリセットし、allow_repairスクリプトを実行し、そしてすべての孤児/トランジェントをクリアしました。サーバーのキャッシュとコンピュータのブラウザのキャッシュをクリアしました。

欠けている列を示す画像:

Image showing missing columns

Image showing display:none added to title

Display none also added to td columns

enter image description here

1
Bryan Willis

これは、ワードプレスAJAX列が非表示になっているときに管理テーブルページのmanageedit-pagecolumnshiddenを更新しようとしているバグです。テーブルヘッダーが非表示になっていると、adminテーブル全体を完全に分割します。 Michael Ecklundの手がかりのおかげで、私はそれを理解することができました。

ここでチケットを作成しました。

https://core.trac.wordpress.org/ticket/29030

そして問題のビデオはここで見られることができます:

https://www.youtube.com/watch?v=lZKjUpFx_yc&feature=youtu.be

1
Bryan Willis

テーブル内の表示されている列は、インタフェース(管理者の右上)の[画面オプション]で無効にできます。プラグインが無効になっていると、おそらくそれが見られます。

0
Rarst

問題の原因が何であれ、以前に設定を解除していた列のみがすべてを非アクティブ化した後に表示されていることに気付きました。

この問題を修正するために、次のフィルターで欠落している列の設定を解除しました。

function remove_all_pages_columns_to_fix_hidden($columns) {
  unset($columns['cb']); // Remove checkbox column
  unset($columns['title']); // Remove title column
  return $columns;
}
add_filter('manage_pages_columns', 'remove_all_pages_columns_to_fix_hidden');

その後、編集ページに移動してページを更新しました。この問題は、WP_List_Tableとadmin-ajax.phpがどのように連携するかに関係していると確信しています。

編集:

Manageedit-pagecolumnshiddenを指摘してくれてありがとう@Michael Ecklund

columnshiddenは wp_ajax_hidden_columns() && get_hidden_columns() ....に表示されます.

ここのadmin-ajaxクライアント側機能は common.js にあるように見えます。これは hidden table headers をチェックします

これがすべて機能する方法の問題は、プレゼンテーションを動作ロジックから分離するという非常に貧弱な仕事をすることです。

たとえば、thead { display: none; }.column-title { display: none; }#cb { display: none; }、または同様のものがいつでも、または理由である場合、そのユーザーに対してテーブル全体が破損します。 WP_List_Tableは、発生しない何かに依存するべきではありません。私の場合、スティッキテーブルヘッダースクリプトを作成しようとしましたが、多くのwordpress初心者を見ることができましたが、適切な方法がわからない 削除 、 css displayを使用:なし; columnshiddenを更新するとすぐに編集テーブルが破壊されます。 manageedit-{$ post_type}列は、実際にチェックされている入力フィールドのみの可視性に依存するべきではありません。

編集2:問題自体は少し異なりますが、これは次のような他の問題と非常に似ていると思います。

WPリストテーブルのカスタムクイックエディットボックス-投稿メタデータがなく、送信時に列が変更される

クイック編集を使用するとカスタム管理列が消える

Wordpress admin WP_table_listが正しく表示されない

https://core.trac.wordpress.org/ticket/21016

0
Bryan Willis