2013-04-07 159 views
1

我正在使用一个简单的php文件发布到我的wordpress,到目前为止我有大约900posts,但我注意到它需要的时间越来越长!有时甚至用完(30秒+)!这里是我使用的代码。wordpress wp_insert_post花费太长时间

<?php 
    require_once('./../wp-blog-header.php'); 
    require_once('./simple_html_dom.php'); 
    require_once('./../wp-admin/includes/taxonomy.php'); 

function postit($category,$date,$title,$content,$keys){ 
$cat=wp_create_category($category); 
$post = array(
    'comment_status' => 'open',// 'closed' means no comments. 
    'ping_status' => 'open', // 'closed' means pingbacks or trackbacks turned off 
    'post_author' => '1', //The user ID number of the author. 
    'post_category' => array($cat), //post_category no longer exists, try wp_set_post_terms() for setting a post's categories 
    'post_content' => $content, //The full text of the post. 
    'post_date'  => date('Y-m-d H:i:s',strtotime($date)), //The time post was made. 
    'post_date_gmt' => date('Y-m-d H:i:s',strtotime($date)), //The time post was made, in GMT. 
    'post_status' => 'publish', //Set the status of the new post. 
    'post_title'  => $title, //The title of your post. 
    'post_type'  => 'post', //You may want to insert a regular post, page, link, a menu item or some custom post type 
    'tags_input'  => $keys,//For tags. 
    'post_content_filtered' => '1', 
    'filter' => '1' 
); 

remove_filter('content_save_pre', 'wp_filter_post_kses'); 
remove_filter('content_filtered_save_pre', 'wp_filter_post_kses'); 
$r=wp_insert_post($post ,$wp_error); 
add_filter('content_save_pre', 'wp_filter_post_kses'); 
add_filter('content_filtered_save_pre', 'wp_filter_post_kses'); 
return $r; 
} 

当我在探查跑此,

wp_create_category运行0.01秒。剩下的代码为0.8秒,而删除过滤器和wp_insert_post部分则需要剩余的执行时间。

任何人都有一个建议来优化它?

+0

这仍然发生在仪表板上吗? – 2013-04-07 23:29:00

+0

@RobertLee yes仪表板相同 – Zalaboza 2013-04-07 23:39:34

+0

您是否尝试过优化数据库?有手动查询,你可以做,但这一个是更容易使用http://wordpress.org/extend/plugins/tentblogger-optimize-wordpress-database-plugin/ – 2013-04-07 23:42:57

回答

2

找到解决办法。它是我的插件之一,使这种延迟。一旦我禁用了所有插件,延迟就是goan!

我想一些插件添加了一个过滤器/钩子到wp_new_post并且该钩子引起了这个延迟问题。

为未来的googlers。 只是禁用所有插件并尝试发布,如果问题是goan然后开始启用他们一个接一个,直到你找到引起这个问题的插件。

感谢所有的意见和帮助

+0

谢谢,帮了我很多,对我来说这是插件“WP-Mail-SMTP”。我已经挂上了发送“wp_insert_post”挂钩的电子邮件,并且smtp错过了配置。禁用它已解决了我的问题 – 2017-03-27 10:33:44