giovanni ricciardi
Estoy tratando de obtener algunos campos personalizados dentro de mi generador de cuadrícula personalizado. He agregado alguna taxonomía adicional y me gustaría agregar datos personalizados para mostrar. He leído tu artículo aquí: https://kb.wpbakery.com/docs/developers-how-tos/adding-custom-shortcode-to-grid-builder/ y al implementarlo, tengo un problema al intentar obtener la identificación de la publicación actual. Sé que el código es el siguiente:
add_shortcode( 'vc_post_id', 'vc_post_id_render' );
function vc_post_id_render() {
return '<h2>{{ post_data:ID }}</h2>'; // usage of template variable post_data with argument "ID"
}
El caso es que los {{ post_data:ID }} no se pueden guardar en una variable para luego obtener la publicación y jugar con ella como tal:
$post_id = '{{ post_data:ID }}';
$post = get_post($post_id);
como fallará. ¿Podría decirme cómo obtener la ID de la publicación actual como una variable para poder mostrar datos personalizados en la cuadrícula?
Muchísimas gracias.
Ok, aquí lo que estoy pensando. En mi escenario, tengo un campo personalizado llamado precio. Entonces pude mostrar el precio usando
{{ post_data:price }}
Este. Pero cuando estaba tratando de asignarlo a una variable, falló. Cuando var_dump la variable me da (21) caracteres para cada vez. Así que pensé que debía haber personajes invisibles. asique
echo bin2hex($price)
El resultado fue 7b7b20706f73745f646174613a7072696365207d7d
Y después de la conversión de ASCII a texto, se convirtió en esto
{{ post_data:price }}
Entonces me di cuenta. Oh tonto de mí. Estas son etiquetas de plantilla. Como en smarty o angular. Inyectaron valores una vez que la página se ha cargado. Entonces, PHP no tiene la oportunidad de obtener valor porque todo sucede en el lado del cliente.
-
¡Has explicado muy bien el problema! pero no dio ninguna solución alternativa.
– Rakesh
26 de agosto de 2019 a las 11:54
necesita crear vc_gitem_template_attribute_YOUR_ATTRIBUTE y allí puede tomar la identificación. como esto:
add_filter( 'vc_gitem_template_attribute_producer_logo', 'vc_gitem_template_attribute_producer_logo', 10, 2 );
function vc_gitem_template_attribute_producer_logo( $value, $data ) {
extract( array_merge( array(
'post' => null,
'data' => '',
), $data ) );
$termini = get_the_terms( $post->ID, 'producer' );
$logo = get_field('prlogo', $termini[0]);
$image="<img class="img-prod" src="" . $logo . '">';
return $image;
}
y renderizar
add_shortcode( 'producer_logo', 'vc_producer_logo_render' );
function vc_producer_logo_render($atts, $content, $tag) {
return '{{producer_logo}}';
}
Estoy teniendo el mismo problema. ¿¡Lo has descubierto!?
–Tiffany Israel
1 de junio de 2017 a las 16:38
Parece que devuelve un valor de cadena. Estoy tratando de resolver esto. actualizaré si encuentro algo
– amilaishere
7 de junio de 2017 a las 10:59
¿Alguna vez descubriste cómo hacer esto? Tengo el mismo problema en este momento y no puedo encontrar ninguna información clara en ningún lado.
–Alfie Robles
9 jun 2018 a las 22:55