首先,我认为你的论点有错误。应该是这样的\'show_option_none\' => \'Select Page\'
, 不\'show_option_none=Select Page\'
.
其次:短代码是在帖子/页面/任何内容中被替换的东西。这意味着短代码的内容必须returned. 你直接echo 这将导致管理中出现错误消息。
将功能更改为return 代码,而不是回显它。这个wp_dropdown_pages
函数有一个方便的参数:“echo”。
function dropdownbox_autosubmit($atts = array()) {
if(isset($atts[\'child_of\'])){
$childof = (int)$atts[\'child_of\'];
} else {
$childof = 42;
}
$my_dropdown = wp_dropdown_pages(array(\'child_of\' => $childof,\'show_option_none\'=> \'Select Page\',\'echo\' => false));
$my_dropdown.=\'<script type="text/javascript">\';
$my_dropdown.=\' var pageDropdown = document.getElementById("page_id");\';
$my_dropdown.=\' pageDropdown.onchange = onPageSelect;\';
$my_dropdown.=\' function onPageSelect() {\';
$my_dropdown.=\' if ( pageDropdown.options[pageDropdown.selectedIndex].value > 0 ) {\';
$my_dropdown.=\' location.href = \'.get_home_url().\'?p="+pageDropdown.options[pageDropdown.selectedIndex].value;\';
$my_dropdown.=\' }\';
$my_dropdown.=\' }\';
$my_dropdown.=\'</script>\';
return $my_dropdown;
}
add_shortcode( \'call_dropdownbox_autosubmit\', \'dropdownbox_autosubmit\' );
您可以继续使用以下短代码:
[call_dropdownbox_autosubmit]
. 我还做了一些更改,以便您可以指定下拉列表中的子项应该位于哪个页面。您可以像这样使用属性的child\\u:
[call_dropdownbox_autosubmit childof=42]
快乐的编码!