Wordpress重定向与空表单

时间:2014-05-21 17:23:02

标签: php wordpress

我有一个模板文件(page-order.php)和一个与之对应的页面。我尝试过三件事:

  1. 行动=""
  2. 行动= $ _ SERVER [' REQUEST_URI']
  3. form action =" http:// tree /?page_id = 354"方法="后" (显式网址)
  4. 在我提交表单的每种情况下,我总是被重定向到index.php。我究竟做错了什么?我也尝试改变方法。我现在不会使用不错的网址,而是?page_id。

    这是重定向后在index.php中显示的$ _SERVER数组

    Array
    (
        [SERVER_SOFTWARE] => Apache/2.4.9 (Ubuntu)
        [REQUEST_URI] => /354
        [REDIRECT_STATUS] => 200
        [HTTP_HOST] => tree
        [HTTP_CONNECTION] => keep-alive
        [CONTENT_LENGTH] => 41
        [HTTP_CACHE_CONTROL] => max-age=0
        [HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
        [HTTP_ORIGIN] => http://tree
        [HTTP_USER_AGENT] => Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36
        [CONTENT_TYPE] => application/x-www-form-urlencoded
        [HTTP_REFERER] => http://tree/354/
        [HTTP_ACCEPT_ENCODING] => gzip,deflate,sdch
        [HTTP_ACCEPT_LANGUAGE] => ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4,fr;q=0.2,zh-CN;q=0.2,zh;q=0.2,it;q=0.2
        [HTTP_COOKIE] => wp_psr=79c2feaa8e0f6c89cf4cc2cc26661dbc; __atuvc=1%7C19; mc4wp_email=fdsf%40sdf.ru; wp-settings-1=editor%3Dhtml%26ed_size%3D533%26hidetb%3D1%26libraryContent%3Dbrowse%26urlbutton%3Dnone%26align%3Dleft%26dfw_width%3D822%26mfold%3Do; wp-settings-time-1=1400661809; wordpress_test_cookie=WP+Cookie+check; wordpress_logged_in_5880cb28233a06f6781467ba3412f6ff=admin%7C1400855925%7C0524345be09cf1aa7cafa34b27f8cdcc
        [PATH] => /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
        [SERVER_SIGNATURE] => 
    Apache/2.4.9 (Ubuntu) Server at tree Port 80
    
    
        [SERVER_NAME] => tree
        [SERVER_ADDR] => 127.0.0.1
        [SERVER_PORT] => 80
        [REMOTE_ADDR] => 127.0.0.1
        [DOCUMENT_ROOT] => /var/www/tree
        [REQUEST_SCHEME] => http
        [CONTEXT_PREFIX] => 
        [CONTEXT_DOCUMENT_ROOT] => /var/www/tree
        [SERVER_ADMIN] => [no address given]
        [SCRIPT_FILENAME] => /var/www/tree/index.php
        [REMOTE_PORT] => 40802
        [REDIRECT_URL] => /354
        [GATEWAY_INTERFACE] => CGI/1.1
        [SERVER_PROTOCOL] => HTTP/1.1
        [REQUEST_METHOD] => POST
        [QUERY_STRING] => 
        [SCRIPT_NAME] => /index.php
        [PHP_SELF] => /index.php
        [REQUEST_TIME_FLOAT] => 1400697038.09
        [REQUEST_TIME] => 1400697038
    )
    

2 个答案:

答案 0 :(得分:1)

你是正确的,你正在点击index.php,但原因有点复杂。基本上,索引文件充当Wordpress安装的前端控制器。无论何时导航到Wordpress上的任何页面,发布,存档等等,您都要首先访问index.php文件。然后该文件将经历一个检查重写规则的过程,并使用mod_rewrite为您提供具有正确slug的漂亮URL。所以从技术上讲,你实际上从来没有打过任何其他文件而不是index.php - 所有模板都被加载到该文件中。

由于您没有使用永久链接,因此表单操作的URL只需要是查询字符串中的页面ID。你几乎就在那里,但试试这个:

<form action="/?page_id=354" method="post">

如果您决定切换到漂亮的网址,那么表单操作仍然可以正常运行。但是,我建议不要将ID硬编码到表单操作中。当你想将当前页面用作处理程序时,通常一个空的表单动作就足够了,但是因为你说这不起作用你总是可以在表格动作中使用当前的页面ID,如下所示:

<?php global $post; ?>
<form action="/?page_id=<?php echo $post->ID ?>" method="post">

同样,使用空操作应该做同样的事情,因此找出为什么在你的情况下不起作用可能是明智的。尝试检查PHP错误日志,或者在HTML上运行验证器。

希望这有帮助!

答案 1 :(得分:0)

我绝对不知道为什么会这样,但是当我改变时

<p><input type="text" name="name" placeholder="Your name" /></p>

<p><input type="text" name="username" placeholder="Your name" /></p>

它适用于表单操作=&#34;&#34;