2013-07-29 91 views
0

我正在为正在开发的项目开发事件管理插件,并且遇到了一个我并不真正了解的问题从哪里开始!根据管理中心另一个选择框中的选项预先填充并禁用选择选项

基本上,我有两个选项选择下拉元字段,其中一个查找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> 

而另查找一个场地类别并填充使用下面的子类(实际场地)的列表;

<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保存前的正确地点。

如何解决这个问题?

回答

1

这叫做chained selections,你需要Ajax和jQuery来使它工作。

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

我建议制作一个新的插件只是为了让这部分工作,并将其与主插件合并后,一旦它没事。使用this Answer作为起点。

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

相关问题