通过数据属性显示WordPress the_Content()

时间:2019-01-19 作者:blogob

这是一把测试小提琴:我的小提琴:https://jsfiddle.net/blogob/qtou84Lj/23/

我正试图在wordpress网站上用传单绘制一幅全幅地图。

我的目标是在地图上用标记播放所有帖子。当我单击标记时,会出现一个侧栏,其中包含相应的内容。它正在工作。

但我有一个我无法解决的问题。我们可以在小提琴中看到它,当我移动地图时,我可以看到地图后面的“内容”。所以我把它放在侧边栏上,也放在页面上,在地图后面。在我的wordpress网站上也是这样:我的帖子包含标题、视频和描述。当我将地图悬停在某个地方时,我可以单击地图后面的视频,它会将我重定向到youtube。。所以这对我来说是个大问题。通过数据属性显示内容是否更好,我尝试过,但没有成功。如果我将内容放在数据属性中,则地图不会显示在页面中。我不明白为什么这篇文章被复制了。。

2 个回复
最合适的回答,由SO网友:blogob 整理而成

好吧,我终于做到了。在我的php文件中,对于传单图:

<div id="mapid">
         <?php  
          // Default arguments
         if ( have_posts() ) : ?>
                            <?php
                            /* Start the Loop */
                            while ( have_posts() ) : the_post();
        $lat = get_post_meta( $post->ID, \'lat\', true );
        $lng = get_post_meta( $post->ID, \'lng\', true );
        ob_start();
        the_content();
        $content = ob_get_clean();
        ?>
        <div class="marker"  data-url="<?php the_permalink(); ?>"  

            data-lat="<?php echo $lat; ?>" 
            data-lng="<?php echo $lng; ?>"
            data-content="<?php echo esc_attr($content); ?>">
        </div>
         <?php
      endwhile;

    // Reset post data
    wp_reset_postdata();?>
     <?php endif; ?>
    </div>
    <div id="sidebar">
    </div>
我尝试了这里建议的解决方案:

data-content="<?php echo esc_attr( get_the_content() ); ?>"
但是get\\u the\\u content()不会自动嵌入视频。如果我尝试使用“the\\u content”

data-content="<?php echo esc_attr( get_the_content() ); ?>"

<div class="marker"  data-url="<?php the_permalink(); ?>"  

            data-lat="<?php echo $lat; ?>" 
            data-lng="<?php echo $lng; ?>"
            >

它复制了我在页面和地图上的帖子。因此,最后一个解决方案只允许我显示地图和标记,而不复制帖子,并允许我在侧栏中正确显示内容

在js文件中:

  $(\'.marker\').each(function() {

    var lat = $(this).attr(\'data-lat\')
    var lng = $(this).attr(\'data-lng\')
    var text = $(this).attr(\'data-content\')
    var sidebar =$(\'#sidebar\')
    var marker = new L.marker([ lat, lng ]).addTo(map)

    marker.on(\'click\',function(){
        sidebar.addClass(\'move\')
        sidebar.html(text)
    })
    map.on(\'click\',function(){
        sidebar.removeClass(\'move\')
    })

});
我还必须为页面中的所有容器指定一个100%的高度,因为没有这个高度,我的页面是空白的。感谢Krzysiek Dródż对您的帮助。

SO网友:Krzysiek Dróżdż

你所要做的就是正确地逃避它。

在您的代码中,您使用esc\\U html转义摘录,但您将其放在属性中-因此它不安全,可能会破坏您的网站。

您应该使用esc\\u attr转义属性。然后您也可以放置内容:

data-content="<?php echo esc_attr( get_the_content() ); ?>"