Zaufane samouczki WordPress, kiedy ich najbardziej potrzebujesz.
Przewodnik dla początkujących po WordPressie
WPB Cup
25 milionów+
Witryny korzystające z naszych wtyczek
16+
Lata doświadczenia z WordPressem
3000+
Samouczki WordPress od ekspertów

Jak użyć Masonry do dodania siatki postów w stylu Pinterest w WordPress

To jest post gościnny Josha Pollocka

Wyświetlanie postów w stylu przypominającym Pinterest, siatka postów, od jakiegoś czasu jest popularnym projektem dla stron indeksu blogów WordPress. Jest popularny nie tylko dlatego, że naśladuje wygląd popularnego serwisu społecznościowego, ale także dlatego, że najlepiej wykorzystuje przestrzeń na ekranie. Na stronie indeksu bloga WordPress pozwala każdemu podglądowi posta mieć naturalnie potrzebny mu rozmiar, bez pozostawiania dodatkowego miejsca.

W tym tutorialu pokażę Ci, jak używać popularnej biblioteki JavaScript Masonry do tworzenia kaskadowych układów siatki dla indeksu Twojego bloga, a także stron archiwum Twojego motywu. Omówię kilka problemów, które musisz wziąć pod uwagę w przypadku optymalizacji mobilnej i jak je rozwiązać.

Zrzut ekranu układu siatki Masonry w WordPress

Uwaga: Jest to samouczek na poziomie zaawansowanym, przeznaczony dla osób, które czują się komfortowo edytując motywy WordPress i posiadają wystarczającą wiedzę z zakresu HTML/CSS.

Krok 1: Dodaj niezbędne biblioteki do swojego motywu

Aktualizacja: WordPress 3.9 zawiera teraz najnowszą wersję Masonry.

Najpierw musisz załadować Masonry do swojego motywu, używając tego kodu:

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

Ten kod po prostu ładuje masonry i udostępnia go w plikach szablonu motywu (zobacz nasz przewodnik, jak prawidłowo dodać JavaScript i style w WordPressie). Należy również pamiętać, że nie dodajemy jQuery jako zależności dla żadnego z nich. Jedną z zalet Masonry 3 jest to, że nie wymaga jQuery, ale może być z nim używany. Z mojego doświadczenia wynika, że inicjalizacja Masonry bez jQuery jest bardziej niezawodna i otwiera możliwość pominięcia ładowania jQuery, co może pomóc zarówno w czasie ładowania strony, jak i w problemach z kompatybilnością.

Krok 2: Zainicjuj Javascript

Ta następna funkcja konfiguruje Masonry, definiuje używane z nią kontenery i zapewnia, że wszystko dzieje się we właściwej kolejności. Masonry musi obliczyć rozmiar każdego elementu na stronie, aby dynamicznie układać siatkę. Problem, z którym się spotkałem w Masonry w wielu przeglądarkach, polega na tym, że Masonry błędnie oblicza wysokość elementów z wolno ładującymi się obrazami, co prowadzi do nakładania się elementów. Rozwiązaniem jest użycie imagesLoaded, aby zapobiec obliczaniu układu przez Masonry do momentu załadowania wszystkich obrazów. Zapewnia to prawidłowe wymiarowanie.

Oto funkcja i akcja, która wyprowadzi skrypt inicjalizujący w stopce strony:

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

Funkcja jest wyjaśniona krok po kroku za pomocą komentarzy w linii. Funkcja JavaScript mówi Masonry, aby szukał w kontenerze o identyfikatorze „masonry-loop” elementów o klasie „masonry-entry” i obliczał siatkę dopiero po załadowaniu obrazów. Ustawiamy zewnętrzny kontener za pomocą querySelector, a wewnętrzny za pomocą itemSelector.

Krok 2: Utwórz pętlę Masonry

Zamiast dodawać znaczniki HTML dla Masonry bezpośrednio do szablonu, stworzymy dla niego osobną część szablonu. Utwórz nowy plik o nazwie „content-masonry.php” i dodaj go do swojego motywu. Pozwoli to na dodanie pętli Masonry do tylu różnych szablonów, ilu chcesz.

W nowym pliku dodasz poniższy kod. Znaczniki są podobne do tych, które normalnie zobaczysz w podglądzie dowolnej treści. Możesz je dowolnie modyfikować, upewnij się tylko, że najbardziej zewnętrzny element ma klasę „masonry-entry”, którą ustawiliśmy jako selektor elementów w ostatnim kroku.

<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-->

Ten znacznik ma klasy dla każdej ze swoich części, dzięki czemu możesz dodać znaczniki pasujące do Twojego motywu. Lubię dodawać ładną, lekko zaokrągloną ramkę do .masonry-entry. Inną miłą opcją jest brak ramki dla .masonry-entry, ale nadanie jej lekkiego cienia. Wygląda to szczególnie dobrze, gdy miniatura posta rozciąga się na całą szerokość pojemnika, co można osiągnąć, nadając .masonry-thumbnail marginesy i dopełnienia równe 0 we wszystkich kierunkach. Wszystkie te style będziesz chciał dodać do pliku o nazwie masonry.css w katalogu css Twojego motywu.

Krok 3: Dodaj pętlę Masonry do szablonów

Teraz, gdy mamy już naszą część szablonu, możesz jej użyć w dowolnym szablonie w swoim motywie. Możesz dodać ją do index.php, ale nie do category.php, jeśli nie chcesz, aby była używana dla archiwów kategorii. Jeśli chcesz, aby była używana tylko na stronie głównej Twojego motywu, gdy jest ustawiona na wyświetlanie postów z bloga, użyłbyś jej w home.php. Gdziekolwiek wybierzesz, wszystko, co musisz zrobić, to owinąć swoją pętlę w kontener z identyfikatorem „masonry-loop” i dodać część szablonu do pętli za pomocą get_template_part(). Pamiętaj, aby rozpocząć kontener pętli masonry przed while (have_posts() ).

Na przykład, oto główna pętla z index.php motywu twentythirteen:

<?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; ?>

A oto zmodyfikowana wersja, aby użyć naszej pętli Masonry:

<?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; ?>

Krok 4: Ustaw responsywne szerokości elementów Masonry

Istnieje kilka sposobów ustawienia szerokości każdego elementu Masonry. Szerokość można ustawić za pomocą liczby pikseli podczas inicjalizacji Masonry. Nie przepadam za tym, ponieważ używam responsywnych motywów i wymaga to skomplikowanych zapytań medialnych, aby wszystko działało poprawnie na małych ekranach. W przypadku projektów responsywnych najlepszym rozwiązaniem okazało się ustawienie wartości szerokości dla .masonry-entry za pomocą procentu, w zależności od tego, ile elementów chcesz mieć w rzędzie, a resztę obliczeń pozostawić Masonry.

Wszystko, czego potrzeba, to podzielenie 100 przez liczbę elementów, które chcesz ustawić jako procent, w prostym wpisie w pliku style.css Twojego motywu. Na przykład, jeśli chcesz mieć cztery elementy w każdym wierszu, możesz zrobić to w pliku masonry.css:

.masonry-entry{width:25%}

Krok 5: Optymalizacja mobilna

Możemy tutaj zakończyć, ale nie sądzę, że końcowy rezultat działa niesamowicie dobrze na małych ekranach telefonów. Gdy będziesz zadowolony z tego, jak wygląda Twój motyw z nową siatką Masonry na komputerze, sprawdź go na telefonie. Jeśli nie jesteś zadowolony z tego, jak wygląda na telefonie, będziesz musiał trochę popracować.

Nie sądzę, że na ekranie telefonu jest wystarczająco dużo miejsca na wszystko, co dodaliśmy do naszej części szablonu content-masonry. Dwie dobre rozwiązania dostępne dla Ciebie to skrócenie fragmentu dla telefonów lub całkowite pominięcie go. Oto dodatkowa funkcja, którą możesz dodać do pliku functions.php swojego motywu, aby to zrobić. Ponieważ nie sądzę, że te problemy występują na tabletach, używam świetnej wtyczki Mobble we wszystkich przykładach w tej sekcji, aby wprowadzać zmiany tylko na telefonach, a nie na tabletach. Sprawdzam również, czy Mobble jest aktywny, zanim go użyję, i w razie potrzeby wracam do bardziej ogólnej funkcji wykrywania urządzeń mobilnych wp_is_mobile, która jest wbudowana w WordPressa.

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

Jak widać, zaczynamy od przechowywania długości długiego i krótkiego fragmentu w zmiennych, ponieważ będziemy używać tych wartości dwukrotnie i chcemy móc je zmienić z jednego miejsca, jeśli zajdzie taka potrzeba później. Stamtąd sprawdzamy, czy możemy użyć Mobble’s is_phone(). Jeśli tak, ustawiamy krótki fragment dla telefonów, a długi fragment, jeśli nie jesteśmy. Po tym robimy to samo, ale używając wp_is_mobile, co wpłynie na wszystkie urządzenia mobilne, jeśli is_phone() nie może być użyte. Mamy nadzieję, że część else tej funkcji nigdy nie zostanie użyta, ale dobrze jest mieć zapas na wszelki wypadek. Gdy logika długości fragmentu zostanie ustawiona, pozostaje tylko podłączenie funkcji do filtra excerpt_length.

Skrócenie fragmentu jest jedną z opcji, ale możemy go również całkowicie usunąć za pomocą prostego procesu. Oto nowa wersja content-masonry, z całkowicie pominiętą częścią fragmentu na telefonach:

<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-->

Tym razem sprawdzamy, czy nie jesteśmy na urządzeniu telefonicznym/mobilnym, a jeśli tak, zwracamy fragment naszej pętli. Jeśli jesteśmy na urządzeniu telefonicznym/mobilnym, nic nie robimy.

Inną rzeczą, którą możesz chcieć zrobić, jest zwiększenie szerokości elementów Masonry, co zmniejsza ich liczbę w wierszu na urządzeniach mobilnych. Aby to zrobić, dodamy inny styl wbudowany do nagłówka na podstawie wykrywania urządzenia. Ponieważ ta funkcja używa wp_add_inline_styles, będzie ona zależna od określonego arkusza stylów. W tym przypadku używam masonry.css, który możesz chcieć zachować swoje style masonry oddzielnie. Jeśli ostatecznie go nie użyjesz, możesz użyć uchwytu z innego, już zarejestrowanego arkusza stylów.

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

Ta funkcja dodaje niestandardowy arkusz stylów, a następnie ustawia wartość szerokości, używając logiki, która powinna być już bardzo znajoma. Następnie tworzymy zmienną $custom_css, przekazując wartość szerokości do zwykle wyglądającego fragmentu CSS z {$width}. Następnie używamy wp_add_inline_style, aby poinformować WordPress, aby wydrukował nasze style w linii w nagłówku, gdy używany jest arkusz stylów Masonry, a następnie podłączamy całą funkcję do wp_enqueue_scripts i gotowe.

Jeśli wybrałeś połączenie stylów Masonry z istniejącym arkuszem stylów, upewnij się, że używasz uchwytu tego arkusza stylów z wp_add_inline_style, w przeciwnym razie Twoje style wbudowane nie zostaną uwzględnione. Lubię używać wp_add_inline_style, ponieważ zazwyczaj opakowuję haczyk akcji do kolejkowania Masonry w warunku, dzięki czemu jest dodawany tylko wtedy, gdy jest potrzebny. Na przykład, jeśli używam Masonry tylko na moim indeksie bloga i stronach archiwum, zrobiłbym to:

if ( is_home() || is_archive() ) {
    add_action( 'wp_enqueue_scripts', 'slug_scripts_masonry' );
}

Te ostatnie kilka przykładów powinno otworzyć inne pomysły w Twoim umyśle. Na przykład, możesz użyć podobnej logiki, aby całkowicie pominąć Masonry na urządzeniu mobilnym. Ponadto wp_add_inline_style() to mniej używana, ale bardzo pomocna funkcja, ponieważ pozwala programowo ustawiać różne style w oparciu o dowolny typ warunku. Może pozwolić na radykalną zmianę stylu dowolnego elementu w oparciu nie tylko o wykrywanie urządzenia, ale zmiany mogą być również oparte na tym, który szablon jest używany, lub nawet czy użytkownik jest zalogowany, czy nie.

Mam nadzieję, że widzisz te różne zmiany, które wprowadzam, jako okazję do kreatywności. Masonry i podobne systemy siatek kaskadowych są popularne od jakiegoś czasu, więc nadszedł czas na nowe zwroty w tym popularnym pomyśle. Pokażcie w komentarzach, jakie fajne sposoby wymyśliliście na wykorzystanie Masonry w motywie WordPress.

Wielozadaniowy człowiek od WordPressa, Josh Pollock pisze o WordPressie, zajmuje się tworzeniem motywów, jest menedżerem społeczności dla Pods Framework i orędownikiem rozwiązań open source dla zrównoważonego projektowania.

Ujawnienie: Nasze treści są wspierane przez czytelników. Oznacza to, że jeśli klikniesz w niektóre z naszych linków, możemy otrzymać prowizję. Zobacz jak finansowany jest WPBeginner, dlaczego to ważne i jak możesz nas wesprzeć. Oto nasz proces redakcyjny.

Ostateczny zestaw narzędzi WordPress

Uzyskaj BEZPŁATNY dostęp do naszego zestawu narzędzi – kolekcji produktów i zasobów związanych z WordPress, które powinien mieć każdy profesjonalista!

Interakcje czytelników

38 CommentsLeave a Reply

  1. Cześć, chciałem wiedzieć, czy istnieje sposób na użycie siatki Masonry do wyświetlania zarejestrowanych użytkowników. Jakieś pomysły?

  2. Krótka uwaga: jeśli otrzymujesz błąd „imagesLoaded”, spróbuj dodać kod Javascript po wywołaniu wp_footer w swoim footer.php.

    To działa u mnie:

    Dodaj do functions.php

    add_action( ‘wp_enqueue_scripts’, ‘slug_masonry’ );
    function slug_masonry( ) {
    wp_enqueue_script( ‘masonry’ ); // uwaga, to nie jest jQuery
    }

    W swoim pętli upewnij się, że twój div jest:

    A klasa obrazu to:

    a następnie po wp_footer w swoim footer.php to:

    //ustaw kontener, w którym będzie znajdował się Masonry, w zmiennej
    var container = document.querySelector(‘#masonry-loop’);
    //utwórz pustą zmienną msnry
    var msnry;
    // zainicjuj Masonry po załadowaniu wszystkich obrazów
    imagesLoaded( container, function() {
    msnry = new Masonry( container, {
    itemSelector: ‘.masonry-entry’
    });
    });

  3. Cześć Andy, właśnie to wypróbowałem i nie udało mi się tego uruchomić. Wszystko nadal działa pionowo w jednej kolumnie.
    Jakieś rozwiązania?

  4. 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 :(

  5. Z jakiegoś powodu moje posty wyświetlają się po prostu w rzędach jak zwykle, a nie w formie masonry, nie jestem pewien, jak to się może stać. Jakieś pomysły?

  6. Dla każdego, kto wciąż ma problemy z tym, zauważyłem, że ten kod:

    // ustaw kontener, w którym będzie znajdował się Masonry, w zmiennej

    var container = document.querySelector(‘#masonry-loop’);

    // utwórz pustą zmienną msnry

    var msnry;

    // inicjalizuj Masonry po załadowaniu wszystkich obrazów

    imagesLoaded( container, function() {

    msnry = new Masonry( container, {

    itemSelector: ‘.masonry-entry’

    });

    });

    Był przed biblioteką JS Masonry. Dlatego otrzymujesz błąd imagesLoaded. Jak sugerował Andy poniżej, umieszczenie go w nagłówku powinno to naprawić. W zasadzie musisz tylko upewnić się, że biblioteka musi być przed tym kodem.

  7. Jeszcze raz dziękuję za ten tutorial, naprawdę pomógł mi zacząć.

    Nawet gdy wszystko było na miejscu, napotkałem sporadyczne problemy, gdzie kafelki po prostu układały się w jednym rzędzie po lewej stronie strony, a Firebug potwierdził, że czasami kod Masonry nie był wykonywany. Działo się to tylko okazjonalnie i tylko w Firefoksie.

    Wydawało się, że w pewnych scenariuszach ładowania występowały problemy z kodem próbującym wykonać się przed załadowaniem wymaganych plików. Nie sądzę, aby był to problem z imagesLoaded, ponieważ ma on inne objawy.

    Naprawiłem problem w następujący sposób:

    Funkcja „slug_masonry_init” umieszcza kod inicjujący masonry bezpośrednio w stopce. Usunąłem całą tę funkcję (a także kod add_action „wp_footer”) i przeniosłem JS do zewnętrznego pliku: masonry-init.js

    2. Umieściłem kod inicjalizujący masonry w jQuery, aby skorzystać z jego możliwości document.ready. Niestety, trzeba dodać jQuery, ponieważ jest to wersja Masonry bez jQuery, ale document.ready wydawało się konieczne, aby kod wykonał się we wszystkich scenariuszach ładowania.

    (function( $ ) {
    “use strict”;
    $(function() {

    }); }(jQuery));

    3. Dodałem skrypty w ten sposób:

    wp_enqueue_script( ‘masonry’ );
    wp_enqueue_script( ‘jquery’ );
    wp_enqueue_script( ‘masonryInit’, get_stylesheet_directory_uri().’/js/masonry-init.js’, array( ‘masonry’, ‘jquery’ ) );

  8. Zrobione dokładnie tak, jak w samouczku, wp 3.9.1.. imagesLoaded nie jest nawet ładowany. Jakaś pomoc byłaby bardzo mile widziana

  9. Mam problem z uruchomieniem tego… postępowałem zgodnie z instrukcjami, opierając się na _s, ale moje kolumny się nie zawijają – dostaję tylko jedną długą. Czy masz jakieś przykłady CSS do tego? Oczywiście czegoś mi brakuje. Pozdrawiam!

  10. Jestem strasznie zdezorientowany. Wykonałem każdy krok dosłownie, a moja strona po prostu się wyłącza. Problem z plikiem funkcji. Moja przeglądarka nawet nie sugeruje, która linia powoduje błąd, wszystko co dostaję to „
    Błąd serwera
    Witryna napotkała błąd podczas pobierania (url) Może być niedostępna z powodu konserwacji lub nieprawidłowej konfiguracji.”

    To samo stało się ze stroną logowania WP Admin. Usunąłem functions.php z folderu mojego motywu i ekran logowania został przywrócony, ale strona główna nie. Jeśli mógłbyś mi dać jakieś wskazówki, co może być problemem, byłbym bardzo wdzięczny. Niezależnie od tego, dziękuję bardzo za tutorial i szczegółowe wyjaśnienia.

  11. W przypadku, gdy pomoże to innym w uruchomieniu przykładu:

    U mnie to nie działało, nawet po wprowadzeniu poprawki, o której wspominali inni – zmianie „function slug_masonry_exists()” na „function slug_masonry_init()”. Biblioteki były ładowane, ale Masonry nie działał.

    Następnie zmieniłem wywołania wp_enqueue_script, tak aby Masonry i imagesLoaded były ładowane w nagłówku zamiast na dole.

    Nagle wszystko zadziałało.

    • Cześć, nie mogę zrozumieć, jak zmienić wp_enqueue_script. Będę naprawdę wdzięczny, jeśli możesz to szczegółowo wyjaśnić. Dzięki!

  12. Witaj, u mnie to nie działa. Mam komunikat o błędzie:
    ” Parse error: syntax error, unexpected T_ENDIF in…”…functions.php on line 17

    Oznacza to błąd w skrypcie z 3. kroku. Co przeoczyłem?

  13. Czy zaktualizujesz swój post ze względu na fakt, że teraz z wersją 3.9 Masonry3 jest w rdzeniu WordPressa?

  14. Skrypt inicjalizujący jest stale wywoływany przed zdefiniowaniem imagesloaded, więc otrzymuję

    Uncaught ReferenceError: imagesLoaded is not defined

    Jak mogę upewnić się, że imagesLoaded jest dostępne, zanim zacznę inicjalizować rzeczy?

    • imagesLoaded jest wywoływane przed ustanowieniem kolejkowania. Nadaj mu niski priorytet, aby był wywoływany jako ostatni, na przykład:

      add_action( ‘wp_footer’, ‘slug_masonry_init’, 100000 );

      To mi pomogło.

      Uwaga: Myślę, że ten artykuł wymaga aktualizacji. Nie tylko z powodu tego problemu.

  15. Dziękuję za ten post. Próbuję skonfigurować stronę bloga z postami w stylu Masonry, ale utknąłem na kroku 1. Zawsze, gdy dodaję funkcje do dodawania dwóch bibliotek do mojego pliku functions, moja strona całkowicie się wyłącza. Ponieważ rozwijam w podkatalogu, próbowałem uczynić ścieżki do plików js absolutnymi, a nie względnymi, ale to nie pomogło. Czy masz pomysł, czego mi brakuje?

  16. Cześć,

    Otrzymuję ten błąd: „ReferenceError: imagesLoaded is not defined” proszę o pomoc.

  17. Dzięki. To świetny post i działa dla mnie. Tworzę szablon z tym kodem i działa idealnie. Ale napotykam dwie przeszkody:
    1. Chcę ograniczyć liczbę postów na mojej stronie indeksu, aby wyświetlało się pierwszych 6 do 7 postów, a poniżej będzie przycisk z funkcją „Załaduj więcej”, który po kliknięciu załaduje pozostałe posty.

    2. Próbuję zintegrować nieskończone przewijanie javascript Paula Irish, ale nie udało mi się. Jakaś pomoc??

    Dzięki

  18. Cóż, postępowałem zgodnie ze wszystkimi Twoimi krokami i napotkałem krytyczny błąd „PHP Fatal error: Call to undefined function wp_enquqe_style()” i nadal nie rozumiem, dlaczego wp_enquqe_style() nie rozumiem, dlaczego możesz to sprawdzić.

  19. Cześć!

    Ten post jest świetnym początkiem, ale znalazłem kilka błędów…

    1/ Powinieneś użyć the_title_attribute() dla atrybutu title zamiast title
    2/ add_action( ‘wp_footer’, ‘slug_masonry_exists’ ); to poprawny kod, a nie add_action( ‘wp_footer’, ‘slug_masonry_init’ );

    Na zdrowie!

  20. Nie mogę tego uruchomić z nieskończonym przewijaniem w moim CB sukcesu $ajax. Będę wdzięczny za wszelkie rady.

  21. Szukałem tego efektu, ale nie wiedziałem, jak się nazywa i jak go szukać, aż do teraz. Z pewnością wypróbuję go w jednym z moich przyszłych projektów bloga fotograficznego. Dzięki!

  22. Great post – wish it was around when I started working with Masonry on a theme a few weeks ago :D

    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 ;-)

    Owinąłem również miniaturę posta w tag , aby umożliwić jej powrót do stałego linku posta (zmieniłem to, aby zwracać link do pliku multimedialnego, abym mógł zaimplementować efekt lightbox – zgodnie z życzeniem klienta), dzięki czemu odwiedzający mogliby przejść bezpośrednio do posta.

    I also added a hover effect to the post-thumbnail to indicate it was clickable :D

    Teraz muszę przejrzeć to, co zrobiłem, porównać z Twoim i zobaczyć, co mogę poprawić dzięki Twojej wiedzy (uwielbiam społeczność WordPress!)

Zostaw odpowiedź

Dziękujemy za pozostawienie komentarza. Pamiętaj, że wszystkie komentarze są moderowane zgodnie z naszą polityką komentowania, a Twój adres e-mail NIE zostanie opublikowany. Prosimy NIE używać słów kluczowych w polu nazwy. Prowadźmy osobistą i znaczącą rozmowę.