将WordPress变量传递到下一页

时间:2019-03-11 作者:Adrien Parad

我想在下一页中传递一个类别名称。我正在使用会话。在函数中。我添加的php:

function session_initialize() {

if ( ! session_id() ) {
    session_start();
}
}
add_action( \'init\', \'session_initialize\' );
在一个页面(index.php)中,我添加了:

$term = $wp_query->queried_object;
$cat_title = $term->name;
$_SESSION[\'varname\'] = $cat_title;
在下一页(single.php)中,我添加了:

<?php if ( isset( $_SESSION[\'varname\'] ) ) { echo $_SESSION[\'varname\'];}; ?>
但它不会将任何值传递给下一页。如果我在索引中将代码更改为此。php尽管如此,它仍然有效:

$_SESSION[\'varname\'] = "example";
谢谢你的帮助。

1 个回复
SO网友:tmdesigned

如果它使用的是文本字符串(“示例”),而不是变量,那么我们可以假设问题出在您的变量上。

您尚未提供索引该部分的所有代码。php,但我认为您不能期望该变量包含任何内容。

首先,您使用的是$wp\\u查询。这个变量是什么?有一个全局变量$wp\\U查询,但必须首先通过global $wp_query. 你在这么做吗?

其次queried_object 保存有关查询对象的信息,有时可以是帖子,有时是类别等。这些对象具有不同的属性,因此您编写代码的方式不是特别可靠。

如果您希望某个页面是该对象,那么该页面内部应该有一个WP\\u Post对象。具有名为post_name 而不是名称。

获取后段塞的更简单方法是:

$slug = get_post_field( \'post_name\' );

然而,看起来您可能正在尝试获取一个类别,它确实具有name 所有物但是,如果查询的对象是一个页面(就像您使用的首页一样),则它不会保存类别,而是保存页面。

如果您在循环中,我会使用:

$categories = get_the_category(); //this gives you an array of term objects

您可以决定是只通过其中一个类别(一篇文章可以有多个类别),还是全部通过。数组中的每个项都有“name”属性,您可以轻松地发送该属性。

无论如何,我希望这能让您更接近您所寻求的解决方案。

相关推荐

使用wp_Dropdown_Categories($args)的输出

请温柔点,我对所有这些编码都是新手!我终于找到了如何获得前端下拉字段,允许我从EDD类别中进行选择(我从Codex中获得):<div class=\"gallery-row\"> <li id=\"categories\"> <h2><?php _e( \'Categories:\' ); ?></h2> <form id=\"category-select\" class=\"category-