私は投稿タブのリンクのようなリンクを作成しようとしています(下の画像を参照)。
私は自分のWP_List_table
を作成しましたが、それらのリンクをどのように作成するか、またはそれらにどのようにして異なるdbクエリを表示させるかについてはよくわかりません。
私はクラスのextra_tablenav
関数について知っていますが、これは一括アクション領域の後に物事を追加するので、これは私が望むことをしているようには見えません。
コメントで述べたように、これが既存のテーブルであれば、リンクを追加/削除したい場合は、 この回答を参照してください 。
もしこれが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をチェックしてからアクションを実行してください。
「アクションリンク」を含める場合は、必ずナンスを使用してください。必要な機能を持つユーザーに対してのみリンクを表示してください。
ページコンテンツをレンダリングするときはviews();
を呼び出さなければなりません。
ページタイトルの後、フォームの前に<?php $wp_list_table->views(); ?>
を置きます。
いつ呼ばれたかは\ wp-admin\edit.phpを見てください。