【问题标题】:Is it possible to pass a variable to 'get_search_form()' in Wordpress?是否可以在 Wordpress 中将变量传递给“get_search_form()”?
【发布时间】:2020-07-03 08:05:03
【问题描述】:

我已尝试阅读官方文档,但找不到此信息。

我正在开发一个自定义 Wordpress 主题,并且我在 searchform.php 文件中创建了一个搜索表单,该文件通过使用 get_search_form() 模板标签来调用。

我在主题的多个位置使用相同的表单;它具有相同的设计、相同的字段等等,它应该只对我希望在使用get_search_form() 调用它时作为变量传递的单个值有所不同。

有可能吗?如果不可能,那么最好的方法是什么,而不必复制整个 .php 文件只是为了有一个不同的值?

【问题讨论】:

  • 过滤器search_form_argsget_search_form 执行,因此您可以使用它在此时向数组添加其他参数。

标签: php wordpress templatetags


【解决方案1】:

我认为您可以将可选的 arg(最好是数组)传递给 get_search_form(),就像这样 get_search_form($options). 在函数内部,您可以执行以下操作:

似乎唯一合理的做法是挂钩函数。看看这个帖子:https://developer.wordpress.org/reference/functions/get_search_form/

或者你可以创建一个 $_SESSION 变量或一个 cookie 来存储你想要的值。根据位置,值会发生变化,您最终会得到一个看起来像这样的示例表单:

<form action="/" method="get">
    <label for="search">Search in <?php echo home_url( '/' ); ?></label>
    <input type="text" name="s" id="search" value="<?php the_search_query(); ?>" />
    <input type="image" alt="Search" src="<?php bloginfo( 'template_url' ); ?>/images/search.png" />
    <?php if(isset($_SESSION['your_value'])) : ?>
        <input type="hidden" id="additional_parameter" value="<?php echo $_SESSION['your_value']; ?>">
    <?php endif; ?>
</form>

【讨论】:

  • 是否有相关文档?据我所知,唯一的参数可能是“echo”和“aria_label”
  • get_search_form是已经存在的WP功能,不是自己写的可以随意修改的。
  • 是的,我误解了你的问题,但请检查一下 - 你可以使用 add_filter developer.wordpress.org/reference/functions/get_search_form 连接到该函数
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-19
  • 2012-12-02
  • 2022-11-20
  • 1970-01-01
  • 2020-10-11
相关资源
最近更新 更多