从下拉菜单中获取类别的ID

时间:2013-12-03 作者:ultraloveninja

我正在尝试从中获取类别IDwp_dropdown_categories();然后将ID传递到一个循环中,让它输出该特定类别的帖子标题。

我目前有:

   <form action="<?php bloginfo(\'url\'); ?>" method="get">
        <?php wp_dropdown_categories(); ?>
    </form>
        <div class="cat-list">
                <ul>
                <?php 
                global $post;
                $args = array( \'posts_per_page\' => 5, \'category\' => $_GET[\'value\']);
                $myposts = get_posts( $args );
                foreach ( $myposts as $post ) : 
                  setup_postdata( $post ); ?>
                <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
                <?php endforeach;
                wp_reset_postdata(); ?>
                </ul>

        </div>
但它并没有从$_GET[\'value\'] 我不知道我需要做什么才能让它将该ID传递给数组。

最后,我希望它能够在您选择其他类别时显示与所选类别相关的帖子。但我想我应该先让select开始工作,然后再继续。

3 个回复
SO网友:Nicolai Grossherr

使用form, 你唯一缺少的是,你必须提交你选择的内容。例如:

<form method="GET" action="">
    <div>
        <?php
            $select = wp_dropdown_categories(\'show_option_none=Select category&orderby=name&echo=0\');
            $select = preg_replace("#<select([^>]*)>#", "<select$1 onchange=\'return this.form.submit()\'>", $select);
            echo $select;
        ?>
        <noscript>
            <div>
                <input type="submit" value="View" />
            </div>
        </noscript>
    </div>
</form>
代码改编自example section of the wp_dropdown_categories() codex page, 还有其他的例子,看一看。我改变了一件事,表单操作是空的,因为我们想留在页面上
您想要的变量是$_GET[\'cat\']; 此外,通过查看浏览器地址栏,您可以直观地看到,现在有类似的内容?cat=1, 选择类别后的查询字符串。如果不想显示查询字符串,实际上可以将form方法更改为POST 变量为$_POST[\'cat\'].

<小时>Edit:

在主页上,这将重定向到类别存档,因为wordpress会对查询字符串作出反应cat. 在这种情况下,您必须添加name 参数到wp_dropdown_categories() 并选择一个唯一的名称,在上面的示例中,如下所示:

wp_dropdown_categories(\'show_option_none=Select category&orderby=name&echo=0&name=uniquename\');
这导致变量名为$_GET[\'uniquename\']$_POST[\'uniquename\'].

<小时>2nd Edit:

在第一页加载时,没有设置$\\u GET[\'uniquename\']变量,因此您的GET\\u posts查询将使用空值操作,这将导致显示所有post。要防止这种设置,请使用如下所示的变量,并在参数数组中使用它。

$gp_cat = (isset($_GET[\'uniquename\']) ? $_GET[\'uniquename\'] : \'5\');
$args = array( \'posts_per_page\' => 5, \'category\' => $gp_cat);

SO网友:Innate

这个$_GET[\'value\']NAME 属性SELECT. 可以使用更改选择名称name parameterwp_dropdown_categories() 功能也一样。使用print_r($_GET); 查看表单提交的值,然后在get_posts() 查询

SO网友:user3205219

您可以在下拉列表中打印您的id echo$termss->term\\u id

    $terms = get_terms( \'category\', array(
    \'hide_empty\' => false,
    \'order_by\' => \'name\',
    \'order\' => \'ASC\',
    \'number\' => 0,
    \'taxonomy\' => \'category\'
) );

     //print_r($terms);

     foreach($terms as  $termss)
    {
    //echo "<br/>";
     //echo $termss->term_id;
        //echo "<br/>";
        ?>
    <h1> echo $termss->term_id</h1>
     <?php 
        //echo "<br/>";
      //echo $termss->slug;
      }

结束