在对这个问题进行了大量处理之后,我想我在这里找到了一个相当好的解决方案。我意识到这是一年多前你提出的问题,但这让我很困扰,直到现在我才找到一个好的解决方案。
问题是get\\u post\\u metadata函数不允许您访问当前值。这意味着您无法转换该值,只需替换它即可。我需要将内容附加到一个元字段,它的输出位置不允许任何类型的过滤器。
这是我的解决方案,根据这个问题的要求进行了修改:
function getqtlangcustomfieldvalue($metadata, $object_id, $meta_key, $single){
    // Here is the catch, add additional controls if needed (post_type, etc)
    $meta_needed = \'fields_titles\';
    if ( isset( $meta_key ) && $meta_needed == $meta_key ){
        remove_filter( \'get_post_metadata\', \'getqtlangcustomfieldvalue\', 100 );
        $current_meta = get_post_meta( $object_id, $meta_needed, TRUE );
        add_filter(\'get_post_metadata\', \'getqtlangcustomfieldvalue\', 100, 4);
        // Do what you need to with the meta value - translate, append, etc
        // $current_meta = qtlangcustomfieldvalue_translate( $current_meta );
        // $current_meta .= \' Appended text\';
        return $current_meta;
    }
    // Return original if the check does not pass
    return $metadata;
}
add_filter( \'get_post_metadata\', \'getqtlangcustomfieldvalue\', 100, 4 );
 这将保持任何其他get\\u post\\u元数据过滤器不变,并允许修改原始值。