如何在编辑帖子屏幕上更改标题URL?

时间:2015-02-17 作者:Kobus Beets

我在不同的地方进行了搜索,正在努力寻找以下内容的正确位置或术语。

我只是以帖子为例。

当你在wp admin中查看所有帖子时,你会得到帖子的标题,下面是编辑、快速编辑、垃圾和预览链接。通过使用post\\u row\\u actions操作挂钩,我可以更改标题下的链接,但不能更改标题本身上的链接。

是否有其他方法可以更改帖子标题上的链接以打开其他url?或者我可以用同样的钩子换吗?

我正在开发前端内容管理屏幕,希望将所有编辑链接指向网站的正面。

非常感谢:)

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

使用get_edit_post_link filter.

add_filter(\'get_edit_post_link\', \'get_edit_post_link_178416\', 99, 3);

function get_edit_post_link_178416($link, $post_id, $context) {
    $scr = get_current_screen();

    if ($scr->id == \'edit-post\' && $context == \'display\') {
        return \'http://google.com\';
    } else {
        return $link;
    }
}
你可以看到它被使用了here

SO网友:geomagas

我正在开发前端内容管理屏幕,希望将所有编辑链接指向网站的正面。

如果要将所有编辑链接指向FE,应选择get_edit_post_link 过滤解决方案(参见Marko的答案)。这将涵盖核心或插件调用的所有情况get_edit_post_link().

但是,如果您想实现“适当的”前端内容管理,您应该超越这一点。我见过一些插件绕过API,对编辑帖子url计算进行硬编码。此外,用户总是有可能键入管理员url并登录到默认的edit post admin屏幕。

因此,我认为您应该将默认的后期编辑url重定向到前端:

add_action(
    \'admin_init\',
    function()
        {
        global $pagenow;
        if($pagenow==\'post.php\'
          && isset($_GET[\'action\']) && $_GET[\'action\']==\'edit\'
          && isset($_GET[\'post\']))
            {
            $post_id=$_GET[\'post\'];
            // calculate $fe_edit_screen using $post_id
            wp_redirect($fe_edit_screen);
            exit;
            }
        },
    1
    );
这样,每个人都将被重定向到您的前端,无论他们最终如何访问后期编辑屏幕。此外,您可以添加更多的检查,例如,如果您只想重定向具有(或不具有)特定功能的用户,或者只针对特定的帖子类型,或者其他任何类型的用户。

结束

相关推荐

Show recent published posts

我想列出最近published 我的wp博客的帖子,并排除某些类别的帖子。以下代码运行良好,列出了10篇最近发表的文章,忽略了列出类别中的文章。然而,草案员额也被列出。$args = array( \'numberposts\' => \'10\', \'tax_query\' => array( \'post_type\' => \'post\', \'post_status\' => array( \'publish\' ),&#x