首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >完全隔离插件视图,使其不加载主题

完全隔离插件视图,使其不加载主题
EN

WordPress Development用户
提问于 2019-03-15 19:24:36
回答 1查看 142关注 0票数 0

我们正在制作一个WordPress插件,它用一个短代码生成一个iframe,并且不管它在哪个站点、页面或主题上使用,iframe都应该工作并显示相同的内容。视图位于插件文件夹中的URL。

同样,插件的样式和脚本不应该影响整个站点。

我不知道怎样才是正确的隔离方式。一种方法是不使用wp_head()wp_footer(),直接将样式和脚本放在HTML中,而不是对它们进行排队。

这是可行的,但我不禁想知道,是否会有更好的"WordPress方式“来做到这一点。

我还想只在这个URL上对每个脚本和样式表进行大规模的排队,但是主题仍然可以使用钩子注入任意的HTML。

什么是正确的方法,以获得一个“干净的板子”工作为我的插件页面?

EN

回答 1

WordPress Development用户

发布于 2019-03-17 05:51:02

最好不要直接加载插件URL (除非它是公共URL,并且您可以以查询字符串的形式传递所需的任何数据),因为这使得加载WordPress和访问任何存储的数据变得困难(因为路径并不总是可确定的),而是:

  1. 通过查询字符串加载视图,并在WordPress load或
  2. 类似,但将其添加到AJAX操作querystring函数中。

选项1.通过/any-page/?my-action=trigger

代码语言:javascript
运行
复制
add_action('init', 'my_plugin_view');
function my_plugin_view() {
    // check for querystring trigger
    if (!isset($_REQUEST['my-action']) || ($_REQUEST['my-action'] != 'trigger-value')) {return;}

    if (!is_user_logged_in()) {
       wp_die('You need to be logged in to do this.');
    } else {
        // ... plugin view output code ...
    }
    exit;
}

选择2.通过/wp-admin/admin-ajax.php?action=my_plugin_view

代码语言:javascript
运行
复制
// logged in users
add_action('wp_ajax_my_plugin_view', 'my_plugin_view');

function my_plugin_view() {
    // ... plugin view output code ...
    exit;
}

// logged out users (optional) 
add_action('wp_ajax_nopriv_my_plugin_view', 'my_plugin_view');
function my_plugin_logged_out_message() {
    wp_die('You need to be logged in to do this.');
}

如您所见,所使用的目标URL以及注销用户的处理方式存在差异(如果需要,在本例中假定用户必须登录,但对于完全公开的视图来说,这种区别并不是必要的)。

这两种方法都是可行的选择,但可能AJAX方法是更常见的"WordPress方法“。当然,任何插件脚本和样式都需要直接添加到输出中,而不是正常地排队。

参考资料:插件中的AJAX

票数 1
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

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

复制
相关文章

相似问题

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