BBpress使用loop-single-reply.php和content-single-topic.php在主题内显示页面。我已经对这两个文件进行了编辑,以获得一些额外的功能。
一切正常,但是我不禁怀疑为什么我必须在loop-single-reply.php文件中放置一个javascript函数才能工作,而我又可以在content_single_topic.php中放置另一个javascript
这是我正在使用的代码,loop-single-reply.php:
<button class="button-best-like" onClick="return shareMeta('<?php echo $correct_link; ?>', '<?php echo $fb_excerpt; ?>', 'fb-image-<?php echo $reply_id; ?>'); ga('send','event','Facebook','share','like', 0)">
<i class="fa fa-facebook-official" aria-hidden="true" title="Share on Facebook"></i>
</button>
<script>
function shareMeta(link, description, replyId) {
var title = '<?php echo $fb_title; ?>';
var replyImages = document.getElementById(replyId).getElementsByTagName('img');
var defaultImage = '/uploads/2017/12/Hero-image.jpg';
var result;
if (replyImages.length > 0) {
for(var i=0, l=replyImages.length; i<l; i++) {
if(replyImages[i].height >= 200 && replyImages[i].width >= 200) {
result = i;
break;
}
}
if (result == null) {
var image = defaultImage;
} else {
var image = replyImages[result].src;
}
} else {
var image = defaultImage;
}
shareOverrideOGMeta(link, title, description, image);
}
</script>
以及content-single-topic.php代码
<script>
function shareOverrideOGMeta(overrideLink, overrideTitle, overrideDescription, overrideImage) {
FB.ui({
method: 'share_open_graph',
action_type: 'og.likes',
action_properties: JSON.stringify({
object: {
'og:url': overrideLink,
'og:title': overrideTitle,
'og:description': overrideDescription,
'og:image': overrideImage
}
})
});
}
</script>
当我尝试将shareMeta
函数放置在content-single-topic.php内时,所有操作都会停止。因此,我必须将其放入loop-single-reply.php中才能工作。但是在这种情况下,该功能被打印了15次,这似乎有点
为什么?有没有更好的办法? 请记住,这是我第一次尝试使用javascript,因此可能有更好的方法。