如何在数据库中的每个帖子上运行一次函数?

时间:2013-05-29 作者:Joudicek Jouda

我有一个简单的功能,可以在发布/更新后自动格式化整个帖子。

它挂在:

add_action(\'save_post\', \'myFunction\');
我想格式化每个帖子,我已经在数据库中。我知道我可以打开每一篇文章,然后单击update,在文章的myFunction上调用“save\\u post”挂钩,但我的文章数据库相当大。。

有没有可能run the function just once on every already published post 以某种方式更新每个帖子,以便钩子自动调用该函数?

2 个回复
SO网友:iyrin

是的,这是可能的。类似的内容应该会影响当前发布的所有帖子。直接运行一次,然后通过注释掉add\\u操作来禁用它,否则您将对数据库进行大量不需要的查询。

运行一次:将此代码放在函数中。php,该函数将在将站点前端加载到浏览器中时运行。在浏览器中加载网站主页,然后禁用该功能。确认您的帖子格式已应用于现有帖子。

     add_action( \'init\', \'my_function\', 10);

     function my_function() {
        $args = array( \'post_type\' => \'post\', \'post_status\' => \'publish\');
        $pages = get_pages($args);
        foreach ( $pages as $page ) {
            // Do something here. Call your formatting function
            }
    }
编辑:如果绝对不能多次运行,请让函数查找布尔值为true或false的SQL表。如果false或table不存在,请运行函数,创建表格并将其设置为true。

SO网友:GhostToast

还可以考虑备份数据库并尝试SQL查找和替换。取决于您试图对所有帖子执行的操作:

UPDATE wp_posts SET post_content = replace(post_content, \'Find This String\', \'Replace With This String\');

结束