Wsparcie » Zaawansowane » wielokrotne wyświetlanie własnych pól

  • Witam
    Jestem początkującym użytkownikiem wordpressa a i specem od PHP też nie jestem więc proszę o wyrozumiałość.. mam problem z własnymi polami 'custom fields’ tzn. chciałem za ich pomocą wyświetlać ofertę składającą się z takich pól jak obrazek, nagłówek i treść przy czym chciałbym wykorzystać każde pole z różną treścią kilka razy na jednej stronie żeby nie robić pól typu obrazek1, obrazek2 itd. Do wyświetlania mam taki kod:

    <?php
    $obrazek = get_post_custom_values ('pointer');
    $naglowek = get_post_custom_values('naglowek');
    $tresc = get_post_custom_values ('tresc');
    
    foreach ($obrazek as $key => $value1)
    foreach ($naglowek as $key => $value2)
    foreach ($tresc as $key => $value3)
    {
    echo '<div class="oferta_naglowek">';
    echo "<img class='oferta_img' src='" . $value1 . "' />";
    echo " <h2 class='oferta'>$value2</h2>";
    echo '</div>';
    
    echo '<div class="oferta_tresc">';
    echo "$value3";
    echo '</div>';
    echo '<div style="clear: both;"></div>';
    }
    ?>

    i mój problem polega na tym że jak mam po jednym razie użyte każde pole (obrazek, naglowek, tresc) to jest ok, ale jak użyję tych samych pól po raz drugi to robi się meksyk… treść wyświetla się klika razy w wszystkich możliwych konfiguracjach. Mam nadzieję że w miarę zrozumiale opisałem problem. Proszę o jakieś wskazówki i z góry dziękuję 🙂

Viewing 1 replies (of 1 total)
  • No ale przecież to oczywiste, że tak się dzieje. Ten kod, który tutaj pokazujesz, robi coś takiego:

    dla każdego obrazka zrób
      dla każdego naglowka zrób
        dla każdej treści zrób
          wypisz coś tam...

    Innymi słowy wypisujesz wszystkie możliwe kombinacje tych pól… 😉 (i nic w tym dziwnego, dokładnie tak to napisałeś).

    Chciałbyś raczej pewnie coś w stylu:

    <?php
    $obrazek = get_post_custom_values ('pointer');
    $naglowek = get_post_custom_values('naglowek');
    $tresc = get_post_custom_values ('tresc');
    
    foreach ($obrazek as $key => $image) : ?>
    <div class="oferta_naglowek">
      <img class="oferta_img" src="<?php echo esc_attr( $image) ?>" />
      <h2 class="oferta"><?php echo esc_html($naglowek[$key]); ?></h2>
    </div>
    
    <div class="oferta_tresc">
     <?php echo esc_html($tresc[$key]); ?>
    </div>
    <div style="clear: both;"></div>
    <?php endforeach; ?>

    Głowy nie daję, że to będzie działać, bo jest szansa (pewnie spora), że Ci się i tak zaczną mieszać pola i nagłówek pierwszy będzie się wyświetlał obok drugiego obrazka, itp.

    Czy te treści opisujące ofertę będą długie, czy raczej krótkie? Może sensowniej byłoby te pozycje oferty trzymać w podstronach danej strony, a nie w Custom Fieldach?

    PS. Kilka uwag do kodu:
    1. Uważaj na escape’owanie wypisywanych stringów.
    2. Dla porządku przyjęło się, że jednak zmienne (itp.) nazywa się po angielsku 😉
    3. Nie przesadzaj z wypisywaniem HTMLa jako stringów…

Viewing 1 replies (of 1 total)
  • Temat ‘wielokrotne wyświetlanie własnych pól’ jest zamknięty na nowe odpowiedzi.