【问题标题】:Is there a way to grab the title of an unsaved post in Wordpress?有没有办法在 Wordpress 中获取未保存帖子的标题?
【发布时间】:2019-03-05 21:47:05
【问题描述】:

我正在开发一个 WordPress 插件,它允许我选择有关自定义帖子类型、分类术语和标题的正确上传文件夹。

我可以在帖子保存时抓取各种数据,没问题。但是如何获取例如尚未发布的帖子的标题?

我尝试了 $_POST,首先在 WordPress 的标题 textarea 字段中添加了一个名称(因为它没有),但这完全破坏了我的上传过滤器,内部错误 500。

我有一个部分工作的代码。在一个 PHP 文件中,我将这个 Ajax 脚本加入队列:

function get_unposted_post_title( $hook ) {
    if ( ($hook == 'post-new.php') || ($hook == "post.php" && $_GET['action'] == "edit") ) {
        echo "<script>
            function posturl(title, url) {
                $.ajax({
                    type: 'POST',
                    url: url,
                    data: title,
                    success: function(title, url) {
                        console.log(title);
                    }
                });
            }
            setInterval( function() {
                var title = $('#post-title-0').val();
                var url = '" .GIA_PLUGIN_URL. "test.php';
                posturl(title, url);
            }, 5000);
        </script>";
    }
}
add_action( 'admin_enqueue_scripts', 'get_unposted_post_title', 10, 1 );

然后,在我插件的根目录下,我创建了一个 test.php 文件:

<?php
    $keys = array_keys($_POST);
    if(isset($keys) && !empty($keys[0])) {
        print_r( $keys[0] );
    }
?>

此函数按预期在 console.log 中显示更新的标题。

但是,我无法在不使上传过滤器崩溃的情况下获取$keys[0]。上传的文件将使用我的过滤器的更新路径正确移动,除了最后一个文件夹必须具有帖子标题的净化版本。我迷上了wp_handle_upload_prefilterwp_handle_upload

如果您查看提供的代码,我应该能够获取 keys[0]...但问题是 keys[0] 给我 'name'...keys[1] 给我'action' ,keys[2] 给我'wp_nonce'。我不知道为什么我不能正确抓取键[0],似乎我的 test.php 的 $keys 没有更新为键 0 的正确值。

【问题讨论】:

  • 拥有这样的 cmets 听起来有点有趣,当时我基本上是从 0 点开始的(Ajax 还是一个未知的世界)。不管怎样,我在其他论坛上有所进步,现在我可以说 Ajax 是解决方案。那是起点,但你们似乎都不在乎。现在,我已经完成了一半的工作,一个部分工作的函数(参见更新的 OP 代码)。

标签: php jquery ajax wordpress


【解决方案1】:

如果可以使用 wp_db 直接使用 MySQLI,为什么还要使用 Ajax?

您可以像当前使用已发布的那样检索它。 如果你使用 MySQLI 抓取它,有一个名为“post_status”的列

https://codex.wordpress.org/Post_Status

【讨论】:

  • 感谢您的回答。但是我所说的“在帖子发布之前”的意思,实际上是“在帖子提交之前”。换句话说,就在点击“添加新帖子”之后。如果我错了,请告诉我,但在第一次自动保存之前数据库中没有保存任何内容,并且用户必须在安装时启用自动保存。我可以尝试使用 Auto-Draft 状态来查看我可以从中获取什么,但就像我之前所说的,如果用户禁用了它,它将毫无用处。
  • 这就是我希望使用 Ajax 的原因,因为它似乎是(据我所知)使用 jQuery 检索字段数据的唯一解决方案,以便使它们与 php 代码(我的上传过滤器)一起使用。
猜你喜欢
  • 2014-02-28
  • 2019-07-30
  • 2020-02-23
  • 1970-01-01
  • 2021-10-06
  • 2010-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多