我发现了一种解决方法,可以将wp\\U category\\u下拉列表显示为多选字段。我的代码如下:
<?php
$sponsors = wp_dropdown_categories( array(
\'child_of\' => 0,
\'class\' => \'postform\',
\'depth\' => 0,
\'echo\' => 0,
\'exclude\' => \'\',
\'hide_empty\' => false,
\'hide_if_empty\' => false,
\'hierarchical\' => true,
\'order\' => \'ASC\',
\'orderby\' => \'name\',
\'selected\' => 0,
\'show_count\' => 0,
\'show_option_all\' => \'\',
\'show_option_none\' => __(\'\'),
\'tab_index\' => 0,
\'taxonomy\' => \'sponsors\', )
);
$sponsors = str_replace(
"name=\'cat\' id=",
"name=\'cat[]\' multiple=\'multiple\' size=\'19\' id=",
$sponsors
);
?>
到目前为止,一切顺利。问题是,上面输出的输入名称为“cat”,这很好,很漂亮,除非我需要使用更具定义性的名称多次循环上述内容。
因此,我需要输入的名称采用以下格式:
name="scrape[<?php echo $inpCnt; ?>][sponsors]"
但是,这样做行不通:
$sponsors = str_replace(
"name=\'scrape[\'.$inpCnt.\'][sponsors]\' id=",
"name=\'scrape[\'.$inpCnt.\'][sponsors][]\' multiple=\'multiple\' size=\'19\' id=",
$sponsors
);
那我该怎么办?
最合适的回答,由SO网友:Ahmad M 整理而成
圆点.
在您的代码中,计算为字符串litral,而不是串联。意思是如果$inpCnt
等于5
例如,php将搜索name=\'scrape[\'.5.\'][sponsors]\' id=
而且找不到它。您可以在仍使用双引号的情况下删除点:
$sponsors = str_replace(
"name=\'scrape[\'$inpCnt\'][sponsors]\' id=",
"name=\'scrape[\'$inpCnt\'][sponsors][]\' multiple=\'multiple\' size=\'19\' id=",
$sponsors
);
。。或使用串联:
$sponsors = str_replace(
\'name=\\\'scrape["\'.$inpCnt.\'"][sponsors]\\\' id=\',
\'name=\\\'scrape["\'.$inpCnt.\'"][sponsors][]\\\' multiple=\\\'multiple\\\' size=\\\'19\\\' id=\',
$sponsors
);