“我的网站”管理页面只有指向网站仪表盘和生产页面的链接,价值有限。我正试图找到一种方法,向它们添加更有用的链接,如新帖子、草稿和评论,以便使该页面成为一个实用的中央管理位置(这样,我就不必使用几年前与IFrames拼凑在一起的页面)。
显然,我必须编写一个插件,但我很难找到修改管理页面的好例子,尤其是以这种特定的方式(将特定于博客的信息添加到管理页面上的多个项目)。我能找到的最接近的东西就在这里;A.question 关于对项目进行排序,但公认的解决方案只是添加了一个过滤器来对博客列表进行排序,对此没有帮助。
文件/wp-admin/my-sites.php
使用以下代码在“我的网站”页面上创建博客列表:
foreach ( $row as $user_blog ) {
$s = $i == 3 ? \'\' : \'border-right: 1px solid #ccc;\';
echo "<td valign=\'top\' style=\'$s\'>";
echo "<h3>{$user_blog->blogname}</h3>";
/* CREATE LINKS HERE: */
echo "<p>" . apply_filters( \'myblogs_blog_actions\', "<a href=\'" . esc_url( get_home_url( $user_blog->userblog_id ) ). "\'>" . __( \'Visit\' ) . "</a> | <a href=\'" . esc_url( get_admin_url( $user_blog->userblog_id ) ) . "\'>" . __( \'Dashboard\' ) . "</a>", $user_blog ) . "</p>";
echo apply_filters( \'myblogs_options\', \'\', $user_blog );
echo "</td>";
$i++;
}
有两个问题:
我找不到有关将修改链接到myblogs_blog_actions
滤器我能做的最好的事情就是在包含链接的HTML中添加一些文本,但是如果没有正在处理的特定博客的信息,我就无法提供特定于博客的链接,至少在没有首先解析已经提供的链接的情况下是这样做的,这似乎是错误的。
我找不到有关返回评论、发布新内容或草稿(或其他管理)页面URL的函数的任何信息。显然,我可以将硬编码字符串附加到博客根URL(例如。,post-new.php
) 但这似乎有些笨拙;当然,有一种合适的内在方式来获得它们。
我制作了一个测试插件,可以修改链接,但它无法访问博客id来提供特定于博客的链接,因为没有提供其他参数。我想我可以解析传递给过滤器的字符串中的现有链接,但这很不雅观:
add_filter(\'myblogs_blog_actions\', \'my_sites_links\');
function my_sites_links($links, $a, $b, $c) {
return "\\n"
. var_dump($links) . "\\n"
. var_dump($a) . "\\n"
. var_dump($b) . "\\n"
. var_dump($c) . "\\n";
有人对实现这一点有什么建议吗?