web-dev-qa-db-ja.com

WP_List_tableの上部にリンクを作成する方法

私は投稿タブのリンクのようなリンクを作成しようとしています(下の画像を参照)。

enter image description here

私は自分のWP_List_tableを作成しましたが、それらのリンクをどのように作成するか、またはそれらにどのようにして異なるdbクエリを表示させるかについてはよくわかりません。

私はクラスのextra_tablenav関数について知っていますが、これは一括アクション領域の後に物事を追加するので、これは私が望むことをしているようには見えません。

5
Kirill Fuchs

コメントで述べたように、これが既存のテーブルであれば、リンクを追加/削除したい場合は、 この回答を参照してください

もしこれがWP_List_Tableのカスタムサブクラスなら、例えば:

class Wpse56883_WP_List_Table extends WP_List_Table{

 //Class methods here

}

その後、get_views()メソッドをオーバーライドしてこれらのリンクを追加します。これは配列array ( id => link )を返します。これはページにリンクし直して、クエリ変数に値を付けます(これをcustomvarと呼びます)。

リンクを構築するときは、customvarの現在の値を確認し、条件付きでクラスcurrentを追加して現在のビューを太字で強調表示します。

だから(あなたのクラスの中)。

function get_views(){
   $views = array();
   $current = ( !empty($_REQUEST['customvar']) ? $_REQUEST['customvar'] : 'all');

   //All link
   $class = ($current == 'all' ? ' class="current"' :'');
   $all_url = remove_query_arg('customvar');
   $views['all'] = "<a href='{$all_url }' {$class} >All</a>";

   //Foo link
   $foo_url = add_query_arg('customvar','foo');
   $class = ($current == 'foo' ? ' class="current"' :'');
   $views['foo'] = "<a href='{$foo_url}' {$class} >Foo</a>";

   //Bar link
   $bar_url = add_query_arg('customvar','bar');
   $class = ($current == 'bar' ? ' class="current"' :'');
   $views['bar'] = "<a href='{$bar_url}' {$class} >Bar</a>";

   return $views;
}

それからprepare_itemsメソッドでcustomvarメソッドを取得してその値に応じてクエリを変更できます。

 function prepare_items(){
     //Retrieve $customvar for use in query to get items.
     $customvar = ( isset($_REQUEST['customvar']) ? $_REQUEST['customvar'] : 'all');
 }

注: リンクを使用してアクションを実行できます。 'action'値をクエリ変数actionに格納します(必ず、ナンスを使用してください)。それからload-{$hook}Codex を参照)にフックし、パーミッションとnonceをチェックしてからアクションを実行してください。

「アクションリンク」を含める場合は、必ずナンスを使用してください。必要な機能を持つユーザーに対してのみリンクを表示してください。

9
Stephen Harris

ページコンテンツをレンダリングするときはviews();を呼び出さなければなりません。

ページタイトルの後、フォームの前に<?php $wp_list_table->views(); ?>を置きます。

いつ呼ばれたかは\ wp-admin\edit.phpを見てください。

1
Spyros