将MULTIZE=“MULTICE”属性添加到类别下拉列表

时间:2014-02-14 作者:mr.j.sparrow

我有一个常规选择的下拉列表。我需要一个多选下拉列表。我在里面添加了JavaScript脚本文件header.php, 现在我需要添加字符串multiple="multiple".

在firebug I中multiple = "multiple" 在字符串中

enter image description here

现在我需要添加字符串multiple="multiple" 但我不知道该怎么做:

<?php 
  $terms = wp_get_post_terms( $post->ID,"listing_category" );
  $terms = isset($terms[0]) ? $terms[0]->term_id : "";

  if(get_field("custom_attributes_input_types","options") == "Dropdowns"):
    wp_dropdown_categories( 
      array( 
        \'taxonomy\' => \'listing_category\', 
        \'hiera`enter code here`rchical\'=>1, 
        \'show_option_none\'=>__(\'Choose Category:\',\'um_lang\'), 
        \'name\' => \'listing_category\', 
        \'hide_empty\' => false, 
        \'selected\' => $terms
      )
    );
  else:
?>

1 个回复
SO网友:kaiser

看看wp_dropdown_categories(). 它使用walk_category_dropdown_tree() 渲染输出。就在那之后a filter named wp_dropdown_cats 允许更改最终标记:

$output = apply_filters( \'wp_dropdown_cats\', $output );
现在可以使用Regex和preg_replace 或者使用DOMDocument, 等

请记住,您应该更改select 元素Name 属性-否则您将无法保存数组。示例:

<select multiple name="foo[]" ...>
但您仍需要更改walker 并重写Walker本身。可以读取原因in Walker_CategoryDropdown::start_el:

if ( $category->term_id == $args[\'selected\'] )
    $output .= \' selected="selected"\';
正如您所看到的,当前它只检查单个值,而不是数组。因此,基本上需要对阵列进行检查。检查数组的重写方法示例:

public function start_el( &$output, $category, $depth = 0, $args = array(), $id = 0 ) {
    $pad = str_repeat(\'&nbsp;\', $depth * 3);

    $cat_name = apply_filters(\'list_cats\', $category->name, $category);
    $output .= "<option class=\\"level-{$depth}\\" value=\\"{$category->term_id}\\"";

    # >>> HERE WE GO:
    if ( in_array( $category->term_id, $args[\'selected\'] ) )
        $output .= \' selected="selected"\';

    $output .= \'>\';
    $output .= $pad.$cat_name;
    if ( $args[\'show_count\'] )
        $output .= "({$category->count})";
    $output .= "</option>";
}
将上述方法放入扩展的新类中Walker_CategoryDropdown 并将新的Walker类作为参数放入args数组中wp_dropdown_categories():

wp_dropdown_categories( array(
    \'walker\'   => new Custom_Walker_CategoryDropdown
    \'selected\' => get_option( \'foo\' )
    # etc…
) );
如您所见,我添加了选项foo, 来自name="foo[]" 在上面具体实施由您决定。这个答案只能作为你解决问题的指南。

结束

相关推荐

Html-to-WordPress:下拉导航菜单

所以我一直在四处寻找希望有人也有这个问题。。但我找不到。我目前已经用硬编码的HTML模板为某人创建了Wordpress模板。现在问题来了。。。他已经在CSS中编写了下拉函数,所以我的工作是将其移植到Wordpress,但效果似乎不太好。应该是这样的(请注意,有三行,因为菜单本身有三个类别):这是来自硬编码模板的HTML;<li class=\"green\"> <a href=\"#\">Evenementen</a> <ul cl