it-swarm.com.de

Erstellen Sie einen anklickbaren Namen in WP_List_Table für Plugin Admin

Ich habe ein Plugin entwickelt, in dem ich eine Tabelle erstellen wollte, die genau wie die nativen Post/Page-Tabellen von Wordpress gestaltet und funktioniert.

Nach der folgenden Anleitung konnte ich die Tabelle erstellen und meine Datenbank laden. Das einzige, was ich nicht herausfinden kann, ist, wie man einen der Zeileninhalte "anklickbar" macht.

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

IE - die Spalte "Name" anklickbar machen. Ich habe die Schaltflächen "Bearbeiten, Löschen" unter dem Namen, aber das ist nicht genug.

Jeder Rat wäre sehr dankbar. Ich habe mir ein anderes Plugin angesehen, um zu sehen, wie sie das gemacht haben, und es sah so aus, als hätten sie den Tisch zerbrochen und den HTML-Code für den Tisch hartcodiert. Ich hoffe, ich muss das nicht tun.

BEARBEITEN:

clickable, linked, name

Der Name des Beitrags, Hallo Welt !, ist, wie Sie sehen, ein Link/anklickbar.

LÖSUNG

damit dies funktioniert, musste ich meine benutzerdefinierten Spaltenfunktionen entfernen, einschließlich meiner Zeilenaktionen. Es stellt sich heraus, dass Sie einfach die Zeilenaktionen div aufrufen können! Hier ist die Funktion, die mir dank des Milo geholfen hat.

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>";
            } } } 

Vielen Dank! Jacob

3
Jacob Raccuia

Die Klasse WP_List_Table verwendet letztendlich die Methode single_row_columns, um jede Tabellenzelle auszugeben. Wenn wir uns diese Methode ansehen, werden wir diesen Teil sehen:

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

Fügen Sie Ihrer Klasse eine Methode für die Spalte hinzu, der Sie zusätzliche Funktionen/Formatierungen hinzufügen möchten, und nennen Sie sie 'column_' . $column_name. Geben Sie dann alle zusätzlichen Markups aus, die Sie für den Inhalt des Elements benötigen.

2
Milo

Wenn Sie die "Schnellbearbeitung" -Funktion der Posts und Kommentartabellen meinen: Ich arbeite an einem Tutorial für diese Funktion, aber es wird einige Zeit dauern, bis eine leicht verständliche Lösung gefunden ist. Wie Sie vielleicht vermutet haben, handelt es sich um eine Mischung aus PHP, jQuery und Ajax.

Ich habe im Internet nach Hinweisen zum Implementieren der Funktion gesucht, aber das einzige verfügbare Beispiel ist die Quelle des WordPress-Kerns.

0
Latz