web-dev-qa-db-ja.com

Plugin AdminのWP_List_Tableにクリック可能な名前を作成します。

私はWordpressのネイティブPost/Pageテーブルと同じようにスタイルを設定して機能するテーブルを作成したいプラグインを開発しています。

以下のガイドに従って、テーブルを作成してデータベースをロードすることができました。理解できない唯一のことは、行の内容の1つを「クリック可能」にする方法です。

http://wpengineer.com/2426/wp_list_table-a-step-by-step-guide/ /

IE - 「名前」列をクリック可能にする名前の下に「編集、削除」ボタンがありますが、それだけでは不十分です。

すべてのアドバイスは大歓迎です。私は彼らがこれをどのようにして行ったかを見るために別のプラグインを調べました、そしてそれは彼らがテーブルをバラバラにしそしてテーブルのためのhtmlをハードコードしたように見えました。私はこれをする必要がないことを願っています。

編集:

clickable, linked, name

ご覧のとおり、投稿の名前Hello world!はリンク/クリック可能です。

SOLUTION

これを機能させるには、行アクションを含むカスタム列関数を削除する必要がありました。結局のところ、あなたは単に行アクションのdivを呼び出すことができます! Miloのおかげで、これが私を助けてくれた機能です。

function single_row_columns($item) {
       list($columns, $hidden) = $this->get_column_info();
            foreach ($columns as $column_name => $column_display_name) {
                   $class = "class='$column_name column-$column_name'";

                   $style = '';
                   if (in_array($column_name, $hidden))
                         $style = ' style="display:none;"';

                   $attributes = "$class$style";

                   if ('cb' == $column_name) {
                   echo  "<td $attributes>";
                   echo '<input type="checkbox" name="id[]" value="%s" />', $item['ID'];
                   echo "</td>";
                        }
               elseif ('galname' == $column_name) {
               echo "<td $attributes>";
               echo '<a href="#">', $item['galname'];
               echo "</a>";

                   echo "<div class='row-actions'><span class='edit'>";
           echo sprintf('<a href="?page=%s&action=%s&gid=%s">Edit</a>',$_REQUEST['page'],'edit',$item['id']);
                   echo "</span> | <span class='trash'>";
           echo sprintf('<a href="?page=%s&action=%s&gid=%s">Delete</a>',$_REQUEST['page'],'delete',$item['id']);
           echo "</span></div></td>";
                                                    }
            else {
                echo "<td $attributes>";
                echo $this->column_default( $item, $column_name );
                echo "</td>";
            } } } 

本当にありがとう!ヤコブ

3
Jacob Raccuia

WP_List_Tableクラス は、最終的にsingle_row_columnsメソッドを使用して各テーブルセルを出力します。そのメソッドを見れば、この部分がわかります。

...
elseif ( method_exists( $this, 'column_' . $column_name ) ) {
    echo "<td $attributes>";
    echo call_user_func( array( &$this, 'column_' . $column_name ), $item );
    echo "</td>";
}
...

追加の機能やフォーマットを追加したい列のメソッドをクラスに追加して'column_' . $column_nameという名前を付け、アイテムのコンテンツをラップするために必要な追加のマークアップを出力します。

2
Milo

あなたが投稿とコメントの表の「クイック編集」機能を意味するなら:私はこの機能のためのチュートリアルに取り組んでいます、しかしそれは簡単で理解可能な解決策を見つけるのに時間がかかるでしょう。ご想像のとおり、これはPHP、jQuery、およびAjaxの組み合わせです。

この機能をどのように実装するかについてのヒントをネットで探しましたが、唯一利用可能な例はWordPressコアのソースです。

0
Latz