WP_Posts_List_Table
クラスにはinline_edit()
という名前の関数があり、それはwp-admin/edit.php
で使用されている(しかし最初は隠されている)クイックエディットテーブル全体のレンダリングを担当します。
私が取り組んでいるサイトには何千ものカテゴリ用語があり、それらすべてがチェックボックス付きのリストアイテムとしてこのクイック編集テーブルに追加されるため、preventそのテーブルがレンダリングされないようにします。それはedit.php
を巨大で遅くロードするようにします(そして、いくつかのjQueryプラグインで特定のケースではいくつかのブラウザを失速させさえします)。
このテーブルがレンダリングされないようにするためのWP_Posts_List_Table
内のフィルターやアクションを使用した方法はありません。 edit.php
をにしないようにする方法も、最後に$wp_list_table->inline_edit();
を呼び出しません。私の目標を達成するための何らかの(適切な)方法はありますか?コアをハッキングすることなく、もちろん。
(私はpost_row_actions
フィルターを使って投稿行のクイック編集リンクを無効にする方法を知っていますが、その巨大なテーブルはまだedit.php
でレンダリングされ送信されています。)
私はフィルタを見つけることもできませんでしたが、分類法でそのUIを表示できるかどうかを確認します。それで私が私のプラグインの1つでしていたのは編集ページの$wp_taxonomies
グローバル変数を微調整することでした。
/**
* Disable the UI for categories, but only on EDIT screen
* which prevents them from appearing in quick edit
*/
add_action( 'load-edit.php', 'wpa_130501_disable_ui' );
function wpa_130501_disable_ui(){
global $wp_taxonomies;
$wp_taxonomies['category']->show_ui = FALSE;
}
クイック編集セクションは、将来のアップデートで大いに愛を必要とします。
しばらく同じ問題を抱えていた、私は私がedit.phpページにいるときにすべてのチェックボックスを削除するためにフィルタでterm_listを変更することによってそれを解決しました。まず、これでリンクを削除できます。
function remove_quick_edit( $actions ) {
unset($actions['inline hide-if-no-js']);
return $actions;
}
add_filter('post_row_actions','remove_quick_edit',10,1);
これはリンクを削除するだけですが、実際のカテゴリセレクタはまだソースコードに含まれています...
add_filter('wp_terms_checklist_args', 'remove_terms_from_list', '', 2);
function remove_terms_from_list( $args, $post_id){
global $pagenow, $typenow;
if ($pagenow == 'edit.php' && $typenow == 'post-type-name' || $pagenow == 'nav-menus.php') {
$args['walker'] = new wiki_remove_tax_quickedit;
$args['taxonomy'] = ' ';
}
return $args;
}
class wiki_remove_tax_quickedit extends Walker {
var $tree_type = 'category';
var $db_fields = array ('parent' => 'parent', 'id' => 'term_id');
function start_lvl( &$output, $depth = 0, $args = array() ) {
$indent = str_repeat("\t", $depth);
$output .= "$indent<ul class='children'>\n";
}
function end_lvl( &$output, $depth = 0, $args = array() ) {
$indent = str_repeat("\t", $depth);
$output .= "$indent</ul>\n";
}
function start_el( &$output, $category, $depth, $args, $id = 0 ) {
}
}
(投稿タイプ名をあなたの投稿タイプに変更してください)