自定义帖子类型上的管理员指针

时间:2014-03-30 作者:Stephen

是否可以利用管理指针代码(核心、未发布的API)在自定义post类型上创建指针?我试图使用一个名为Easy Admin Pointers, 但它不支持自定义帖子类型上的指针,我在web上找不到任何可以使用自定义帖子类型的示例。有什么想法或建议吗?谢谢

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

好的,我找到了一个解决方案,其中一部分要感谢上面的用户kaiser。使用该函数的组合(在我的每个页面上查找信息),我就可以使用以下代码:

https://gist.github.com/brasofilo/6947539

把它放在一起,适当地填写指针。

这是我的整个过程:

第一:我编辑了/wp admin/post new。php在“/”Show post表单之后添加以下代码备注:

    $thisscreen = get_current_screen();
    var_dump($thisscreen);
这给了我在我的帖子新页面上每个自定义帖子类型所需的信息。

第二:然后,使用这些值(即“id”和“screen”),我将它们插入到github代码中。现在我可以得到限制在我的自定义贴子页面上的管理指针了!

再次感谢上面提到的kaiser,希望这能帮助其他有类似问题的人。也许有一种更简单的方法可以从相关页面获取ID和其他信息,而无需修改代码和转储变量,我将对此进行研究。

更新:呃,这比我之前认为的要简单得多。您不需要添加上面的代码来获取该信息(尽管很有趣),实际上您只需要“屏幕”,这可以通过自定义帖子类型的url轻松推断出来,即:

post-new.php?post_type=dispatches
其中“dispatches”是您的屏幕名称。我仍在努力解决如何将指针限制在编辑或新屏幕上,但我可以接受这一点。。。

第二次更新:可以使用目标限制到新屏幕,如:

\'target\'   => \'.post-new-php #insert-media-button\',
第三次更新(2014年5月25日):在使用此代码一段时间后,最终构建了一个部分基于此代码的插件(https://wordpress.org/plugins/better-admin-pointers/), 我意识到gist代码中有一个错误,它阻止了多个指针被正确地解除。如果页面上有多个指针,代码只会忽略它在页面上找到的第一个指针,而不是获取正确的项目。为了更正此问题,我更改了以下内容:

close: function() 
            {
                $.post( ajaxurl, 
                {
                    pointer: pointer.pointer_id,
                    action: \'dismiss-wp-pointer\'
                });
            }
对此:

close: $.proxy(function () {
$.post(ajaxurl, this);
}, {
pointer: pointer.pointer_id,
action: \'dismiss-wp-pointer\'
}),
现在,当一个页面上有多个指针时,它可以正常工作。

结束