使用批量编辑时,在wp_UPDATE_POST之后调用set_post_Format吗?

时间:2015-11-17 作者:T Andrew

编辑:请参见下面的注释。更改问题以反映此新信息

根据我在《codex》中的理解,save\\u post意味着在保存帖子后(以及创建新帖子时)总是会触发。然而,在使用批量编辑时,我遇到了一些奇怪的行为。使用下面的代码,我的同步功能在使用快速编辑和批量编辑时运行得很好,但仅使用批量编辑时同步帖子格式除外。

要清楚的是,我正在同步的批量编辑中唯一可用的内容是作者、帖子格式、类别、标签和帖子状态。WordPress数据库中的all正在更新,但由于某些原因,只有作者、标记和类别使用my sync方法同步到外部数据库。Post格式不会同步,但如果我再次运行批量编辑操作,即使没有更改任何内容,也会发生同步,这最初让我认为save\\u Post函数在保存Post之前启动,导致旧数据同步,但如果其余的都能正常工作,那就不可能了(注意:我发现事实上是这样的,除了post\\u格式和设置粘性贴子(我不关心这些))。以下是我的主插件文件中的代码:

        require( plugin_admin_dir . \'plugin-sync.php\' );
        add_action( \'save_post\', \'savethepost\', 2000);
        function savethepost($post_id) {
            if (get_post_meta($post_id, \'_externaldb_post_donotsync\', true) == 1) {
                return;
            } else {
                if (get_post_status( $post_id ) != \'publish\') {
                    plugin_sync::externaldb_delete($post_id);
                } else {
                    plugin_sync::externaldb_sync($post_id);
                } // end if
            } // end if
        }
由于我最初发布了这篇文章,我发现在使用批量编辑时,set\\u post\\u格式出现在wp\\u update\\u post之后。在运行同步功能时,如何创建一个变通方法来获取新的帖子格式?还有别的钩子可以用吗?无论如何,我希望这是足够的信息。谢谢你的帮助。

1 个回复
最合适的回答,由SO网友:T Andrew 整理而成

我可以通过在save\\u post回调中调用set\\u post\\u format并确保检查其set和不等于“no change”选项来解决问题。不确定这是否是最好的方式,但它确实有效。

require( plugin_admin_dir . \'plugin-sync.php\' );
    add_action( \'save_post\', \'savethepost\', 2000);
    function savethepost($post_id) {
        if (get_post_meta($post_id, \'_externaldb_post_donotsync\', true) == 1) {
            return;
        } else {
            if (get_post_status( $post_id ) != \'publish\') {
                plugin_sync::externaldb_delete($post_id);
            } else {
                if ( isset( $_REQUEST[\'post_format\'] ) && $_REQUEST[\'post_format\'] != -1 ) {
                        set_post_format($post_id, $_REQUEST[\'post_format\']);
                    }
                plugin_sync::externaldb_sync($post_id);
            } // end if
        } // end if
    }

相关推荐

Custom Fields Bulk Edit

我有个问题。我正在运行detube主题,它有一个名为“dp\\u video\\u code”的自定义字段,我将视频嵌入代码放在其中。最近嵌入的代码发生了变化,我需要修改所有帖子中的视频代码(我需要将代码中的文本“预览”替换为“编辑”)。有没有办法一个接一个地发完所有的帖子?我可以使用sql查询吗?如果是,会是什么?我看到了一些插件,如“自定义字段批量编辑”,但这不是我搜索的内容。这是自定义字段的外观:谢谢