从下拉列表中选择POST并添加不起作用的查询参数

时间:2013-10-07 作者:Eckstein

下面的行为应该是用户在下拉框中进行选择,页面将刷新为的查询参数editevent=1 并在选定内容的情况下传递帖子ID的值。在下拉列表上方,应该是

职位ID:[此处职位ID]

这段代码有问题:

<option value="<?php the_ID(); ?>"><?php the_title(); ?>
</option>
当我将帖子的ID作为值时,它会使表单重定向到实际的帖子,而不仅仅刷新当前页面。我不明白为什么会这样。我把表格设置为action="#" 代码中没有任何URL的永久链接引用。

以下是完整片段:

<?php if ($_GET[\'editevent\'] == true) {
    echo \'Post ID: \'.$_GET[\'page_id\'];
}
?>
    <form method="GET" action="#">
    <select name="page_id" id="page_id" onchange="this.form.submit()">
        <?php
        global $post;
        $args = array( \'numberposts\' => -1, \'post_type\' => \'event\', \'season\' => \'2013-2014\');
        $posts = get_posts($args); 
        foreach( $posts as $post ) : setup_postdata($post); ?>
            <option value="<?php the_ID(); ?>"><?php the_title(); ?>
            </option>
        <?php endforeach; ?>
    </select>
    <input type="hidden" name="editevent" value="true" />
</form>

1 个回复
最合适的回答,由SO网友:tfrommen 整理而成

重命名您的<select> 除了page_id.

问题是page_id 已由WordPress获取(并处理)(作为查询变量)。

这应该做到,例如:

<?php
if (isset($_GET[\'editevent\']) && true == $_GET[\'editevent\'])
    echo \'Post ID: \'.$_GET[\'my_page_id\'];
?>
<form method="GET" action="#">
    <select name="my_page_id" id="my_page_id" onchange="this.form.submit()">
        <?php
        $args = array(
            \'posts_per_page\' => -1,
            \'post_type\' => \'event\',
            \'season\' => \'2013-2014\',
        );
        $posts = get_posts($args); 
        foreach ($posts as $post) :
            setup_postdata($post);
            ?>
            <option value="<?php the_ID(); ?>"><?php the_title(); ?></option>
            <?php
        endforeach;
        ?>
    </select>
    <input type="hidden" name="editevent" value="true" />
</form>

结束

相关推荐

Temp URL Redirect Loop

我试图通过hostgator使用临时URL(IP/~用户名/域)建立我的网站,但我遇到了一些问题。我已进入数据库,并用新的临时URL替换了旧域的所有实例。问题是我遇到了重定向循环。我在某个地方读到了试图重置永久链接的内容,但我没有访问管理面板的权限。我不知道还有什么可以修复重定向循环。我甚至换了我的。使用新的htaccess,仍然可以获得重定向循环。这是我当前的wp配置文件:define(\"WP_SITEURL\",\"http://IP/~username/example.com\"); de