更温和的挂接WordPress定制URL的方式

时间:2012-11-19 作者:Howard

我写了一个插件,名为foo, 当用户键入url时/hello 它将显示字符串world

an existing post 它使用以下代码

if ($_SERVER["REQUEST_URI"] == \'/hello\') {
  echo "world";
  die;
}
但这是黑客行为,因为它会立即终止。例如,它忽略shutdown

是否有更好的方法允许我打印输出并优雅地遵循操作生命周期?

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

因此,在设置WordPress应该返回的内容之前,您似乎希望尽可能晚些时候返回(在某些情况下,例如sitemap.xml 正在请求)。

有两种方法大致相同,但使用WordPress API的程度不同。

同样的原则适用于几乎任何内容格式(JSON、ICAL等),而不仅仅是XML

方法1:添加提要:

这样做的好处是WordPress可以立即“识别”请求。不幸的是,它在url中留下了“feed”,这可能是/可能不是你想要的。例如,对于ICAL日历,我认为这种方法效果很好;

add_action(\'init\',\'eventorganiser_public_export\');
function eventorganiser_public_export(){
    add_feed(\'wpse73174\', \'wpse73174_content_callback\');    
}
然后输出由wpse73174_content_callback() 并可在www.example.com/feed/wpse73174/ (取决于permalinks)。

方法2:手动方法redirect_template 行动由您在此处决定查询是否针对您将要提供的内容:

add_action(\'template_redirect\',\'maybe_wpse73174_content_callback\');
function maybe_wpse73174_content_callback(){
   if( /* we are after this content */ ){
         wpse73174_content_callback();
   }
}
现在的问题是决定用户是否请求您的内容。您需要添加自己的重写规则/永久结构和查询变量来识别查询。(对于JSON内容,添加端点非常好)。你可能会发现这些articles written by me at WP.Tuts 相关的

回调函数wpse73174_content_callback() 需要设置标题(如果合适),打印内容,然后exit();

function wpse73174_content_callback(){
  echo \'Hello World\';
  exit();
}

结束

相关推荐

如何在自定义POST类型的查询中使用插件中的文件来替代single.php?

我正在使用自定义插件创建自定义帖子类型。自定义帖子类型的一个要求是在表格布局中显示,以便打印/发送电子邮件。对于这种情况,合理的解决方案似乎是在插件中包含一个特定的模板文件,该模板文件将用于单个自定义Post类型查询,而不是单个。php/索引。主题中提供的php。我如何使用插件中的文件替换单个插件。php/索引。php上的单一自定义post类型查询?提前谢谢你。