我正在尝试在自定义网格构建器中获取一些自定义字段。我添加了一些额外的分类法,并希望添加自定义数据来显示。我在这里阅读了你的文章:https://kb.wpbakery.com/docs/developers-how-tos/adding-custom-shortcode-to-grid-builder/并且在实现它时,我在尝试获取当前帖子ID的ID时遇到了问题。我知道代码如下:
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"
}
问题是{{post_data:ID}}无法保存到变量中,以便以后获取帖子并使用它:
$post_id = '{{ post_data:ID }}';
$post = get_post($post_id);
因为它会失败。您能否告诉我如何将当前的帖子ID作为变量,以便我可以在网格上显示自定义数据?
非常感谢。
答案 0 :(得分:3)
好的,这就是我的想法。在我的场景中,我有一个名为price的自定义字段。 所以我能够通过使用
来显示价格{{ post_data:price }}
此。但是当我试图将它分配给变量时,它失败了。当我var_dump变量时,它每次给我(21)个字符。所以我认为必须有隐形人物。所以我
echo bin2hex($price)
结果是7b7b20706f73745f646174613a7072696365207d7d
在ASCII到文本转换之后,它变成了这个
{{ post_data:price }}
然后我意识到了。哦,傻我。这些是模板标签。喜欢聪明或棱角分明。一旦页面加载,它们就会注入值。所以PHP没有机会获得价值,因为客户端发生了一切。
答案 1 :(得分:0)
您需要创建vc_gitem_template_attribute_YOUR_ATTRIBUTE,然后可以在其中获取ID。像这样:
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;
}
并渲染
add_shortcode( 'producer_logo', 'vc_producer_logo_render' );
function vc_producer_logo_render($atts, $content, $tag) {
return '{{producer_logo}}';
}