将(博客特定的)链接添加到“我的网站”管理页面

时间:2013-04-05 作者:Synetech

“我的网站”管理页面只有指向网站仪表盘和生产页面的链接,价值有限。我正试图找到一种方法,向它们添加更有用的链接,如新帖子、草稿和评论,以便使该页面成为一个实用的中央管理位置(这样,我就不必使用几年前与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";
有人对实现这一点有什么建议吗?

1 个回复
最合适的回答,由SO网友:phpdew 整理而成
function my_sites_links($links, $a, $b, $c) {
global $user_blog; 
$user_blog->userblog_id;
}
结束