【问题标题】:Wordpress plugin $postWordpress 插件 $post
【发布时间】:2011-02-24 10:46:22
【问题描述】:

我已经知道如何在数据库中插入。我唯一的问题是获取要插入数据库的文本框的值。这是我的代码:

函数 dbAdd() { 全球 $wpdb; $new_title = $_POST['new_title']; $new_author = $_POST['new_author']; $new_url = $_POST['new_url']; if($wpdb->insert('wp_podcast_data', array('mp3_id' => '', 'title' => '$new_title', 'creator' => '$new_author', 'url' => '$new_url ') )) { echo"

保存成功!

"; }别的 { 回声 mysql_error(); } } -------------------------------------------------- -------- 功能 player_manager_index() { if($_SERVER['REQUEST_METHOD']=='POST') { dbAdd(); } ?>

播客播放器管理器(此插件尚未完成)


注意:此播放器管理器需要您想要包含在播客播放器中的 mp3 文件的 URL。

请帮助我。我是wordpress的新手。非常感谢。

【问题讨论】:

  • 现在发生了什么?是有错误还是什么都没有发生?另外,我会检查 $_POST 是否为空,而不是检查 REQUEST_METHOD,因为 WordPress 更改了很多此类数据。

标签: php wordpress


【解决方案1】:

如果我错了,请纠正我,但我可以发誓 Wordpress 将 $_POST 和 $_GET 变量合并到一个 $_REQUEST 变量中。因此,如果您将所有 $_POST 替换为 $_REQUEST,您可能会发现它会起作用。

在您的 player_manager_index 函数中,我不会使用以下内容:if($_SERVER['REQUEST_METHOD']=='POST')

将其替换为: if($_REQUEST['new_title'])

因此,您改为检查是否正在发送变量,而不是仅允许函数在发布到时运行。

【讨论】:

  • 技术上你在 $_REQUEST 事情上是对的,虽然它不是 wordpress 并且它本身没有合并。 $_REQUEST 是一个包含 _GET、_POST 和 _COOKIE 的 PHP 超级全局变量。这是手册的链接php.net/manual/en/reserved.variables.request.php
  • 另外,我建议使用 if($_POST['new_title']) 而不是仅使用 $_REQUEST 如果这是表单中使用的方法(OP 现在正在使用)。跨度>
  • 另外我会在你的 POST 数据上运行 stripslashes(),因为 WordPress(出于某种疯狂的原因)强制执行魔术引号。
  • 其实我是对的。如果您查看 Wordpress 根目录(wp-config 所在的位置)中的文件 wp-settings,第 636 到 637 行如下: // 强制 REQUEST 为 GET + POST。如果需要 SERVER、COOKIE 或 ENV,请直接使用这些超全局变量。 $_REQUEST = array_merge($_GET, $_POST);所以使用 $_REQUEST 应该可以根据需要而不是 $_POST 或 $_GET。
  • 所以 WP 使 $_REQUEST 成为 PHP 的一个子集。使用 PHP,$_REQUEST 已经包含 $_GET$_POST$_COOKIE
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-03
  • 1970-01-01
  • 1970-01-01
  • 2018-04-12
  • 1970-01-01
相关资源
最近更新 更多