【发布时间】: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_prefilter 和wp_handle_upload。
如果您查看提供的代码,我应该能够获取 keys[0]...但问题是 keys[0] 给我 'name'...keys[1] 给我'action' ,keys[2] 给我'wp_nonce'。我不知道为什么我不能正确抓取键[0],似乎我的 test.php 的 $keys 没有更新为键 0 的正确值。
【问题讨论】:
-
拥有这样的 cmets 听起来有点有趣,当时我基本上是从 0 点开始的(Ajax 还是一个未知的世界)。不管怎样,我在其他论坛上有所进步,现在我可以说 Ajax 是解决方案。那是起点,但你们似乎都不在乎。现在,我已经完成了一半的工作,一个部分工作的函数(参见更新的 OP 代码)。