【问题标题】:how to hide a page from being seen in wordpress backend and frontend如何在wordpress后端和前端隐藏页面
【发布时间】:2014-07-27 20:51:44
【问题描述】:

在我的插件中,我创建了一个自定义模板来打印请求的侧边栏。为了运行此模板的代码,我为其分配了一个自定义页面(通过调用 update_metadata)。
将特定侧边栏的内容导入 Ajax 调用是否是个好主意?
现在我的问题是 WORDPRESS 在仪表板和首页中显示它,搜索后我没有找到任何易于理解的完全隐藏页面的解决方案,因此只能通过其 id 访问。
谁能告诉我该怎么做?

【问题讨论】:

  • 如果您无法在管理区域访问该页面,创建一个页面有什么意义?
  • 它只打印动态侧边栏的内容,然后我通过 Ajax 调用获取该页面的内容。
  • 我认为您正在寻找的功能称为虚拟页面,这意味着您可以捕获插件查询并输出响应,而无需创建页面。
  • 是的,如果可能的话。但是对于调用函数 dynamic_sidebar 我认为我们需要运行 WORDPRESS 核心不是真的吗?
  • 还有另一个 PHP 特性叫做对象缓冲,通过这个特性我们可以将一个 php 文件的输出存储在 server 中。但是该功能在某些共享主机中被禁用,我根本不想使用它。谢谢

标签: wordpress


【解决方案1】:

你以错误的方式解决这个问题。您可以创建一个函数,该函数可以创建可以在 wordpress 页面上创建的任何内容。

但如果你真的需要,你可以在数据库之外创建一个页面,等等:

add_action('init', 'add_rewrite_rule');
function add_rewrite_rule(){
   // add_rewrite_rule(REGEX url, location, priority (i.e. top is before other rewrite rules)
   // I created a custom post type for this plugin called market -- replace post_type with whatever you want 
   //basically tell wordress to add a query var if sidebar is added to url.
   add_rewrite_rule('^sidebar?','index.php?is_sidebar_page=1&post_type=market','top');
}

// register a query var
add_action('query_vars','market_set_query_var');
function market_set_query_var($vars) {
    array_push($vars, 'is_sidebar_page');
    return $vars;
}

// associate a template with your quer_var 
add_filter('template_include', 'market_include_template', 1000, 1);
function market_include_template($template){
    if(get_query_var('is_sidebar_page')){
       $new_template = (theme or plugin path).'/pages/yourpage.php'; // change this path to your file 
    if(file_exists($new_template))
        $template = $new_template;
    } 
return $template;
}

这不会是管理部分或与页面相关的任何查询中的页面,但当然有人可以导航到此页面。但正如我上面所说,你最好创建一个函数来创建你的侧边栏。如果您想要一个单独的文件来处理“视图”,请使用 require_once 'filename';一个文件并保持您的功能区域没有 html。

如果您在 wordpress 插件中创建函数,请不要忘记许多函数可能在加载过程的后期才可用。如果遇到任何未定义的函数,请使用 add_action()

编辑:

您在访问模板之前加载 wordpress,因此您拥有所有功能。 (谷歌 wp 加载更多信息)+ get_header() / get_footer() 还将加载一些东西,如 css 等。我在上面的代码中有一个小错字,已修复,但基本上你正在做的是告诉 wordpress 如果有人登陆 www.example.com/sidebar 以应用 query_var(重写规则)。 Wordpress 将查找其保存的变量(最终函数)并返回模板关联。第二个函数只是注册 var。

您创建的任何文件中也有 wp_functions 并包含在插件等中,因此您可以创建一个与此页面完全相同的文件。

【讨论】:

  • 感谢您提供这个有用的答案,但我有几个问题。制作一个页面不是更好吗(因为这样我可以访问所有 WORDPRESS 功能,而不仅仅是侧边栏或特定功能)?你能告诉我更多关于你所说的功能吗?
  • 在上面的代码中,WORDPRESS 如何理解当前 URL 应该加载哪个文件?
  • 嗨,我编辑了我的答案,为您提供了更多信息!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-23
  • 1970-01-01
  • 2021-06-11
  • 1970-01-01
  • 2013-02-03
相关资源
最近更新 更多