我首先说:这里不是php后端开发人员。
<form action="" method="POST" id="myForm" autocomplete="off">
<textarea name="newContent" class="form-control" rows="10"><?php the_content(); ?></textarea>
<p class="read-more"><button type="button" class="btn btn-danger">Read More</button></p>
<input id="update_content" type="submit" value="Update">
<?php
$post = array(
'ID' => $id,
'post_content' => $_POST['newContent']
);
wp_update_post($post, true);
?>
</form>
现在它在页面上,因此每次加载时都会运行wp_update_post($post, true);
。
点击<input id="update_content" type="submit" value="Update">
而不是每次加载页面时,最简单的方法是什么?
答案 0 :(得分:2)
@ bishop的解决方案既快捷又简单,但我想我会加上这个:
$_SERVER['REQUEST_METHOD']
让我们确定请求的方法。
if($_SERVER['REQUEST_METHOD']=="POST")
{
wp_update_post($post, true);
}
这可以说是“正确的方法”,即使帖子的身体是空的,也会通过,虽然我们的答案在功能上是相同的
答案 1 :(得分:1)
首先,为您的输入命名:
<input name="submit" value="Update">
然后在你的代码中,假设PHP 7 +:
if ('Update' === ($_POST['submit'] ?? false)) {
wp_update_post($post, true);
}
工作原理:当您在浏览器中单击“提交”类型的按钮时,浏览器会打包命名的输入元素并通过网络发送它们。 Web服务器解析HTTP消息并将它们发送到PHP,这使它们在名为$_POST
的关联数组(也称为字典)中可用。 (或者如果方法是GET,那么$_GET
)。然后,您可以检查此数组中的预期键及其值。
顺便说一下,您不需要为按钮命名。你也可以这样做:
if (count($_POST)) {
...
}
断言在发布的数据中至少有一个键值对。
您也可以考虑使用var_dump('<pre>', $_POST)
作为诊断辅助工具。
最后,我不清楚$id
来自哪里,但也需要正确设置。
答案 2 :(得分:0)
试试这个:
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// Put variables and function here
}