¿Cómo enganchar un filtro para capturar get_post_meta cuando alterna un resultado de campo personalizado?
He llenado un campo personalizado (metadatos) en una publicación, así:
<!--:de-->Nominale spanning<!--:--><!--:zh/cn-->额定电压<!--:--><!--:en-->Arrester Accessories<!--:-->
Necesito traducir esta salida, así que me pregunto cómo conectarme a "get_post_meta" antes de la salida de metadatos.
Esto es lo que he probado durante unos días, pero no tuve suerte.
function getqtlangcustomfieldvalue($metadata, $object_id, $meta_key, $single){
$fieldtitle="fields_titles";
if($meta_key==$fieldtitle&& isset($meta_key)){
//here is the catch, but no value has been passed
}
}
//Specify 4 arguments for this filter in the last parameter.
add_filter('get_post_metadata', 'getqtlangcustomfieldvalue', 10, 4);
Respuestas:
Después de mucho jugar con esto, creo que encontré una solución bastante buena aquí. Me doy cuenta de que esto es más de un año después de que lo preguntaste, pero esto me estaba molestando y no pude encontrar una buena solución hasta ahora.
El problema es que la función get_post_metadata no le permite acceder al valor actual. Esto significa que no puede transformar el valor, solo reemplácelo. Necesitaba agregar contenido a un metacampo y donde se imprimía no permitía ningún tipo de filtro.
Aquí está mi solución, modificada para ajustarse a lo que esta pregunta pregunta:
Esto mantendrá intactos cualquier otro filtro get_post_metadata y permitirá la modificación del valor original.
fuente
Acabo de tener el mismo problema y, usando su código anterior, así es como lo resolví:
Intenté usar apply_filters, get_metadata, get_post_meta directamente dentro de la función, pero no me permitieron manipular el resultado resultante, así que recurrí al uso de $ wpdb.
fuente
get_post_meta()
Aquí está mi solución para filtrar metadatos. Esto luego llama a una función personalizada para realizar cualquier manipulación de datos requerida.
fuente