将值作为隐藏参数传递到下一页

时间:2013-09-08 作者:Umesh Awasthi

我试图在WordPress中将值从一个页面发送到另一个页面,因为我不想重复在另一个页面中获取该值的逻辑。我对WordPress/PHP不是很精通,如果我必须在Java中这样做,我将创建一个隐藏字段并将该值传递给服务器端代码,然后可以再次将其设置为请求参数,但不知道如何在PHP的帮助下在WordPress中实现这一点。

我在右侧导航面板上有一个页面和一个链接“查看更多信息”,一旦用户单击链接,他/她将被重定向到另一个页面,但我需要根据父页面的值显示信息

用户正在根据某些重写规则重定向,我从使用get_query_var().

我可以通过添加该参数作为查询参数来实现这一点,但我不想更改正在生成的当前URL。

以下是有关我的用例的更多信息:

我工作的网站与旅行相关,我在其右侧栏的几页上显示目的地建议,对于UI布局,我没有显示所有建议,但很少有人说“10”,然后我会给出一个链接,说“检查所有建议”。

当用户登陆到某个页面时,我正在获取分配给该帖子的类别,可以有多个类别,比如

因此,根据这些类别,我向他们显示建议,因此当用户单击时,我希望将此类别信息传递到下一页,以便我可以向他们显示符合条件的目的地列表。

除了在会话中设置值之外,还有其他方法可以将值传递给新页面吗?

1 个回复
SO网友:gmazzap

只需使用$_POST 变量将术语设置为处理建议的页面,并使用钩子pre_get_posts 设置查询。

我编写了一个输出链接的函数,您可以将其用作模板标记。

将此函数添加到插件或functions.php

function more_recomentation_link() {
  if ( ! is_single() && ! is_page() ) return;
  $post = get_queried_object();
  $cats = wp_get_object_terms( $post->ID, \'category\', array(\'fields\' => \'ids\') );
  if ( ! empty($cats) ) {
    // I don\'t know which is the url that handle the recomandation showing
    // so I use home_url() change it with rigth url
    echo \'<form method="post" action=\'. home_url() . \' id="see-more-form" style="display:none">\';
    foreach ( $cats as $cat ) {
      echo \'<input type="hidden" name="cats[]" value="\' . $cat. \'" />\';
    }
    echo \'</form>\';
  }
  echo "<a href=\'javascript:void(0)\' onclick=\'document.getElementById(\\"see-more-form\\").submit();return false;\'>" . __(\'See More\') . "</a>";
}

function set_recomendations_query( $query ) {
  if ( ! is_admin() && is_main_query() && isset($_POST[\'cats\']) && ! empty($_POST[\'cats\']) ) {
    $tax_query = array(
      \'taxonomy\' => \'category\',
      \'field\' => \'id\',
      \'terms\' => $_POST[\'cats\']
    );
    $query->set(\'tax_query\', array($tax_query));
    $query->set(\'posts_per_page\', -1);
  }
}
add_action(\'pre_get_posts\', \'set_recomendations_query\');
在模板中,甚至在侧栏中,只需使用

<p><?php more_recomentation_link(); ?></p>

结束