根据url更改现有页面内容

时间:2018-02-03 作者:321zeno

我创建了一个stuff WP中的页面。

当用户访问时stuff/foo, 我想从API获取一些数据,并将其附加到stuff

到目前为止,我已经尝试:

钩住the_content 筛选,但它不起作用,因为wp已经确定该页面不存在,并返回404init_query_var 并将内部查询重置为$query->set(\'pagename\', \'stuff\'). 但是,这会迫使WP重定向到/stuff 第页

2 个回复
SO网友:Eduardo Escobar

我相信这对你有用:

创建一个名为“stuff”的“页面”,然后创建另一个名为“foo”的页面,现在将其作为“stuff”的子页面stuff/foo 将存在,而不是404。

最终使用the_content 过滤并进行所需的数据操作。

另一种选择(艰难的方式)是pre_get_post 钩子,这样你就可以让wordpress相信它真的是被请求的“foo”页面,并避免404。

SO网友:Darren Coutts

可以这样做的一种方法是使用一个短代码,该代码取决于传递的参数。

例如,使用

https://codex.wordpress.org/WordPress_Query_Vars

允许将参数传递到页面中。ie:

function add_query_vars_filter( $vars ){
  $vars[] = "query";
  return $vars;
}
add_filter( \'query_vars\', \'add_query_vars_filter\' );
Rewrite Rules 可用于删除查询字符串并创建假页面foo/bar

然后可以创建short code 这将根据这个查询变量从api中提取数据。

例如:[display-content] 可能使用查询字符串baz 从api中提取内容。baz 将通过重写规则设置,该规则将屏蔽?baz= url中的元素。

结束

相关推荐

如何从Get_Pages()中排除作者

我正在尝试按作者筛选wp\\u dropdown\\u pages函数的结果,以下是我到目前为止得到的结果。$dropdown_args = array( \'post_type\' => $post->post_type, \'exclude_tree\' => $post->ID, \'selected\' => $post->pos