Bu, Josh Pollock'un konuk yazısıdır
Pinterest benzeri gönderi küçük resimlerinin ızgara görünümü bir süredir WordPress blog indeks sayfaları için popüler bir tasarım olmuştur. Popüler olmasının nedeni sadece popüler sosyal medya sitesinin görünümünü taklit etmesi değil, aynı zamanda ekrandaki alanı en iyi şekilde kullanmasıdır. Bir WordPress blog indeksinde, her gönderi önizlemesinin ekstra boşluk bırakmadan doğal olarak ihtiyaç duyduğu boyutta olmasına izin verir.
Bu öğreticide, popüler Masonry JavaScript Kütüphanesini kullanarak blog dizininiz ve temanızın arşiv sayfaları için basamaklı ızgara düzenleri oluşturmayı göstereceğim. Mobil optimizasyon için dikkate almanız gereken birkaç sorunu ve bunları nasıl çözeceğinizi ele alacağım.

Not: Bu, WordPress temalarını düzenlemekte rahat hisseden ve yeterli HTML/CSS bilgisine sahip olanlar için ileri düzey bir eğitimdir.
Adım 1: Temanıza Gerekli Kütüphaneleri Ekleyin
Güncelleme: WordPress 3.9 artık Masonry'nin en son sürümünü içeriyor.
Öncelikle Masonry'yi temanıza şu kodu kullanarak yüklemeniz gerekir:
if (! function_exists('slug_scripts_masonry') ) :
if ( ! is_admin() ) :
function slug_scripts_masonry() {
wp_enqueue_script('masonry');
wp_enqueue_style('masonry’, get_template_directory_uri().'/css/’);
}
add_action( 'wp_enqueue_scripts', 'slug_scripts_masonry' );
endif; //! is_admin()
endif; //! slug_scripts_masonry exists
Bu kod, masonry'yi yükler ve temanızın şablon dosyalarında kullanılabilir hale getirir (JavaScript ve Stilleri WordPress'e Doğru Şekilde Ekleme kılavuzumuza bakın). Ayrıca, her ikisi için de jQuery'yi bağımlılık olarak eklemediğimizi unutmayın. Masonry 3'ün avantajlarından biri, jQuery gerektirmemesi ancak onunla birlikte kullanılabilmesidir. Deneyimlerime göre, Masonry'yi jQuery olmadan başlatmak daha güvenilirdir ve sayfa yükleme süreleri ve uyumluluk sorunları ile yardımcı olabilecek jQuery yüklemesini atlama olasılığını açar.
Adım 2: Javascript'i Başlatın
Bu sonraki fonksiyon Masonry'yi kurar, onunla kullanılacak kapsayıcıları tanımlar ve ayrıca her şeyin doğru sırada olmasını sağlar. Masonry, ızgarasını dinamik olarak düzenlemek için sayfadaki her bir öğenin boyutunu hesaplamalıdır. Masonry ile birçok tarayıcıda karşılaştığım bir sorun, Masonry'nin yavaş yüklenen resimlere sahip öğelerin yüksekliğini yanlış hesaplaması, bu da üst üste binen öğelere yol açmasıdır. Çözüm, tüm resimler yüklenene kadar Masonry'nin düzeni hesaplamasını önlemek için imagesLoaded kullanmaktır. Bu, doğru boyutlandırmayı sağlar.
Bu, sayfa altbilgisinde başlatma betiğini çıktılayacak fonksiyon ve eylemdir:
if ( ! function_exists( 'slug_masonry_init' )) :
function slug_masonry_init() { ?>
<script>
//set the container that Masonry will be inside of in a var
var container = document.querySelector('#masonry-loop');
//create empty var msnry
var msnry;
// initialize Masonry after all images have loaded
imagesLoaded( container, function() {
msnry = new Masonry( container, {
itemSelector: '.masonry-entry'
});
});
</script>
<?php }
//add to wp_footer
add_action( 'wp_footer', 'slug_masonry_init' );
endif; // ! slug_masonry_init exists
Fonksiyon, satır içi yorumlarla adım adım açıklanmıştır. Javascript fonksiyonu, Masonry'ye "masonry-loop" kimliğine sahip bir kapsayıcı içindeki "masonry-entry" sınıfına sahip öğeleri araması ve yalnızca resimler yüklendikten sonra ızgarayı hesaplaması talimatını verir. Dış kapsayıcıyı querySelector ile, iç kapsayıcıyı ise itemSelector ile ayarladık.
Adım 2: Masonry Döngüsü Oluşturma
Masonry için HTML işaretlemesini doğrudan bir şablona eklemek yerine, bunun için ayrı bir şablon parçası oluşturacağız. “content-masonry.php” adında yeni bir dosya oluşturun ve temanıza ekleyin. Bu, Masonry döngüsünü istediğiniz kadar farklı şablona eklemenize olanak tanır.
Yeni dosyanıza aşağıda gösterilen kodu ekleyeceksiniz. İşaretleme, normalde herhangi bir içerik önizlemesi için göreceğiniz şeye benzer. İstediğiniz gibi değiştirebilirsiniz, yalnızca en dıştaki öğenin son adımda itemSelector olarak ayarladığımız “masonry-entry” sınıfına sahip olduğundan emin olun.
<article class="masonry-entry" id="post-<?php the_ID(); ?>" <?php post_class(); ?> >
<?php if ( has_post_thumbnail() ) : ?>
<div class="masonry-thumbnail">
<a href="<?php the_permalink(' ') ?>" title="<?php the_title(); ?>"><?php the_post_thumbnail('masonry-thumb'); ?></a>
</div><!--.masonry-thumbnail-->
<?php endif; ?>
<div class="masonry-details">
<h5><a href="<?php the_permalink(' ') ?>" title="<?php the_title(); ?>"><span class="masonry-post-title"> <?php the_title(); ?></span></a></h5>
<div class="masonry-post-excerpt">
<?php the_excerpt(); ?>
</div><!--.masonry-post-excerpt-->
</div><!--/.masonry-entry-details -->
</article><!--/.masonry-entry-->
Bu işaretleme, her bir parçası için sınıflara sahiptir, böylece temanıza uyacak şekilde işaretleme ekleyebilirsiniz. .masonry-entry'ye hoş, hafif yuvarlak bir kenarlık eklemeyi seviyorum. Başka bir güzel seçenek ise .masonry-entry için kenarlık olmaması, ancak hafif bir gölge verilmesidir. Bu, gönderi küçük resmi kapsayıcının kenarına kadar uzandığında özellikle iyi görünür; bu, .masonry-thumbnail'e her yönde 0 kenar boşluğu ve dolgu verilerek başarılabilir. Tüm bu stilleri temanızın css dizinindeki masonry.css adlı bir dosyaya eklemek isteyeceksiniz.
Adım 3: Şablonlara Masonry Döngüsü Ekle
Şablon parçamızı oluşturduğumuza göre, onu temanızdaki herhangi bir şablonda istediğiniz gibi kullanabilirsiniz. index.php'ye ekleyebilirsiniz, ancak kategori arşivleri için kullanılmasını istemiyorsanız category.php'ye eklemeyin. Yalnızca temanızın ana sayfasında, blog gönderilerini gösterecek şekilde ayarlandığında kullanılmasını istiyorsanız, home.php'yi kullanırsınız. Nereye seçerseniz seçin, döngünüzü "masonry-loop" kimliğine sahip bir kapsayıcıya sarmalısınız ve get_template_part() kullanarak şablon parçasını döngüye eklemelisiniz. while (have_posts() ) başlamadan önce masonry döngüsü kapsayıcısını başlattığınızdan emin olun.
Örneğin, twentythirteen'in index.php dosyasındaki ana döngü şöyledir:
<?php if ( have_posts() ) : ?>
<?php /* The loop */ ?>
<?php while ( have_posts() ) : the_post(); ?>
<?php get_template_part( 'content', get_post_format() ); ?>
<?php endwhile; ?>
<?php twentythirteen_paging_nav(); ?>
<?php else : ?>
<?php get_template_part( 'content', 'none' ); ?>
<?php endif; ?>
Ve işte Masonry döngümüzü kullanacak şekilde değiştirilmiş hali:
<?php if ( have_posts() ) : ?>
<div id="masonry-loop">
<?php /* The loop */ ?>
<?php while ( have_posts() ) : the_post(); ?>
<?php get_template_part( 'content', 'masonry' ?>
<?php endwhile; ?>
</div><!--/#masonry-loop-->
<?php twentythirteen_paging_nav(); ?>
<?php else : ?>
<?php get_template_part( 'content', 'none' ); ?>
<?php endif; ?>
Adım 4: Masonry Öğelerinin Duyarlı Genişliklerini Ayarlayın
Her bir Masonry öğesinin genişliğini ayarlamanın birkaç yolu vardır. Masonry'yi başlatırken genişliği piksel cinsinden bir sayıyla ayarlayabilirsiniz. Bunu yapmaktan hoşlanmıyorum çünkü duyarlı temalar kullanıyorum ve küçük ekranlarda işleri doğru yapmak için bazı karmaşık medya sorguları gerektiriyor. Duyarlı tasarımlar için, .masonry-entry için bir genişlik değeri belirlemenin en iyi şey olduğunu gördüm, satırda kaç öğe istediğinize bağlı olarak bir yüzdeyle ve gerisini Masonry'nin sizin için hesaplamasına izin verin.
Tüm bu, yüzü, stil.css dosyanızda basit bir girişle yüzdeyi ayarlamak istediğiniz öğe sayısına bölmeyi gerektirir. Örneğin, her satırda dört öğe istiyorsanız, masonry.css dosyanızda şunu yapabilirsiniz:
.masonry-entry{width:25%}
Adım 5: Mobil Optimizasyon
Burada durabiliriz, ancak küçük telefon ekranlarında sonuçların inanılmaz derecede iyi çalışmadığını düşünüyorum. Yeni Masonry ızgaranızla temanızın masaüstünde nasıl göründüğünden memnun kaldığınızda, telefonunuzda da kontrol edin. Telefonunuzda nasıl göründüğünden memnun değilseniz, biraz çalışma yapmanız gerekecektir.
Bir telefon ekranında içerik-masonry şablon parçamıza eklediğimiz her şey için yeterli alan olmadığını düşünüyorum. Size sunulan iki iyi çözüm, telefonlar için alıntıyı kısaltmak veya tamamen atlamaktır. Bunu yapmak için temanızın functions.php dosyasına ekleyebileceğiniz ek bir işlev aşağıdadır. Bu sorunların tabletlerde bir sorun olduğunu düşünmediğim için, bu bölümde yalnızca telefonlarda değişiklik yapmak, tabletlerde değil, harika bir eklenti olan Mobble kullanıyorum. Ayrıca Mobble'ın aktif olup olmadığını kontrol ediyorum ve gerekirse WordPress'e yerleşik olan daha genel mobil algılama işlevi wp_is_mobile'a geri dönüyorum.
if (! function_exists('slug_custom_excerpt_length') ) :
function slug_custom_excerpt_length( $length ) {
//set the shorter length once
$short = 10;
//set long length once
$long = 55;
//if we can only set short excerpt for phones, else short for all mobile devices
if (function_exists( 'is_phone') {
if ( is_phone() ) {
return $short;
}
else {
return $long;
}
}
else {
if ( wp_is_mobile() ) {
return $short;
}
else {
return $long;
}
}
}
add_filter( 'excerpt_length', 'slug_custom_excerpt_length', 999 );
endif; // ! slug_custom_excerpt_length exists
Gördüğünüz gibi, uzun alıntı uzunluğunu ve kısa alıntı uzunluğunu değişkenlere kaydederek başlıyoruz, çünkü bu değerleri iki kez kullanacağız ve ileride ihtiyaç duymamız halinde bunları tek bir yerden değiştirebilmek istiyoruz. Oradan Mobble'ın is_phone() fonksiyonunu kullanıp kullanamayacağımızı test ediyoruz. Eğer kullanabiliyorsak, telefonlar için kısa alıntıyı, kullanamıyorsak uzun alıntıyı ayarlıyoruz. Bundan sonra, is_phone() kullanılamıyorsa, wp_is_mobile kullanarak aynı temel şeyi yapıyoruz, bu da tüm mobil cihazları etkileyecektir. Umarım bu fonksiyonun else kısmı asla kullanılmaz, ancak her ihtimale karşı bir yedek bulundurmak iyidir. Alıntı uzunluğu mantığı ayarlandıktan sonra, fonksiyonu excerpt_length filtresine bağlamak kalıyor.
Alıntıyı kısaltmak bir seçenektir, ancak basit bir işlemle tamamen ortadan kaldırabiliriz. İşte içeriğin yeni bir versiyonu-masonry, telefonlarda tüm alıntı kısmı atlanmış olarak:
<article class="masonry-entry" id="post-<?php the_ID(); ?>" <?php post_class(); ?> >
<?php if ( has_post_thumbnail() ) : ?>
<div class="masonry-thumbnail">
<a href="<?php the_permalink(' ') ?>" title="<?php the_title(); ?>"><?php the_post_thumbnail('masonry-thumb'); ?></a>
</div><!--.masonry-thumbnail-->
<?php endif; ?>
<div class="masonry-details">
<h5><a href="<?php the_permalink(' ') ?>" title="<?php the_title(); ?>"><span class="masonry-post-title"> <?php the_title(); ?></span></a></h5>
<?php
//put the excerpt markup in variable so we don't have to repeat it multiple times.
$excerpt = '<div class="masonry-post-excerpt">';
$excerpt .= the_excerpt();
$excerpt .= '</div><!--.masonry-post-excerpt-->';
//if we can only skip for phones, else skip for all mobile devices
if (function_exists( 'is_phone') {
if ( ! is_phone() ) {
echo $excerpt;
}
}
else {
if ( ! wp_is_mobile() ) {
echo $excerpt;
}
}
?>
</div><!--/.masonry-entry-details -->
</article><!--/.masonry-entry-->
Bu sefer telefon/mobil cihazda olmadığımızı test ediyoruz ve eğer öyleyse döngümüzün alıntı kısmını döndürüyoruz. Telefon/mobil cihazdaysak hiçbir şey yapmıyoruz.
Yapmak isteyebileceğiniz bir diğer şey, mobil cihazlarda bir satırdaki öğe sayısını azaltan Masonry öğelerinin genişliğini artırmaktır. Bunu yapmak için, cihaz algılamasına dayalı olarak başlığa farklı bir satır içi stil ekleyeceğiz. Bu işlev wp_add_inline_styles kullandığından, belirli bir stil sayfasına bağlı olacaktır. Bu durumda, masonry stillerinizi ayrı tutmak isteyebileceğiniz masonry.css'yi kullanıyorum. Eğer bunu kullanmazsanız, zaten kayıtlı başka bir stil sayfasının tanıtıcısını kullanabilirsiniz.
if ( ! function_exists ( 'slug_masonry_styles' ) ) :
function slug_masonry_styles() {
//set the wide width
$wide = '25%';
//set narrow width
$narrow = '50%';
/**Determine value for $width**/
//if we can only set narrow for phones, else narrow for all mobile devices
if (function_exists( 'is_phone') {
if ( is_phone() ) {
$width = $narrow;
}
else {
$width = $wide;
}
}
else {
if ( wp_is_mobile() ) {
$width = $narrow;
}
else {
$width = $wide;
}
}
/**Output CSS for .masonry-entry with proper width**/
$custom_css = ".masonry-entry{width: {$width};}";
//You must use the handle of an already enqueued stylesheet here.
wp_add_inline_style( 'masonry', $custom_css );
}
add_action( 'wp_enqueue_scripts', 'slug_masonry_styles' );
endif; // ! slug_masonry_styles exists
Bu fonksiyon özel stil sayfasını kuyruğa ekler ve ardından şimdiye kadar çok tanıdık olması gereken mantığı kullanarak bir genişlik değeri ayarlar. Bundan sonra, {$width} ile normal görünen bir CSS'ye genişlik değerini geçirerek $custom_css değişkenini oluştururuz. Ardından, Masonry stil sayfası kullanıldığında WordPress'e başlıkta satır içi stillerimizi yazdırmasını söylemek için wp_add_inline_style'ı kullanırız ve ardından tüm fonksiyonu wp_enqueue_scripts'e bağlarız ve işimiz biter.
Masonry stillerini mevcut bir stil sayfasına birleştirmeyi seçtiyseniz, satır içi stillerinizin dahil edilmemesi için o stil sayfasının tanıtıcısını wp_add_inline_style ile kullandığınızdan emin olun. Genellikle Masonry'yi yalnızca gerektiğinde eklenmesini sağlayan bir koşullu ifadeye sarmaladığım için wp_add_inline_style kullanmayı tercih ederim. Örneğin, Masonry'yi yalnızca blog dizin ve arşiv sayfalarımda kullanıyorsam şunu yapardım:
if ( is_home() || is_archive() ) {
add_action( 'wp_enqueue_scripts', 'slug_scripts_masonry' );
}
Bu son birkaç örnek, beyninizde başka fikirler uyandırmalıdır. Örneğin, mobil bir cihazda Masonry'yi tamamen atlamak için benzer bir mantık kullanabilirsiniz. Ayrıca wp_add_inline_style() daha az kullanılan ancak çok yardımcı bir fonksiyondur, çünkü herhangi bir koşula bağlı olarak farklı stiller belirlemenizi programatik olarak sağlar. Bu, yalnızca cihaz algılamasına değil, aynı zamanda hangi şablonun kullanıldığına veya kullanıcının oturum açıp açmadığına bağlı olarak herhangi bir öğenin stilini kökten değiştirmenize olanak tanır.
Umarım bu farklı değişiklikleri yaratıcı olmak için bir fırsat olarak görürsünüz. Masonry ve benzeri basamaklı ızgara sistemleri bir süredir popüler, bu yüzden bu popüler fikre yeni dokunuşlar yapma zamanı. WordPress temasında Masonry kullanmak için bulduğunuz harika yolları yorumlarda bize gösterin.
WordPress ile çok yönlü bir kişi olan Josh Pollock, WordPress hakkında yazıyor, tema geliştirme yapıyor, Pods Framework için topluluk yöneticiliği yapıyor ve sürdürülebilir tasarım için açık kaynak çözümlerini savunuyor.


Gabi
Merhaba, masonry ızgarasını kayıtlı kullanıcıları göstermek için kullanmanın bir yolu olup olmadığını öğrenmek istedim. Herhangi bir fikriniz var mı?
Neil
Eğer "imagesLoaded" hatası alıyorsanız, Javascript kodunu footer.php dosyanızdaki wp_footer çağrısından sonra eklemeyi deneyin.
Bu benim için çalıştı:
functions.php'ye ekle
add_action( ‘wp_enqueue_scripts’, ‘slug_masonry’ );
function slug_masonry( ) {
wp_enqueue_script(‘masonry’); // bu jQuery değil
Döngünüzde, div'inizin olduğundan emin olun:
Ve resim sınıfı şu şekildedir:
ve ardından footer.php dosyanızda wp_footer'dan sonra şunu ekleyin:
//set the container that Masonry will be inside of in a var
var container = document.querySelector(‘#masonry-loop’);
//create empty var msnry
var msnry;
// initialize Masonry after all images have loaded
imagesLoaded( container, function() {
msnry = new Masonry( container, {
itemSelector: ‘.masonry-entry’
});
});
Marisa Di Monda
Merhaba Andy, az önce bunu denedim ve çalıştıramadım. Her şey hala tek bir sütunda dikey olarak çalışıyor.
Herhangi bir çözüm var mı?
Marisa Di Monda
Ben de aynı sorunu yaşıyorum. Çözdünüz mü?
Peter
did not work for me. i see only two images on my front page which are arranged underneath. don’t know where is the problem
Eva
Bazı nedenlerden dolayı gönderilerim normal gibi satırlar halinde görünüyor, masonry şeklinde değil, bunun nasıl olabileceğinden emin değilim. Herhangi bir fikriniz var mı?
Peter
evet, aynı hatayı alıyorum. bunun için bir çözüm var mı?
jcbrmn06
Bu konuda hala sorun yaşayanlar için, şu kodu fark ettim:
// Masonry'nin içinde olacağı kapsayıcıyı bir değişkene ayarla
var container = document.querySelector(‘#masonry-loop’);
// boş bir msnry değişkeni oluştur
var msnry;
// tüm resimler yüklendikten sonra Masonry'yi başlat
imagesLoaded( container, function() {
msnry = new Masonry( container, {
itemSelector: ‘.masonry-entry’
});
});
masonry JS kütüphanesinden önceydi. Bu nedenle imagesLoaded hatasını alırsınız. Andy'nin aşağıda önerdiği gibi başlığa koymak sorunu çözecektir. Temel olarak, kütüphanenin bu koddan önce gelmesini sağlamanız yeterlidir.
Andy Giesler
Bu eğitim için tekrar teşekkürler, gerçekten yolculuğuma başlamama yardımcı oldu.
Her şey yerli yerinde olsa bile, kutucukların tek bir sütun halinde sayfanın soluna indiği aralıklı sorunlar yaşadım ve Firebug, Masonry kodunun bazen çalışmadığını doğruladı. Bu yalnızca ara sıra ve yalnızca Firefox'ta oluyordu.
Belirli yükleme senaryolarında, gerekli dosyalar yüklenmeden önce yürütülmeye çalışan kodlarla ilgili sorunlar olduğu görülüyordu. Bunun imagesLoaded sorunu olduğunu sanmıyorum, çünkü onun farklı belirtileri var.
Sorunu şu şekilde düzelttim:
1. “slug_masonry_init” fonksiyonu, masonry başlatma kodunu doğrudan alt bilgiye yerleştirir. Bu fonksiyonun tamamını (add_action ‘wp_footer’ koduyla birlikte) kaldırdım ve JS'yi harici bir dosyaya taşıdım: masonry-init.js
2. jQuery'nin document.ready yeteneğinden yararlanmak için masonry başlatma kodunu jQuery'ye sardım. Bu, Masonry'nin jQuery'siz sürümü olduğu için jQuery'yi dahil etmek talihsizliktir, ancak kodun tüm yükleme senaryolarında yürütülmesi için document.ready gerekli görünüyordu.
(function( $ ) {
“use strict”;
$(function() {
}); }(jQuery));
3. Betikleri şu şekilde sıraya koydum:
wp_enqueue_script( ‘masonry’ );
wp_enqueue_script( ‘jquery’ );
wp_enqueue_script( ‘masonryInit’, get_stylesheet_directory_uri().’/js/masonry-init.js’, array( ‘masonry’, ‘jquery’ ) );
Daniel Nikolovski
Eğitimde anlatıldığı gibi yaptım, wp 3.9.1.. imagesLoaded yüklenmiyor bile. Yardımcı olursanız çok sevinirim
Tiago Celestino
Bu, 'masonry-thumb' nerede tanımlanıyor? Bu, masonry WordPress ile varsayılan küçük resim boyutu mu?
WPBeginner Ekibi
WordPress'te JavaScript ve stilleri doğru şekilde ekleme kılavuzumuza göz atın.
Jenny Beaumont
Bunu çalıştırmakta sorun yaşıyorum… _s'ye göre her şeyi takip ettim, ancak sütunlarım sarmalanmıyor – sadece tek bir uzun sütun alıyorum. Bununla birlikte herhangi bir CSS örneği var mı? Belli ki bir şeyi kaçırıyorum. Teşekkürler!
marisa
Merhaba Jenny
Ben de aynı sorunu yaşıyorum. Sorununuzu çözdünüz mü?
caratcake
Çaresizce kafam karıştı. Her adımı harfiyen uyguladım ve sitem tamamen boşaldı. Fonksiyonlar dosyasında bir sorun var. Tarayıcım hangi satırın hata verdiğini bile ima etmiyor, tek aldığım şey "
Sunucu hatası
Web sitesi (url) alınırken bir hata ile karşılaştı. Bakım için kapalı olabilir veya yanlış yapılandırılmış olabilir.".
WP Admin giriş sayfası için de aynı şey oldu. Temamın klasöründeki functions.php dosyasını sildim ve giriş ekranı geri yüklendi, ancak ana sayfa yüklenmedi. Sorunun ne olabileceği konusunda bana herhangi bir ipucu verebilirseniz çok minnettar olurum. Yine de, öğretici ve derinlemesine açıklamalar için çok teşekkürler.
Andy Giesler
Bu, örneklerin çalışmasını sağlamak isteyen diğerlerine yardımcı olursa:
Diğerlerinin belirttiği düzeltmeyi yaptıktan sonra bile benim için çalışmıyordu - "function slug_masonry_exists()"yi "function slug_masonry_init()" olarak değiştirmek. Kütüphaneler yükleniyordu ancak Masonry işini yapmıyordu.
Ardından, Masonry ve imagesLoaded'ın altta değil, üstte yüklenmesi için wp_enqueue_script çağrılarını değiştirdim.
Birdenbire her şey çalıştı.
Jean
Merhaba, wp_enqueue_script'i nasıl değiştireceğimi anlayamıyorum. Bunu ayrıntılı olarak açıklayabilirseniz çok sevinirim. Teşekkürler!
gabi
Merhaba, Benim için çalışmıyor şu hata mesajını alıyorum:
"Parse error: syntax error, unexpected T_ENDIF in…"…functions.php on line 17
Bu, 3. adımdaki betikte bir hata olduğu anlamına geliyor. Neyi kaçırdım?
werner
3.9 ile Masonry3 artık Wordpress çekirdeğinde olduğu için gönderinizi güncelleyecek misiniz?
Yayın Kadrosu
Evet, güncelliyoruz.
Yönetici
Steven Gardner
imagesloaded tanımlanmadan önce başlatma betiği çağrılmaya devam ediyor, bu yüzden alıyorum
Yakalanmayan Referans Hatası: imagesLoaded tanımlanmamış
Başlamadan önce imagesLoaded'ın orada olduğundan nasıl emin olabilirim?
Violacase
imagesLoaded, kuyruğa alma işlemi kurulmadan önce çağrılıyor. Son olarak çağrılması için düşük bir öncelik verin, örneğin:
add_action( ‘wp_footer’, ‘slug_masonry_init’, 100000 );
Bu benim için işe yaradı.
Not: Bu makalenin güncellenmesi gerektiğini düşünüyorum. Sadece bu sorun yüzünden değil.
Chplusink
Teşekkürler! Benim için işe yarayan tek çözüm bu.
Kate
Bu gönderi için teşekkürler. Masonry gönderileriyle bir blog sayfası kurmaya çalışıyorum, ancak 1. adımda takıldım. İki kütüphaneyi ekleme fonksiyonlarını functions dosyamıza eklediğimde, sitem tamamen boşalıyor. Bir alt dizinde geliştirme yaptığım için, js dosyalarına giden yolları göreceli yerine mutlak yapmayı denedim, ancak bu yardımcı olmadı. Neyi eksik yaptığım hakkında bir fikriniz var mı?
Steven Gardner
Evet ben de.
WordPress henüz Masonry'nin V3 sürümüne yükseltilmedi, bu yüzden 3.8.3 sürümünü kullanıyorum, sorunun bu olabileceğini düşünmüştüm.
3.9 sürümünde bunu yapmayı planlıyorlar http://make.wordpress.org/core/2014/03/27/masonry-in-wordpress-3-9/
Angie Lee
Merhaba,
Şu hatayı alıyorum: “ReferenceError: imagesLoaded tanımlanmamış” lütfen yardım edin.
Violacase
Yukarıya bakınız
Amitabha Ghosh
Teşekkürler. Harika bir gönderi ve benim için işe yarıyor. Bu kodla bir şablon yapıyorum ve mükemmel çalışıyor. Ancak karşılaştığım iki engel var:
1. Gönderilerimi ana sayfada sınırlamak istiyorum, böylece ilk 6-7 gönderiyi gösterir ve altında "Daha Fazla Yükle" özelliğine sahip bir düğme olur, tıklandığında diğer gönderileri yükler.
2. Paul Irish'in sonsuz kaydırma javascript'ini entegre etmeye çalışıyorum ama çalıştıramadım. Yardımcı olur musunuz??
Teşekkürler
Ismar Hadzic
Tüm adımlarınızı takip ettim ve şu ölümcül hatayı aldım: "PHP Fatal error: Call to undefined function wp_enquqe_style() " ve hala wp_enquqe_style() nedenini anlamıyorum, nedenini anlayamıyorum, kontrol edebilir misiniz?
AndyM
Merhaba
Yazım hatası olduğunu ve şöyle olması gerektiğini belirtmek için yorum yapacaktım:
wp_enqueue_style
Andre
Harika bir öğretici… 3. adımdaki tek bir şey… şu:
…eksik bir parantezi var:
Aurélien Denis
Merhaba!
Bu gönderi harika bir başlangıç ama bazı hatalar buldum…
1/ Başlık özniteliği için title yerine the_title_attribute() kullanmalısınız
2/ add_action( ‘wp_footer’, ‘slug_masonry_exists’ ); doğru koddur, add_action( ‘wp_footer’, ‘slug_masonry_init’ ); değil.
Şerefe!
Zulian
Actually, you don’t need to use title attributes.
AndyM
Merak ediyorum
if ( ! function_exists( ‘slug_masonry_init’ )) :
function slug_masonry_exists() { ?>
şöyle olmalı:
if ( ! function_exists( ‘slug_masonry_init’ )) :
function slug_masonry_init() { ?>
Ben Racicot
Sonsuz kaydırma kurulumumla $ajax başarı CB'imde bunu çalıştıramıyorum. Herhangi bir tavsiye harika olurdu.
Tomasz Bystrek
Bu efekti arıyordum ama adını ve nasıl arayacağımı şimdiye kadar bilmiyordum. Kesinlikle gelecekteki fotoğraf blogu projelerimden birinde deneyeceğim. Teşekkürler!
Katrina Moody
Great post – wish it was around when I started working with Masonry on a theme a few weeks ago
A couple variations – I created a new post-thumbnail image size to pull in so that both horizontal and vertical images would have equal attention within the Masonry pages – it’s fairly easy to change out the actual image for a new one (I did that at first, creating a new “entry-thumbnail” size and allowing unlimited length so that horizontal images would display properly). Then I just edited the post-thumbnail
Ayrıca, gönderi küçük resmini bir etiketine sardım, böylece gönderi kalıcı bağlantısına geri dönmesini sağlayabildim (medya dosyası bağlantısını döndürecek şekilde değiştirdim, böylece bir ışık kutusu efekti uygulayabildim - bir müşterinin isteği üzerine), böylece ziyaretçiler doğrudan gönderiye gidebilirler.
I also added a hover effect to the post-thumbnail to indicate it was clickable
Şimdi yaptıklarımı incelemem ve sizinkilerle karşılaştırmam ve sizin bilginizle neleri iyileştirebileceğimi görmem gerekiyor (WordPress topluluğunu seviyorum!)
Ivan Vilches
beyler tüm bu kodlar functions.php'de mi? teşekkürler