修改帖子自定义域时使用的最佳过滤器?

时间:2014-09-29 作者:Shawn

编辑帖子自定义字段的最佳过滤器是什么?我不是在编辑帖子内容,而是在编辑一些相关的字段。是吗add_filter(\'the_content\', \'edit_custom_fields\');? 在这里使用“the\\u content”似乎很奇怪,所以我想知道是否有更合适的方法。

2 个回复
最合适的回答,由SO网友:Nicolai Grossherr 整理而成

好的,这实际上是关于output 正如你在评论中所说的那样。

我想你知道,你可以这样修改:

// assumed a single result is returned as string
$your_post_meta = get_post_meta( get_the_ID(), \'your_post_meta\', true );
// lets add something
$your_modified_post_meta = \'My post meta: \' . $your_post_meta;
到目前为止,我想说的是,根据返回值可能是一个数组,您可以对数据类型进行几乎任何可能的修改,但这可能是一个不同的PHP重量级主题。

当然你实际上是在问hook 可以用来做这样的事情。检索您正在使用的帖子元get_post_meta() - source - 我想,这是get_metadata() - source. 在…内get_metadata() 我们找到了过滤器挂钩get_{$meta_type}_metadata - source - 它是可变的,取决于$meta_type, 这意味着对于post meta来说get_post_metadata.

它可以这样使用:

add_filter(
    \'get_post_metadata\',
    \'wpse162923_change_post_meta_out\'
);
function wpse162923_change_post_meta_out(
    $check,
    $object_id,
    $meta_key,
    $single
) {
    if ( $meta_key == \'your_post_meta\' ) {
        $your_post_meta = get_post_meta(
            $object_id,
            \'your_post_meta\',
            $single
        );
        $check =
            \'My post meta: \'
            . $your_post_meta;
    }
    return $check;
}
注意:以上只是示例,因此请根据您的需要进行调整。

SO网友:Howdy_McGee

嗯,您可以在保存帖子时使用save_post 过滤器-View Codex

Codex Example

/**
 * Save post metadata when a post is saved.
 *
 * @param int $post_id The ID of the post.
 */
function save_book_meta( $post_id ) {

    /*
     * In production code, $slug should be set only once in the plugin,
     * preferably as a class property, rather than in each function that needs it.
     */
    $slug = \'book\';

    // If this isn\'t a \'book\' post, don\'t update it.
    if ( $slug != $_POST[\'post_type\'] ) {
        return;
    }

    // - Update the post\'s metadata.

    if ( isset( $_REQUEST[\'book_author\'] ) ) {
        update_post_meta( $post_id, \'book_author\', sanitize_text_field( $_REQUEST[\'book_author\'] ) );
    }

    if ( isset( $_REQUEST[\'publisher\'] ) ) {
        update_post_meta( $post_id, \'publisher\', sanitize_text_field( $_REQUEST[\'publisher\'] ) );
    }

    // Checkboxes are present if checked, absent if not.
    if ( isset( $_REQUEST[\'inprint\'] ) ) {
        update_post_meta( $post_id, \'inprint\', TRUE );
    } else {
        update_post_meta( $post_id, \'inprint\', FALSE );
    }
}
add_action( \'save_post\', \'save_book_meta\' );
如上所示,您可以$_REQUEST 发布元数据,根据需要对其进行更改或修改,然后保存。

结束

相关推荐

注意:未定义索引:SUPPRESS_FILTERS

我正在做一个主题的除虫工作,我希望有人能帮助我。我使用JustinTadlock创建的这个函数在博客页面上显示自定义帖子类型,并且将wp debug设置为true,我会收到一个通知:未定义索引:suppress\\u filters消息。代码如下:// Custom Post Type for the public blog posts to show on Index or blog page add_filter( \'pre_get_posts\', \'my_get_posts\' );&