我一直在网上寻找我需要的东西,但我没有找到任何相似的东西,甚至不相似,问题是:
我得到了一个简单页面帖子类型的页面模板,比如“水果”,然后在这个模板中,我调用了一个Web服务,它将带回具有特定描述的所有水果,其url是www.mydomain。玉米/水果/
我不是用这些信息填充Wordpress数据库,而是从外部服务获取这些信息,我想在Wordpress模板设计中使用详细信息导航内容,所以我需要的是能够单击“orange”,所以我会创建如下链接:
www.mydomain。com/fruits/orange/>这将是我未注册的permalink
这个不存在的永久链接将立即将我重定向到404模板页面,它将在wp\\u查询对象中分类为“404”=true,我希望避免wordpress将其处理为404,并调整其内部以将此请求发送到将显示orange详细信息的自定义模板。
如果你知道我可以使用哪个不涉及WP\\U重写的钩子(我尝试了各种组合,但都没有成功),我将永远感激你。
提前谢谢。
最合适的回答,由SO网友:Milo 整理而成
正如我在评论中所暗示的,我将使用重写API来处理这一问题,特别是adding a rewrite endpoint. 这样,您就不必计算出实际的404是什么,以及对动态生成的页面的请求是什么。它并没有给出您在问题中的URL结构,但我认为这是一个合理的折衷方案。
首先,我们添加重写端点。在这个例子中,我使用了type
, 所以你的URL应该是/fruit/type/orange/
:
function wpa_rewrite_endpoint(){
add_rewrite_endpoint( \'type\', EP_PAGES );
}
add_action( \'init\', \'wpa_rewrite_endpoint\' );
现在,在模板中,您可以检查
type
已设置,您将知道如何从webservice获取该关键字:
if( $requested_type = get_query_var( \'type\' ) ){
// pass $requested_type to webservice
}
您可能还想调查
Transients API 对于本地缓存数据,如果您得到了大量点击,并且额外的http请求会减慢速度。