페이지는 POST 변수와 함께 404를 반환하지만


22

내 페이지에 문제가 있습니다. "문의하기"페이지를 만들려고합니다. 디자인 측면에서 완벽하게 작동합니다. 그러나 양식을 원본과 동일한 페이지로 보내려고하면. 404 오류를 반환합니다.

양식을 보낼 때만 발생합니다. GET 및 POST 요청으로 모두 시도했습니다. 아무것도 작동하지 않는 것 같습니다.

심지어 PHPMailer 부분을 주석 처리했습니다. 그것은 전적으로 추가 변수에 의해 발생합니다.

도움이되는 경우 "이름", "이메일"및 "메시지"입니다.


2
페이지의 코드를 게시하십시오. $_POST데이터가 실제로 페이지의 발견 여부에 영향을 미치지 않아야합니다.
s_ha_dum

답변:


41

모든 변수, 특히 변수 접두사 . 사용중인 이름은 WordPress에서 내부적으로 사용되므로 (주석 양식 참조) WordPress는 양식 값으로 무언가를 시도 할 수 있습니다. 실패하면 오류가 발생합니다.

하지만 $_GET문제는 디버그에 오히려 쉽게 보통, $_POST그리고 $_REQUEST이름은 그렇게 간단하지 않다.

다음 목록이 완성되지 않았을 수 있습니다. 그러나 그 길이는 우리에게 교훈을 알려줍니다.

사전에서 찾을 수있는 이름은 피하십시오. 양식 이름 앞에 접두사를 붙입니다.

에서 예약 된 이름 목록 $_POST$_REQUEST워드 프레스 3.5에서 사용

이러한 이름은 테마 또는 플러그인에서 사용될 때 부작용이있을 수 있습니다. 일부는 특정 페이지 ( removeheader) 에만 사용되고 다른 페이지는 여러 페이지 나 요청에 사용됩니다. 가능하면 모두 피하십시오.

_ajax_nonce
_page
_per_page
_signup_form
_total
_url
_wp_http_referer
_wp_original_http_referer
_wp_unfiltered_html_comment
_wpnonce
_wpnonce-custom-header-upload

aa
action
action2
active_post_lock
add_new
add_new_users
addmeta
admin_bar_front
admin_color
admin_email
admin_password
admin_password2
ajax
align
allblogs
allusers
alt
approve_parent
approved
attachment
attachment_id
attachments
auth_cookie
author
author_name
autocomplete_type
auto_draft
auto-add-pages
autosave

background-attachment
background-color
background-position-x
background-repeat
banned_email_domains
blog
blog_name
blog_public
blog_upload_space
blogname
bulk_edit

c
calendar
cat
category_base
category_name
catslist
changeit
changes
charset
checkbox
checked
clear-recent-list
closed
comment
comment_approved
comment_author
comment_author_email
comment_author_url
comment_content
comment_date
comment_ID
comment_parent
comment_post_ID
comment_shortcuts
comment_status
comments_listing
comments_popup
confirmdelete
connection_type
content
context
cpage
create-new-attachment
createuser
customize_messenger_channel
customized
customlink-tab

date
date_format
date_format_custom
day
default-header
delete
delete_all
delete_all2
delete_comments
delete_option
delete_tags
delete_widget
deletebookmarks
deletecomment
deleted
deletemeta
deletepost
description
detached
dismiss
display_name
do

edit_date
email
error
exact
excerpt

features
feed
fetch
fheight
file
fileupload_maxk
filter
find_detached
first_comment
first_comment_author
first_comment_url
first_name
first_page
first_post
found_post_id
fwidth

global_terms_enabled
GLOBALS
gmt_offset
guid

height
hh
hidden
hidden_aa
hidden_jj
hidden_mm
hidden_mn
hidden_hh
history
hostname
hour
html-upload

id
ID
ids
id_base
illegal_names
insert-gallery
insertonlybutton
interim-login
item-object
item-type

jj
json
json_data

key

last_name
limited_email_domains
link_id
link_image
link_name
link_rss
link_url
link_visible
linkcheck
locale
locked
log
logged_in_cookie

m
media
media_type
menu
menu_items
menu-item
menu-item-attr-title
menu-item-classes
menu-item-db-id
menu-item-description
menu-item-object
menu-item-object-id
menu-item-parent-id
menu-item-position
menu-item-target
menu-item-title
menu-item-type
menu-item-url
menu-item-xfn
menu-locations
menu-name
message
meta
metakeyinput
metakeyselect
metavalue
minute
mm
mn
mode
monthnum
more
move
multi_number

name
nav-menu-locations
new
new_role
new_slug
new_title
newcat
newcomment_author
newcomment_author_email
newcomment_author_url
newcontent
newuser
nickname
no_placeholder
noapi
noconfirmation
noredir
number

offset
oitar
option
option_page
order
orderby

p
pb
page
page_columns
page_id
page_options
paged
pagegen_timestamp
pagename
parent_id
pass1
pass2
password
permalink_structure
photo_description
photo_src
phperror
ping_status
plugin
plugin_status
pointer
position
post
post_category
post_data
post_format
post_ID
post_id
post_mime_type
post_password
post_status
post_title
post_type
post_view
postid
posts
preview
primary_blog
private_key
ps
public_key
publish
pwd

query

reassign_user
reauth
redirect
redirect_to
ref
referredby
registration
registrationnotification
rememberme
remove-background
removeheader
removewidget
reset-background
resetheader
review
rich_editing
robots
role

s
same
save
savewidget
savewidgets
screen
scrollto
search
second
section
selectall
selection
send
send_password
sentence
short
show_sticky
sidebar
sidebars
signup_for
signup_form_id
site_id
site_name
sitename
size
skip-cropping
spam
spammed
src
ss
stage
start
static
status
sticky
subdomain_install
submit
subpost
subpost_id
super_admin

tab
tag
tag_ID
tag-name
tag_base
tags_input
tax
tax_input
tag-name
target
taxonomy
tb
term
text-color
the-widget-id
theme
theme_status
thumb
timezone_string
time_format
time_format_custom
title
thumbnail_id
trash
trashed
type

undismiss
unspam
unspammed
untrash
untrashed
url
update_home_url
updated
upgrade
upload_filetypes
upload_space_check_disabled
use_ssl
user
user_id
user_login
user_name
username
users

verify-delete
version
visibility
visible

w
weblog_title
welcome_email
welcome_user_email
widget_id
widget_number
widget-id
widget-recent-comments
widget-rss
width
withcomments
withoutcomments
wp_customize
wp_http_referer
wp_screen_options
wp-preview
WPLANG

x1

y1
year

변수 이름

$method // Filter: 'user_contactmethods'
$post_type_name . -tab
$sidebar_id . _position
$taxonomy_name . -tab
$whitelist_options // Filter: 'whitelist_options'

__i__ . $something // used in widgets
new . $taxonomy->name
new . $taxonomy->name . _parent
quick-search-posttype- . $post_type_name
quick-search-taxonomy- . $taxonomy_name
widget- . $id_base

이것은 OP뿐만 아니라 다른 많은 질문에 대한 유용한 답변입니다. 감사합니다 @fuxia
Alexander Holsgrove

나에게 이것은 변수 이름이 아닌 양식 필드 이름 때문이었습니다 . 여기에
Matthew Hegarty

@MatthewHegarty이 있다 양식 필드 이름에 대해.
fuxia

1
"Car"라는 사용자 지정 게시물 유형이 있고 "car"= D Prefix라는 필드가 문제를 해결했습니다. = D
Markus Knappen Johansson

2

또는 WP에 게시하고 functions.php에서 처리를 처리 할 수 ​​있습니다.

양식의 경우 :

action="<?php echo esc_url( admin_url('admin-post.php') ); ?>"

그리고 WP에게 처리 할 기능이 무엇인지 알려주는 숨겨진 입력을 포함하십시오.

<input type="hidden" name="action" value="my_contact_form">

functions.php에 함수를 작성하십시오.

function my_contact_form_func(){

    if ( ! empty( $_POST ) ) {
        // do your thing
    }
}

WP에 기능이 무엇인지 알려주십시오.

add_action( 'admin_post_nopriv_my_contact_form', 'my_contact_form_func' );
add_action( 'admin_post_my_contact_form', 'my_contact_form_func' );
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.