これは主にこの質問の続きであり、コードは同じです。マーカー オーバーレイがクリック可能になりましたが、それらはすべて、クリックされたマーカーに対応する投稿ではなく、現在アクティブなマーカーに関連付けられている投稿にリンクされています。(サイトへのリンクは 役に立つと思います - すべてロシア語で申し訳ありません)。
それが PHP/WordPress の問題 ('the_permalink' ではなく何かである必要がありますか?) なのか、jQuery/Gmap3 の問題なのかわかりません。そのため、すべてのタグをリストしています。
私の推測では、et_add_marker 関数の定義が重要である可能性があるため、これを大きなコードにしています。私が取り組んでいる部分は、「以下は追加されたコードです」とマークされています。
function et_add_marker( marker_order, marker_lat, marker_lng, marker_description ){
var marker_id = 'et_marker_' + marker_order;
$et_main_map.gmap3({
marker : {
id : marker_id,
latLng : [marker_lat, marker_lng],
options: {
icon : "<?php echo get_template_directory_uri(); ?>/images/blue-marker.png"
},
events : {
click: function( marker ){
if ( et_active_marker ){
et_active_marker.setAnimation( null );
et_active_marker.setIcon( '<?php echo get_template_directory_uri(); ?>/images/blue-marker.png' );
}
et_active_marker = marker;
<!--marker.setAnimation( google.maps.Animation.BOUNCE);-->
marker.setIcon( '<?php echo get_template_directory_uri(); ?>/images/red-marker.png' );
$(this).gmap3("get").panTo( marker.position );
$.fn.et_simple_slider.external_move_to( marker_order );
},
mouseover: function( marker ){
$( '#' + marker_id ).css( { 'display' : 'block', 'opacity' : 0 } ).stop(true,true).animate( { bottom : '15px', opacity : 1 }, 500 );
},
mouseout: function( marker ){
$( '#' + marker_id ).stop(true,true).animate( { bottom : '50px', opacity : 0 }, 500, function() {
$(this).css( { 'display' : 'none' } );
} );
}
}
},
overlay : {
latLng : [marker_lat, marker_lng],
options : {
content : marker_description,
offset : {
y:-42,
x:-122
}
},
/*Below is the added code, that should make overlay link to a corresponding WP post. This way it links to the post, associated with the active marker, not the clicked marker. */
events : {
click: function (marker) {
location.href = "<?php the_permalink(); ?>";
}
/*End of the added code*/
}
}
});
}
<?php
$i = 0;
while ( have_posts() ) : the_post();
$et_location_lat = get_post_meta( get_the_ID(), '_et_listing_lat', true );
$et_location_lng = get_post_meta( get_the_ID(), '_et_listing_lng', true );
$et_location_rating = '<div class="location-rating"></div>';
if ( ( $et_rating = et_get_rating() ) && 0 != $et_rating )
$et_location_rating = '<div class="location-rating"><span class="et-rating"><span style="' . sprintf( 'width: %dpx;', esc_attr( $et_rating * 17 ) ) . '"></span></span></div>';
if ( '' != $et_location_lat && '' != $et_location_lng ) {
?>
et_add_marker( <?php printf( '%1$d, %2$s, %3$s, \'<div id="et_marker_%1$d" class="et_marker_info"><div class="location-description"> <div class="location-title"> <h2>%4$s</h2> <div class="listing-info"><p>%5$s</p></div> </div> ' . $et_location_rating . ' </div> <!-- .location-description --> </div> <!-- .et_marker_info -->\'',
$i,
esc_html( $et_location_lat ),
esc_html( $et_location_lng ),
get_the_title(),
wp_strip_all_tags( addslashes( get_the_term_list( get_the_ID(), 'listing_type', '', '' ) ) )
); ?> );