WP_insert_post自动化无法正常工作

时间:2018-03-13 17:18:24

标签: php python wordpress

所以我试图通过FTP自动化视频上传和数据库中的插入。 我写了一个位于服务器上的脚本,并使用了包含的WP功能:

<?php 
$title = $_GET["title"];
$pw = $_GET["key"];
$key = hash('sha256',$pw);
$hash = "hashfromkey";
if ($hash == $key){
$videowebm = $title . ".webm";
$videomp4 = $title . ".mp4";
$image    = $title . ".jpg";

$content = "<video id=\"my-video\" class=\"video-js vjs-big-play-centered\" controls preload=\"auto\" poster='$image' data-setup=\"{}\">
<source src=\"$videomp4\" type='video/mp4'>
<source src=\"$videowebm\" type='video/webm'>
<p class=\"vjs-no-js\"> activate js</p></video> ";

include( "wp-config.php" );

// Gather post data.
$my_post = array(
    'post_title'    => $title,
    'post_content'  => $content,
    'post_author'   => 3
);

// Insert the post into the database.
$ID = wp_insert_post( $my_post, true );
}
?>

如果我在浏览器(urltofile?title=jeff&key=key)中打开网址,一切正常。 使用python脚本时

#!/usr/bin/python3
from os import listdir;
adress = 'url';
user = 'ftpuser';
PW = 'ftppw';
url = 'urltofile?title=';
url_short = 'Urltofile';
key = '&key=key';
dir = input("Choose Folder");
for file in dir:
    if file.endswith(".txt"):
        print(file)
        urlges = url + file + key;
        #data = urllib.parse.urlencode(data);
        #data = data.encode('utf-8');
        html_quelltext = urllib.request.urlopen(urlges).read();

我得到了

   <video id="my-video" class="video-js vjs-big-play-centered" controls preload="auto" poster='Testscribbles.txt.jpg'>

<p class="vjs-no-js"> activate js</p></video>

所以我错过了指定源代码的两行。我不明白为什么只有在使用脚本时才会发生(我在Perl中使用了相同的脚本,得到了相同的结果)。 我尝试使用urllib的get语句,但我无法使它工作(可能是一个不同的问题)。

有人知道解决方案可能是什么吗?

提前致谢!

2 个答案:

答案 0 :(得分:0)

默认情况下,Wordpress post status'是“草稿”,有些未发布,具体取决于您的主题设置。

根据您当前的要求,您可能需要“发布”:

// Gather post data.
$my_post = array(
    'post_title'    => $title,
    'post_content'  => $content,
    'post_author'   => 3,
    'post_status'   => 'publish'
);

// Insert the post into the database.
$ID = wp_insert_post( $my_post, true );

答案 1 :(得分:0)

remove_all_filters("content_save_pre");

解决我的问题。 Wordpress试图清理代码以防止有害代码。