BBpress использует loop-single-reply.php и content-single-topic.php для отображения страницы внутри темы. Я отредактировал оба файла для дополнительной функциональности.
Все работает как надо, но я не перестаю удивляться, почему мне нужно разместить одну функцию javascript внутри файла loop-single-reply.php, а другую - в content_single_topic.php
Это код, с которым я работаю, 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, поэтому, возможно, есть лучший способ.