在WP_LIST_TABLE中为插件管理员创建可点击的名称

时间:2013-01-23 作者:Jacob Raccuia

我一直在开发一个插件,希望在其中创建一个表,其样式和工作方式与Wordpress的原生帖子/页面表类似。

按照下面的指南,我能够创建表并加载数据库。我唯一不知道该怎么做的就是如何使其中一行内容“可单击”。

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

IE-使“名称”列可单击。我在名字下面有“编辑,删除”按钮,但这还不够。

如有任何建议,将不胜感激。我查看了另一个插件来了解他们是如何做到这一点的,看起来他们将表拆分并为表硬编码了html。我希望我不必这样做。

编辑:

clickable, linked, name

帖子的名字,你好,世界!,如您所见,是一个链接/可单击。

SOLUTION

为了实现这一点,我必须删除自定义列函数,其中包括行操作。事实证明,您可以简单地调用row actions 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>";
            } } } 
非常感谢!雅各布

2 个回复
最合适的回答,由SO网友:Milo 整理而成

这个WP_List_Table class 最终使用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, 然后输出需要包装项目内容的任何其他标记。

SO网友:Latz

如果你指的是帖子和评论表的“快速编辑”功能:我正在为这个功能编写教程,但要找到一个简单易懂的解决方案还需要一些时间。您可能已经猜到了,它是PHP、jQuery和Ajax的混合体。

我在网上搜索了关于如何实现该功能的任何提示,但唯一可用的示例是WordPress核心的来源。

结束

相关推荐

Wp-admin post.php JavaScript链接不起作用

我最近注意到,在我的后端管理面板中,没有任何动态JavaScript链接可以打开或工作。这包括“状态”、“可见性”和“计划”旁边的“编辑”链接。此外,slug permalink编辑按钮不会执行任何Ajax/JavaScript操作。单击任何链接只会附加hashtag值(例如。#edit_timestamp) 进入我的URL。但是,如果不使用JavaScript,似乎无法更新发布时间戳或发布URL。这是其他人遇到的常见问题吗?我已经尝试禁用我所有的插件,我只使用2-Akismet和Google XML网站