操作挂钩“wp_INSERT_POST”有效,但不适用于上次导入的帖子

时间:2014-07-06 作者:Addicted

每当帖子导入到我的自定义帖子类型时,我想运行一个自定义函数。

我当前正在运行此代码-

function on_post_import($post){
  global $wpdb;

  $results = $wpdb->get_results(
    "SELECT ID FROM $wpdb->posts WHERE post_type = \'post\' AND post_status = \'publish\'"
  );

  foreach ($results as $result) {
      // run custom function
  }

  $wpdb->flush();
}
add_action( \'wp_insert_post\', \'on_post_import\' );
我面临的问题是,它不适用于最后一个导入的帖子。因此,如果导入了3个帖子,那么其中2个帖子的效果很好,但第3个帖子(上次导入)的效果不好。

更新:如果只导入了一个post,则自定义功能不起作用。

UPDATE2:问题似乎出在我的自定义函数上,它使用了get\\u post\\u meta(),它似乎没有输出任何东西。

UPDATE 3: I am now simply using the wpdb query to run custom function. I want to avoid it as it will keep running in the background. If anyone have a better solution then do let me know thanks!

global $wpdb;

  $results = $wpdb->get_results(
    "SELECT ID FROM $wpdb->posts WHERE post_type = \'post\' AND post_status = \'publish\'"
  );

  foreach ($results as $result) {
      // run custom function
  }

  $wpdb->flush();
我做错了什么?或者有没有其他方法可以让我的功能在所有导入的帖子上工作,包括上次导入的帖子?

1 个回复
SO网友:karpstrucking

“wp\\u insert\\u post”操作将为插入的每个帖子触发,并将插入帖子的ID传递给回调函数,因此我认为您的$wpdb查询是不必要的-事实上,我认为您正在为所有已发布的帖子运行“自定义函数”部分,而不仅仅是插入的帖子(这可能会或可能不会导致问题,取决于您实际执行的操作)。

function on_post_import( $post_id ) {
  // custom function using $post_id
}
add_action( \'wp_insert_post\', \'on_post_import\' );

结束

相关推荐

Wpdb->INSERT添加的行太多

我的functions.php$ar = array( \'price_content\' => \'hello\' ); $result = $wpdb->insert(\'hs_prices\', $ar); // insert \'hello\' into \'price_content\' 这应该只创建一行,但会在数据库中创建12行。当我运行此操作时,我在网站的主页上(通过刷新页面)。这可能是因为代码在functions.ph