在wordpress中获取post方法不起作用

时间:2015-06-23 17:07:40

标签: php html wordpress

我在Wordpress中创建了一个网站。

在我的front-page.php和我的index.php文件中,我输入了post和get方法,只是为了回显page-message.php文件中的消息。

当我点击订阅按钮时,会显示帖子page:news。帖子page:news在我的Wordpress设置中定义:dashboard => settings => reading =>首页显示=>静态页面。

page-message.php我希望显示我从此表单输入的数据。 Ť

表单代码:

<h2>Sign to Newsletter</h2>
<form action="page-message.php" method="post">
    Name:<input class="input" type="text" name="name" value=""/><br/>
    Email:<input type="text" name="email" value=""/>
    <br/><input class="submit" type="submit" value="Subscribe"/>
</form>

page-message.php的代码:

<?php
    $name = $_POST["name"];
    $email = $_POST["email"];
    echo 'Congratulations!You have been successfully subscribed to our newsletter' .$name .$email;                
?>

当我点击订阅按钮时,我的网址会更改为http://localhost/wordpress/page-message.php?name=stergios&email=something%40someone.com

使用post方法时,这似乎是正确的。问题是内容!

它总是加载新闻(来自settings =&gt;读取的帖子页面)而不是简单的回显消息?

当我在网址中写下我的网页之外的任何内容时,它总是显示帖子页面。例如,网址localhost/wordpress/hhhhhhhhhhh(不存在的网页)确实加载了帖子页面,而不是邮件错误!

2 个答案:

答案 0 :(得分:0)

我知道它不起作用的原因。

action="page-message.php"

你的静态页面的路径应该是/wp-content/themes/{themename}/page-message.php你可以试试,

 action="<?php echo get_template_directory(); ?>/page-message.php"

但我认为它不会起作用。你可以尝试

 action="/index.php"

未经测试。让我知道它是否有用。

更新:当您将该页面设置为首页时,您的wordpress根网址将是该页面的网址(example.com或example.com/wpdirectory)。然后就这么做吧,

action="/"

action="/wpdirectory"

答案 1 :(得分:0)

如果“page-message.php”是主题中的自定义模板,您可以通过以下查询获取分配给它的页面ID:

$get_message_pageId = new WP_Query(array(
    'post_type'  => 'page',
    'meta_key'   => '_wp_page_template',
    'meta_value' => 'page-message.php'
));

然后您可以使用以下命令设置操作:

action="<?php echo esc_url( get_permalink( $get_message_pageId->posts[0]->ID ) ); ?>"

因此您在表单中始终会有正确的网址,但只有在您将此模板分配到的页面为

时才会有效