使用选项值过滤wordpress循环


Using option value to filter wordpress loop

我不确定这是否是正确的方法,但我已经创建了一个带有一些选项的表单,用作过滤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} ?>

然而,我还没有能够使这些功能在一起。也许我用错了方法。

作为奖励,我希望从选项值和选择名称中获取过滤器函数变量。我不确定这是否可能。

我找到了答案

这是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 ); }