在更改辅助块时创建后期修订

时间:2019-02-04 作者:Tyler Sebastian

我希望能够跟踪slug/post_name 岗位字段。

我试过使用wp_save_post_revision(...); 如果我检测到缓动变化,但根据this page wordpress只跟踪特定字段,post_name 不是他们中的一员。

我是索尔还是有办法做到这一点?

1 个回复
SO网友:WebElaine

如果您熟悉PHP,那么就可以跟踪slug的更新时间。我能想到的唯一方法是有点复杂:

确保为您的安装和目标帖子类型启用了修订。您必须确定要保存多少修订,这将是您认为有人可能会更改帖子的次数(无论是一个小改动,还是内容,或帖子的任何内容)与您允许数据库使用所有这些额外数据变得多臃肿之间的平衡。

为Posteta字段添加版本控制,您将使用该字段跟踪每个版本的slug。首先安装插件“WP-Post-Meta-Revisions.“然后,在自定义插件或子主题中functions.php 文件:

add_filter(\'wp_post_revision_meta_keys\', \'wpse_track_slug_postmeta\');

function wpse_track_slug_postmeta() {
    // Access the array of postmeta keys that is already versioned
    global $versionedKeys;

    // Add your custom postmeta key to the array
    $versionedKeys[] = \'versionedSlug\';

    // Pass the array back to WordPress
    return $versionedKeys;
}
完成此操作后,每次保存修订时,都会保存该特定修订的postmeta“versionedSlug”。

每次保存修订时,您都需要告诉WP将slug保存为“versionedSlug”后的版本。您可以使用wp_insert_post 挂钩:

// Every time WP inserts a post, run this function
add_action(\'wp_insert_post\', \'wpse_save_slug_postmeta\');

function wpse_save_slug_postmeta($post_id, $post, $update) {
    // Make sure this is a revision
    if(wp_is_post_revision($post_id)) {
        // Save the slug as postmeta
        // First parameter is the post ID of the revision
        // Second parameter is what you want to call this postmeta key
        // Third parameter is what you\'re saving - the slug itself
        update_post_meta($post->ID, \'versionedSlug\', $post->slug);
    }
}
然后,您必须决定如何访问此数据。如果您只想浏览帖子的修订,修订比较视图将显示slug何时更改,因为它现在显式保存为posmeta。您还可以根据需要创建各种报告或小部件。

相关推荐

wp_list_tables bulk actions

如何在扩展的WP\\U List\\U表中触发批量操作。我一直在将以下批量操作添加到may table的选择框中,但在Apply上不会发生任何事情下面是我如何添加批量操作的function get_bulk_actions() { $actions = array( \'delete\' => \'Delete\', \'parsing\' => \'Parsen\' );