我有麻烦试图传递一个额外的变量在url到我的WordPress安装。
例如/news?c=123
由于某些原因,它只在网站根目录www.example.com?c=123
上工作,但如果url包含更多信息www.example.com/news?c=123
,它就不工作了。我在主题目录下的functions.php文件中有以下代码。
if (isset($_GET['c']))
{
setcookie("cCookie", $_GET['c']);
}
if (isset($_SERVER['HTTP_REFERER']))
{
setcookie("rCookie", $_SERVER['HTTP_REFERER']);
}
有什么想法吗?
9条答案
按热度按时间svdrlsy41#
为了在“前端”上进行“WordPress之路”的往返(在
wp-admin
的上下文中不起作用),你需要使用3个WordPress函数:wp-admin
-所以这在admin-ajax
中也不可用)注意:如果你这样做,甚至不需要接触超全局变量(
$_GET
)。示例
在需要创建链接/设置查询变量的页面上:
在您的functions.php或某些插件文件或自定义类中(仅限前端):
在您希望检索和使用URL中设置的查询变量的页面/函数上:
在后端(
wp-admin
)在后端,我们从来不运行
wp()
,所以主WP查询不会运行。因此,没有query vars
,query_vars
钩子也不会运行。在这种情况下,您需要恢复到检查
$_GET
超全局的更标准的方法。虽然在紧要关头你可以做尝试和真实
或其一些变体。
mv1qrgav2#
有相当多的解决方案来解决这个问题。首先,你可以去一个插件,如果你想:
或者手动编码,看看这个帖子:
还可以查看:
add_query_arg
6uxekuva3#
由于这是一个经常访问的职位,我想张贴我的解决方案,以防它帮助任何人。在WordPress中沿着随着使用查询变量,你可以改变permalinks太像这样
为此,您必须在functions.php或插件基本文件中添加这些代码行。
发件人**shankhan's答复**
此外,这一裁剪添加自定义重写规则。
如果需要为特定页面添加重写规则,您可以使用该页面插件为该特定页面编写重写规则。就像OP所问的问题
我们可以通过对前面的函数进行一些修改来将其更改为所需的行为。
希望它能对某人有用。
ua4mk5z44#
在function.php中添加以下代码
那么您B好使用$_GET ['var 1']
fruv7luv5#
你可以添加任何页面来代替“news”。
oyjwcjzk6#
您可能会遇到的一个问题是,当注册的query_var出现在home URL中时,
is_home()
返回true。例如,如果http://example.com
显示静态页面而不是blog,则http://example.com/?c=123
将返回blog。请参阅https://core.trac.wordpress.org/ticket/25143和https://wordpress.org/support/topic/adding-query-var-makes-front-page-missing/以取得更多信息。
你可以做的是使用
add_rewrite_endpoint()
(如果你不想影响查询的话)。它应该在init
操作期间运行,因为它会影响重写规则。当url包含更多信息(如
www.example.com/news?c=123
)时,这应该可以给予您访问$_GET['c']
。添加/修改后,请记住刷新重写规则。
mm5n2pyu7#
要添加参数到post url(到永久链接),我使用以下命令:
输出:
http://yoursite.com/pagename?my_pid=12345678
7lrncoxx8#
这是我唯一能让它工作的方法
http://codex.wordpress.org/Function_Reference/add_query_arg
3ks5zfa09#
在您的情况下,只需在url后添加/,然后放置查询参数。
www.example.com/news/?c=123
或news/?c=123
代替
www.example.com/news?c=123
或news?c=123