好的,所以我设法让 Masonry 在 Wordpress 上使用 Infinite 滚动,使用 Fancybox 作为插件,以便能够单击图像以放大并显示一些文本。我遇到的最后一个问题是能够显示正确的数据。
这是我在页脚中的内容:
jQuery(function(){
var $container = jQuery('#pageRowMasonry');
$container.imagesLoaded(function(){
$container.masonry({
itemSelector: '.pageGalleryContainer',
columnWidth: 100
});
});
$container.infinitescroll({
navSelector : '.page-nav', // selector for the paged navigation
nextSelector : '.page-nav a', // selector for the NEXT link (to page 2)
itemSelector : '.pageGalleryContainer', // selector for all items you'll retrieve
loading: {
finishedMsg: 'No more pages to load.',
img: 'http://i.imgur.com/6RMhx.gif'
}
},
// trigger Masonry as a callback
function( newElements ) {
// hide new items while they are loading
var $newElems = jQuery( newElements ).css({ opacity: 0 });
// ensure that images load before adding to masonry layout
$newElems.imagesLoaded(function(){
// show elems now they're ready
$newElems.animate({ opacity: 1 });
$container.masonry( 'appended', $newElems, true );
});
jQuery(newElements).each(function() {
// Image hovers
jQuery(this).on("hover",function(){
jQuery(this).find('img').toggleClass('pageGalleryContainerImageRollover');
jQuery(this).find('h3').toggleClass('displayNone');
});
jQuery(this).on("click",function(){
jQuery.ajax({
type: 'GET',
url: 'http://beta.website.com/wp-content/themes/photographersinc/update-session.php',
data: { galleryValue: jQuery(this).find('img').attr("alt") },
success: function( msg ) {
jQuery('#fancybox-title-over').html(msg);
}
});
});
// Fancybox
jQuery("a.fancybox").fancybox({
// fancybox API options here
'padding': 10,
'titlePosition' : 'over',
'titleFromAlt' : true
});
jQuery("#fancybox-left").on("click",function(){
jQuery.ajax({
type: 'GET',
url: 'http://beta.website.com/wp-content/themes/photographersinc/update-session-previous.php',
data: { galleryValue: jQuery('#fancybox-content').find('img').attr("alt") },
success: function( msgDirection ) {
jQuery('#fancybox-title-over').html(msgDirection);
}
});
});
jQuery(document).keydown(function(e){
if (e.keyCode == 37) {
jQuery.ajax({
type: 'GET',
url: 'http://beta.website.com/wp-content/themes/photographersinc/update-session-previous.php',
data: { galleryValue: jQuery('#fancybox-content').find('img').attr("alt") },
success: function( msgDirection ) {
jQuery('#fancybox-title-over').html(msgDirection);
}
});
}
});
jQuery("#fancybox-right").on("click",function(){
jQuery.ajax({
type: 'GET',
url: 'http://beta.website.com/wp-content/themes/photographersinc/update-session-next.php',
data: { galleryValue: jQuery('#fancybox-content').find('img').attr("alt") },
success: function( msgDirection ) {
jQuery('#fancybox-title-over').html(msgDirection);
}
});
});
jQuery(document).keydown(function(e){
if (e.keyCode == 39) {
jQuery.ajax({
type: 'GET',
url: 'http://beta.website.com/wp-content/themes/photographersinc/update-session-next.php',
data: { galleryValue: jQuery('#fancybox-content').find('img').attr("alt") },
success: function( msgDirection ) {
jQuery('#fancybox-title-over').html(msgDirection);
}
});
}
});
});
});
});
这现在针对一个 php 脚本,具体取决于下一个 pr 上一个。
下一个脚本如下所示:
session_start();
if ($_GET['galleryValue']):
$ip = $_GET['galleryValue'];
// Connect to DB
define('DB_HOST', 'XXXXXX');
define('DB_USER', 'XXXXXX');
define('DB_PASS', 'XXXXXX');
define('DB_NAME', 'XXXXXX');
$link = mysql_connect(DB_HOST, DB_USER, DB_PASS) or die('Could not connect to MySQL DB ') . mysql_error();
$db = mysql_select_db(DB_NAME, $link);
$sql1 = "SELECT * FROM wp_posts WHERE ID = {$ip}";
$query1 = mysql_query($sql1);
$row1 = mysql_fetch_array($query1);
$sql = "SELECT * FROM wp_posts WHERE post_type = 'gallery' AND post_status = 'publish' AND post_title = (SELECT MIN(post_title) FROM wp_posts WHERE post_title > '".$row1['post_title']."')";
$query = mysql_query($sql);
$row = mysql_fetch_array($query);
// Look for before image in WP_postmeta
$sqlIMG1 = "SELECT * FROM wp_postmeta WHERE meta_key = 'gallery_gallery-before-image_thumbnail_id' AND post_id = '".$row['ID']."'";
$queryIMG1 = mysql_query($sqlIMG1);
$rowIMG1 = mysql_fetch_array($queryIMG1);
$sqlIMG2 = "SELECT * FROM wp_postmeta WHERE post_id = '".$rowIMG1['meta_value']."' AND meta_key = '_wp_attached_file'";
$queryIMG2 = mysql_query($sqlIMG2);
$rowIMG2 = mysql_fetch_array($queryIMG2);
if ($rowIMG2['meta_value'] != '') { $beforeImage = $rowIMG2['meta_value']; }
?>
<span class="fancybox-title"><?php echo $row['post_title']; ?></span>
<span class="fancybox-extraText"><strong>Read more about: </strong>
<?php
// Look for edited item in WP_postmeta
$sqlMETAS1 = "SELECT * FROM wp_term_relationships WHERE object_id = '".$row['ID']."'";
$queryMETAS1 = mysql_query($sqlMETAS1);
while ($rowMETAS1 = mysql_fetch_array($queryMETAS1)) {
$sqlMETAS2 = "SELECT * FROM wp_term_taxonomy WHERE term_taxonomy_id = '".$rowMETAS1['term_taxonomy_id']."'";
$queryMETAS2 = mysql_query($sqlMETAS2);
$rowMETAS2 = mysql_fetch_array($queryMETAS2);
$sqlMETAS3 = "SELECT * FROM wp_terms WHERE term_id = '".$rowMETAS2['term_id']."'";
$queryMETAS3 = mysql_query($sqlMETAS3);
$rowMETAS3 = mysql_fetch_array($queryMETAS3);
if ($rowMETAS3['name'] != 'Gallery') {
if ($rowMETAS3['name'] != 'Gallery (Double)') { ?>
<div class="fancyBoxTagList">
<a href="navigation.php?type=gallery-to-blog&tagged=<?php echo $rowMETAS3['slug']; ?>"><?php echo $rowMETAS3['name']; ?></a>
</div>
<?php
}
}
}
?>
</span>
<div class="fancybox-social">
<span><a href="https://www.facebook.com/sharer/sharer.php?u=<?php echo $row['guid']; ?>" target="_blank"><img src="http://beta.website.com/wp-content/themes/photographersinc/images/glyphIcon-Facebook.png" /></a></span>
<span><a href="https://twitter.com/intent/tweet?source=webclient&text=<<?php echo $row['post_title']; ?> by+%23photographersinc <?php echo $row['guid']; ?>" target="_blank"><img src="http://beta.website.com/wp-content/themes/photographersinc/images/glyphIcon-Twitter.png" /></a></span>
<span><a href="https://plus.google.com/share?url=<?php echo $row['guid']; ?>" target="_blank" onclick="javascript:window.open(this.href,"", "menubar=no,toolbar=no,resizable=yes,scrollbars=yes,height=600,width=600");return false;"><img src="http://beta.website.com/wp-content/themes/photographersinc/images/glyphIcon-GooglePlus.png" /></a></span>
<span><a target="_blank" href="http://pinterest.com/pin/create/button/?url=<?php echo $row['guid']; ?>" class="pin-it-button pinitBtnOverride" count-layout="horizontal"><img src="http://beta.website.com/wp-content/themes/photographersinc/images/glyphIcon-Pinterest.png" /></a></span>
</div>
<?php if ($beforeImage) { ?>
<script>
jQuery('#fancybox-img').after('<img id="fancybox-img-right" class="fancybox-img-before hidden" src="http://beta.website.com/wp-content/uploads/<?php echo $beforeImage; ?>" style="opacity: 0.1;" />');
setTimeout(function(){
jQuery(".fancybox-img-before").removeClass("hidden");
jQuery(".fancybox-img-before").animate({opacity:'1.0'});
},500)
</script>
<?php } ?>
这有点小技巧,但似乎确实有效。它加载下一个文本,标签,添加一个社交媒体栏,如果有的话,还会在fancybox的主图像顶部显示一个前图像。
我认为这与加载时间有关,任何接受者?