使用选项值来过滤wordpress循环

时间:2015-06-10 02:36:38

标签: javascript php forms wordpress

我不确定这是否是正确的方法,但我创建了一个带有一些选项的表单,用作过滤Wordpress循环的触发器。我没有设置保存任何表单信息。

<form id="options" method="POST">

<p>Date Started</p>
<select name="date-started">
  <option value="any-date">Any Date</option>
  <option value="2015">2015</option>
  <option value="2014">2014</option>
  <option value="2013">2013</option>
  <option value="2012">2012</option>
</select>

</form>  

我想使用选择来按元数据过滤Wordpress循环。我有一个可以进行过滤的工作片段。

/* Filters the loop by custom meta data 
https://codex.wordpress.org/Class_Reference/WP_Query#Parameters
*/

function comic_start_date( $query ) {
    if ( $query->is_archive){
      $query->query_vars["meta_key"] = 'date-started';
      $query->query_vars["meta_value"] = '2015';
    }
}
add_action( 'pre_get_posts', 'comic_start_date', 1 );

但是,我不知道如何将其连接到所选的选项。

我见过如下声明:

<?php if ($(("option[value='completed']")){//do something}?>

<?php if($ceg==1){//do something} ?>

<?php if($(this).value == 'volvo'){//do something} ?>

但是,我无法将这些功能结合在一起。也许我以错误的方式使用它们。

作为奖励,我希望从选项值中选择过滤函数变量并选择名称。我不确定这是否可行。我愿意接受一份有效的陈述。

1 个答案:

答案 0 :(得分:0)

我找到了答案

这是有效的if语句:

这使用select标记中的名称和要定位的选项的值。

if ($_POST["date-started"] === '2008') {}

这是在我的过滤器周围显示的:

function date_started_2008( $query ) {
if ( $query->is_archive){
  $query->query_vars["meta_key"] = 'date_started';
  $query->query_vars["meta_value"] = '2008';
}
}
if ($_POST["date-started"] === '2008') {
add_action( 'pre_get_posts', 'date_started_2008', 1 ); }