在对这个问题进行了大量处理之后,我想我在这里找到了一个相当好的解决方案。我意识到这是一年多前你提出的问题,但这让我很困扰,直到现在我才找到一个好的解决方案。
问题是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元数据过滤器不变,并允许修改原始值。