我想输出一个位置列表作为一个表,并在地图上标记它们。为此,我在WordPress中使用带有属性"Address“的Pods创建了一个内容类型。有了Pods短代码,我就可以创建表并列出所有条目。使用另一个Pods短代码,我可以生成一个传单短代码。
问题是传单短代码输出到前端,而不是由传单解释为地图。如果我使用从后端前端生成的Pods生成的传单短代码,则映射将按需要工作。
我担心出现这个问题是因为没有考虑并实现由一个短代码生成的短代码。
我已经创建了一个WordPress页面,并注意到以下短代码:
[pods name="locations"]<br /><br />[/pods][pods name="locations"]<br />[leaflet-marker address="{@locations-address}"]<br />[/pods]
在前端输出一个正确的短代码:
[leaflet-marker address="Ingolstädter Str. 101, 80939 München"]
在与WordPress传单插件开发人员协商后,我尝试用XYZ代码插入函数:
<?php
$a = do_shortcode( '[pods name="locations"][leaflet-marker]' . '[' . 'leaflet-marker address={@locations-address}' . ']' . '<br>[/pods]');
echo "[leaflet-map] $a [leaflet-marker]";
?>结果更好,因为映射在很大程度上是按需要生成的,但是当我将XYZ代码插入WordPress页面时,就不会输出任何映射。
发布于 2022-03-29 12:38:50
默认情况下,在Pods短代码中包含一个短代码将无法工作。如果需要使用此功能,则需要在wp_config.php文件中包含以下常量:
define('PODS_SHORTCODE_ALLOW_SUB_SHORTCODES',true);然后,如果需要解析Pods模板、自定义模板或Pods短代码中的短代码,只需将shortcodes=1添加到Pods短代码中即可。
也可以使用下面的筛选器使其始终处于启用状态:
add_filter( 'pods_shortcode', function( $tags ) {
$tags[ 'shortcodes' ] = true;
return $tags;
});所有这些都被解释为在波德的文件。
发布于 2022-03-29 13:13:13
在此期间,我找到了解决办法。关键字是嵌套的短代码(API接口)和函数"do_shortcode()“。
通过使用自定义WordPress插件来运行脚本并将其输出为自定义的短代码,我能够按需要生成映射。为此,我使用了以下代码。需要注意的是,"do_shortcode()“必须使用两次,一次用于Pods,一次用于传单。
function map_func( $atts ){
$leaflet_map_shortcode = "[leaflet-map lat=48.13391418715657 lng=11.582841421510087 zoom=15 fitbounds max_zoom=19]";
$leaflet_map = do_shortcode($leaflet_map_shortcode);
$placese_marks_shortcode = '[pods name="places"]<br />[leaflet-marker address="{@places-address}" [...] [/leaflet-marker]<br />[/pods]';
$placese_marks = do_shortcode($placese_marks_shortcode);
$placese_marks2 = do_shortcode($placese_marks);
return $leaflet_map . $placese_marks2;
}
add_shortcode( 'map2', 'map_func' );https://stackoverflow.com/questions/71659022
复制相似问题