创建不能通过插件索引或访问的页面

时间:2012-08-24 作者:Axel

我正在用Wordpress创建相当复杂的网站。我将有一个页面模板,从其他页面收集数据,并在一个页面上显示它们。

这些页面只能在页面模板中使用,不应为搜索引擎编制索引或通过slug访问。

它们应该只充当数据的容器。

有没有办法做到这一点?

2 个回复
SO网友:OriginalEXE

为什么不使用php检查is\\u页面(页面id)并将其从该页面重定向到主url?

示例:

if (is_page(22)) {
  //php redirect them to the main url
} else {
  //normal template continues
}
编辑:

为了确保这一点,您可以使用is\\u page\\u模板检查。

if (is_page_template(templatename.php)) {
  //php redirect them to the main url
} else {
  //normal template continues
}

SO网友:kaiser

我假设/猜测您想构建某种HTTP接口,允许人们从您的服务中检索数据。

WordPress作为远程服务可以通过以下几种方式完成:构建一个模板,使用简单愚蠢的PHP函数(如json_decode() 或者SimpleXML

另一种选择是使用WebHooks - there\'s a plugin for that case: HookPress.

Webhooks是基于简单HTTP请求开发即时通知和mashup的简单范例。使用HookPress,您可以设置webhooks,以便在某些WordPress操作发生时请求指定的URL(公共服务或您设置的内容)。可能的用途包括生成推送通知或使用非PHP web技术扩展WordPress。

HookPress回购说明

你可以read more about WebHooks 在此网站上。即使有旧的出版日期,这些帖子仍然值得一读。

另一种选择would be the WP HTTP API 由WP core提供。

最后一个选项是RSS Feeds, 该WP也内置了。

私有模式下,WP有“私有”发布页面。您可以设置密码并使用post_password_required() - 假设您在页面上使用密码(在submitdiv/publish meta框中为私有),您可以在模板中对此提出疑问,并强制用户知道;在到达内容之前输入密码。

重定向

要重定向的正常挂钩是template_redirect 钩在那里,您可以正确、轻松地重定向人员:

function wpse62920_deny_access() 
{
    global $post;

    // Only for specific post types like \'post\', \'page\', \'some_custom_post_type\'
    if ( ! \'some_post_type\' === get_post_type() )
        return;

    // Your special file
    include_once( get_stylesheet_directory.\'some_template.php\' );

    // NEVER! forget to exit - else the default available WP template would jump in.
    exit;
}
add_action( \'template_redirect\', \'wpse62920_deny_access\' );

结束

相关推荐

多站点中的上下文问题-获取每个博客中的主站点数据(Get_Pages())

我在一个多站点上工作,所有的东西都经过配置,可以从仪表板上正常工作。现在,我正在尝试编写一个带有PHP文件的插件,该文件显示在站点中创建的页面列表,并显示给登录站点的管理员。下面是代码(简化)<?php require(\'../../../wp-load.php\'); ?> (some HTML) <?php $pages = get_pages();