首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >is_admin()在save_post钩子中使用Gutenberg编辑器返回false

is_admin()在save_post钩子中使用Gutenberg编辑器返回false
EN

WordPress Development用户
提问于 2020-03-08 19:59:20
回答 3查看 1.3K关注 0票数 1

我有一个插件,它实现了一个REST,当管理员将我支持的一个短代码添加到页面或post时,需要通知它。我用这样的函数把save_post挂起来。

代码语言:javascript
复制
        add_action( 'save_post', 'detect_shortcodes');

但是,当我从编辑器更新时,它会执行一个ajax调用来实例化我的插件。它所做的第一件事是确定是加载公共的还是像这样的管理挂钩。

代码语言:javascript
复制
    if(is_admin())
    {
        $this->define_admin_hooks();
    }
    else
    {
        $this->define_public_hooks();
    }

当然,我的detect_shortcodes函数在管理端。使用TinyMCE编辑器,它正确工作,并实例化了我的管理钩子。使用Gutenberg编辑器,is_admin()返回false。

是否有is_admin()的替代品可以用于Gutenberg调用?

EN

回答 3

WordPress Development用户

发布于 2020-05-25 20:56:17

您可以尝试使用以下方法来检测rest

代码语言:javascript
复制
if ( is_admin() || defined( 'REST_REQUEST' ) && REST_REQUEST ) {

}
票数 4
EN

WordPress Development用户

发布于 2020-03-09 04:21:02

我认为这个钩子应该管用:

代码语言:javascript
复制
function run_hooks( $post, $request ) {
    // Here you can run your hooks
}
add_action('rest_after_insert_post', 'run_hooks', 10, 2);
票数 0
EN

WordPress Development用户

发布于 2020-03-09 16:31:56

我在这次令人尴尬的黑客袭击中落地。我希望有人能改进这个答案,使它不那么脆弱。或者阅读分类法来找到当前的页面和文章的端点?

代码语言:javascript
复制
    $pagesajax = 'wp-json/wp/v2/pages';
    $postsajax = 'wp-json/wp/v2/posts';

    if(is_admin() || !empty($_SERVER['REQUEST_URI']) &&
        strpos($_SERVER['REQUEST_URI'], $pagesajax) !== false ||
        strpos($_SERVER['REQUEST_URI'], $postsajax) !== false)
    {
        ... load admin side ...
    }
票数 0
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/360279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档