php - 传递 WordPress 类别下拉列表中的选定值

标签 php jquery wordpress post custom-wordpress-pages

我有一个自定义分类法,并且在存档页面中添加了一个类别下拉列表,以允许用户在类别之间快速切换。我有以下代码,可将用户重定向到他们选择的新类别。但是,下拉列表始终默认为 <select> 中的第一个选项。 。我怎样才能通过选定的<option>通过并将其设置为用户切换类别时的默认值?

<?php
$args = array(
  'taxonomy'     => 'custom_taxonomy',
  'orderby'      => 'name',
  'show_count'   => 1,
  'hierarchical' => 1,
  'title_li'     => 'title'
);

<form id="categoriesform" action="<?php bloginfo('url'); ?>" method="post">
    <div>
        <?php $cats = get_categories($args); ?>
        <select id="categories" name="custom_taxonomy">
            <option value="allCategories">All Categories</option>
            <?php foreach ($cats as $cat) : ?>
                <option value="<?php echo get_term_link($cat, $cat->taxonomy) ?>">
                <?php echo $cat->name ?></option>
            <?php endforeach; ?>
        </select>
    </div>
</form>
<script>
jQuery(document).ready(function() {
    jQuery('#categories').change(function() {
        if (jQuery(this).val() == 'allCategories') {
            window.location = 'http://example.com/all-categories';
        } else {
            window.location = jQuery(this).val();
        }
    });
});
</script>

最佳答案

首先,您需要通过 get_queried_object()->term_id; 获取当前类别 ID,然后检查并添加所选选项。

<?php
 $current=get_queried_object()->term_id;
$args = array(
 'taxonomy'     => 'custom_taxonomy',
 'orderby'      => 'name',
 'show_count'   => 1,
 'hierarchical' => 1,
 'title_li'     => 'title'
);

<form id="categoriesform" action="<?php bloginfo('url'); ?>" method="post">
<div>
    <?php $cats = get_categories($args); ?>
    <select id="categories" name="custom_taxonomy">
        <option value="allCategories">All Categories</option>
        <?php foreach ($cats as $cat) : ?>
            <option <?php echo ($current == $cat->term_id ? 'selected' : ''); ?> value="<?php echo get_term_link($cat, $cat->taxonomy) ?>">
            <?php echo $cat->name ?></option>
        <?php endforeach; ?>
    </select>
</div>
</form>
<script>
jQuery(document).ready(function() {
   jQuery('#categories').change(function() {
    if (jQuery(this).val() == 'allCategories') {
        window.location = 'http://example.com/all-categories';
    } else {
        window.location = jQuery(this).val();
    }
});
});
</script>

关于php - 传递 WordPress 类别下拉列表中的选定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44488958/

相关文章:

php - MySQLi 在 where 子句中使用 date(now()) 进行连接

php - 在库文件codeigniter中加载不同的数据库

jquery - 如何淡入 jQUery 中的背景图像变化?

jquery - 通过带有javascript的按钮显示隐藏的html

php - 通过 SQL 检索带有特色图片的 wordpress 帖子

javascript - 为什么 php 函数 str_word_count() 返回与等效的 js 不同的计数?

php - 在 Woocommerce 单个产品页面中显示产品价格上方的自定义字段

javascript - 为什么我的 jQuery Flex Slider 没有暂停?

wordpress - Google Pagespeed Insight : "Optimize CSS Delivery of the following". 如何?

wordpress - 如何在 Apache 中为 Wordpress Bitnami Amazon-Ligthsail 实例禁用 TLS 1.0 和 1.1 以仅启用 TLS 1.2 和 TLS 1.3?