存储自定义帖子类型的元数据修订

时间:2015-04-21 作者:FuzzyYoda

存储自定义帖子类型的元数据很容易,只需使用处理此操作的方法添加“save\\u post”操作即可。在其中,对于要存储的字段,您有如下内容(当然还有通常的安全检查):

update_post_meta( $post_id, \'_description\', $_POST[\'_description\'] );
很简单。然而,我不知道我需要做什么,以便WordPress存储自定义帖子的修订。

我为自定义帖子类型启用了修订,并为“title”等标准字段启用了修订。但默认情况下,它不适用于元数据。

我一直在寻找其他人是如何做到这一点的,几乎所有人都给出了以下代码片段:

function my_plugin_save_post( $post_id, $post ) {

    if ( $parent_id = wp_is_post_revision( $post_id ) ) {

        $parent  = get_post( $parent_id );
        $my_meta = get_post_meta( $parent->ID, \'my_meta\', true );

        if ( false !== $my_meta )
              add_metadata( \'my_custom_post\', $post_id, \'my_meta\', $my_meta );
    }

} add_action( \'save_post\', \'my_plugin_save_post\' );
但这对我不起作用。当我更改其中一个元数据字段时,在修订列表中看不到新修订。例如,当我更改自定义帖子的标题时,我确实看到了新的修订。

与我通常存储元数据的方式相比,我对如何实现这一点的一些细节不太熟悉(可能是因为不熟悉API的这一部分或数据结构)。或者我因为感冒错过了什么。

有谁能举一个好例子,说明您需要如何存储自定义帖子元数据的修订?

1 个回复
SO网友:phatskat

您可以(但不应该)访问一个私有筛选器:

Defined in wp-includes/revision.php:

/**
 * Filter the list of fields saved in post revisions.
 *
 * Included by default: \'post_title\', \'post_content\' and \'post_excerpt\'.
 *
 * Disallowed fields: \'ID\', \'post_name\', \'post_parent\', \'post_date\',
 * \'post_date_gmt\', \'post_status\', \'post_type\', \'comment_count\',
 * and \'post_author\'.
 *
 * @since 2.6.0
 * @since 4.5.0 The `$post` parameter was added.
 *
 * @param array $fields List of fields to revision. Contains \'post_title\',
 *                      \'post_content\', and \'post_excerpt\' by default.
 * @param array $post   A post array being processed for insertion as a post revision.
 */
$fields = apply_filters( \'_wp_post_revision_fields\', $fields, $post );
所以你可以写一个函数

add_filter( \'_wp_post_revision_fields\', \'add_my_own_fields\', 10, 2 );

function add_my_own_fields( $fields, $post ) {
    $fields[\'meta_field\'] = \'Meta Field\';
}
在哪里meta_field 是您想要修改的元的关键,并且\'Meta Field\' 是在修订UI中显示为标题的内容。

Please 注意,这是私有的,它的用途是not 面向主题或插件开发人员。需要更详细的解决方案来避免这个问题,如果有一个插件也能处理这些问题,你可能会过得更好。

结束

相关推荐

列出分类法:如果分类法没有POST,就不要列出分类法--取决于定制的POST-META?

这可能很难解释,我不知道是否有解决办法!?我有一个名为“wr\\u event”的自定义帖子类型和一个名为“event\\u type”的分层自定义分类法。自定义帖子类型有一个元框,用于event_date 并且与此帖子类型关联的所有帖子都按以下方式排序event_date. 我在循环中有一个特殊的条件来查询event_date 已经发生了-在这种情况下,它没有显示,但只列在我的档案中。就像你可以使用wp_list_categories() 我编写了一个自定义函数,它以完全相同的方式列出所有分类术语。现在