【问题标题】:Pre-populate and disable select option based on choice in another select box in Admin centre根据管理中心另一个选择框中的选择预填充和禁用选择选项
【发布时间】:2013-07-29 02:58:35
【问题描述】:

我正在为我正在进行的项目开发一个事件管理插件,但我遇到了一个我真的不知道从哪里开始的问题!

基本上,我有两个选项选择下拉元字段,一个查找 Events 的 CPT 并使用以下代码使用该类型的帖子填充列表;

<select name="photo_event" id="photo_event"/>
        <option value="none">--- Select Event ---</option>
        <?php
            global $post;
            $args = array( 'post_type' => 'event' );
            $posts = get_posts( $args );
            foreach($posts as $post) : setup_postdata($post); ?>
            <option value="<?php echo $post->ID; ?>"> <?php the_title(); ?> </option>
            <?php endforeach; ?>

        </select>

另一个查找一个 Venues 类别,并使用以下内容用子类别(实际场地)填充列表;

<select name="photo_venue" id="photo_venue"/>
        <option value="none">--- Select Venue ---</option>
        <?php 
            $params = array(
            'type'           => 'post', 
            'child_of'   => 3,
            'hide_empty'     => 0
            );
            $categories=  get_categories($params); 
            foreach ($categories as $category) {
            $option = '<option value="'.$category->category_nicename.'">';
            $option .= $category->cat_name;
            $option .= '</option>';
            echo $option; }
        ?>  
        </select>

这些元字段附加到的 CPT 用于发布与 eventvenue 相关的实体(例如照片、促销材料、录制的混音等)。

现在,问题是:用户可能希望将实体附加到一个场所,在这种情况下,他们不会选择一个事件,而是将其保留为默认值“---选择事件- -" 在字段photo_event 中返回值none。这可以。

但是,由于每个活动只在一个场地举行,我想这样做,如果用户从活动帖子列表中选择一个活动,场地选项选择框将默认为举办该活动的地点(通过查找该活动的帖子信息,并从 event_venue 中为该特定帖子保存的值中选择适当的地点(event_venue 的元字段也查找相同的类别和子类别为photo_venue,因此全面的连续性[因此venue 过滤不会引发错误])并且删除所有其他选项(因此用户不能选择与该地点不同的地点活动举办地),或完全禁用该框,并在保存之前将 photo_venue 填入正确的地点。

如何解决?

【问题讨论】:

    标签: php wordpress select option custom-post-type


    【解决方案1】:

    这称为chained selections,您需要 Ajax 和 jQuery 才能使其工作。

    使用 jQuery,您将“聆听”照片事件下拉列表中的变化。每次更改都会分派一个 Ajax 调用,该调用为 Photo Venue 执行 PHP get_categories 命令,并且响应由 jQuery 处理,为 Venue 呈现一个新的下拉列表。

    我建议制作一个新插件以使这部分工作,并在确定后将其与主插件合并。以this Answer 为起点。

    您可以在此search query at WordPress Answers 中找到其他资源。

    【讨论】:

      猜你喜欢
      • 2011-08-17
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-31
      • 2016-10-06
      相关资源
      最近更新 更多