我试图使用cron作业插入帖子,但我不断遇到WP缺少函数的错误(is_user_logged_in
, wp_get_current_user
).
是否有合适的方法使用cron作业运行wp\\u insert\\u post?
这是我目前掌握的代码。
phrets_hourly
是WP\\u CRON挂钩
add_action(\'phrets_hourly\', \'run_listings_update\' );
function run_listings_update(){
$fetch = new Fetcher();
$fetch->fetch();
}
这是
$fetch
运行的对象(获取程序类)。
public function fetch(){
$options[\'class\'] = \'RES\';
$options[\'limit\'] = 10;
$options[\'offset\'] = 0;
$options[\'silent\'] = true;
$data = $this->query( $options );
foreach ( $data as $datum ) {
$this->place( $datum, true );
}
}
public function place( $data, $silent ){
$rets = $this->connect_to_rets();
$listing = new Listing( $data );
// check to see if listing already exists
$post_id = $listing->check_listing_exists( $data[\'MST_MLS_NUMBER\'] );
if ( ! $post_id ) {
$action = $listing->put();
} else {
$action = $listing->update($post_id);
}
}
这是从
$listing
将数据放入数据库的对象(列表类)
public function put(){
$title = $this->create_title( $this->data );
// setup the \'post\' data
$post = array(
\'post_type\' => \'listing\',
\'post_title\' => $title,
\'post_content\' => $this->data[\'Remarks\'],
\'post_status\' => \'publish\'
);
// add new meta data
if ( ! is_wp_error( $post_id ) ) {
$this->add_meta_data( $post_id );
$this->assign_community( $post_id, $data );
}
// set the action
$action = \'inserted\';
return $action;
}
谢谢!
SO网友:ryanka
我找到了绕过这个的方法。
无法理解core-trac,尽管它已经发行了4年,但仍然没有修补。这是我用来插入自定义帖子的代码。这个include_once 指令在这里很重要。
我还应该注意到,wp\\u set\\u auth\\u cookie(1)将此脚本的访问权限设置给管理员。如果您的管理员ID不为1,则需要更新此ID。该函数也被弃用,因此您需要包括可插拔的。php文件。
//Add in the pluggable functions
include_once( ABSPATH . WPINC . \'/pluggable.php\' );
wp_set_auth_cookie( 1 );
$slug = strtolower("test-example");
$title = "Test Example";
//See if post exists or not then handle accordingly
$post_id = get_page_by_title( $title, OBJECT, \'cars\' );
if( $post_id == NULL ) {
$post_id = wp_insert_post(
array(
\'comment_status\' => \'closed\',
\'ping_status\' => \'closed\',
\'post_author\' => 1,
\'post_name\' => $slug,
\'post_title\' => $title,
\'post_status\' => \'publish\',
\'post_type\' => \'cars\'
)
);
} else {
$post_id = $post_id->ID;
}
只需将汽车更改为您想要的任何帖子类型。slug/title也需要相应更改。