我有一个小问题,可能有一个非常简单的解决方法。我一直在使用wp_get_archives()
函数生成下拉选择窗体。请参见下面的完整代码:
<form id="side-arch">
<select name="archive-dropdown" onchange="document.location.href=this.options[this.selectedIndex].value;">
<option value=""><?php echo esc_attr( __( \'Select Month\' ) ); ?></option>
<?php wp_get_archives( array( \'type\' => \'monthly\', \'format\' => \'option\', \'show_post_count\' => 1 ) ); ?>
</select>
<input type="submit" value="Go" id="submit" />
</form>
我想使用submit按钮,而不是onchange事件来执行操作。显然,我应该做的是删除
onchange
元素并添加表单操作。我尝试过将其格式化,就像我的功能类别下拉列表一样,通过这样做可以实现:
<form id="side-arch" action="<?php echo esc_url( home_url( \'/\' ) ); ?>" method="get">
<select name="archive-dropdown">
<option value=""><?php echo esc_attr( __( \'Select Month\' ) ); ?></option>
<?php wp_get_archives( array( \'type\' => \'monthly\', \'format\' => \'option\', \'show_post_count\' => 1 ) ); ?>
</select>
<input type="submit" value="Go" id="submit" />
</form>
然而,这不起作用。我猜表单操作中的url有问题,因为它只是将我发送到网站的主页。
有没有人对如何将此切换到使用Go
按钮
最合适的回答,由SO网友:bynicolas 整理而成
它不起作用,因为:
您正在重定向回家$_GET
变量,因此存档链接只是附加到您的主页url中,您需要添加一个函数来侦听该链接$_GET
变量
只需将此添加到functions.php
文件
add_action( \'template_redirect\', \'wpse_archive_select\' );
function wpse_archive_select(){
if( isset( $_GET[ \'archive-dropdown\' ] ) ){
die( wp_safe_redirect( $_GET[ \'archive-dropdown\' ] ) );
}
}