Wsparcie » Zaawansowane » Posty wyswietlane w tabeli z uzyciem Custom_Fields

  • Rozwi膮zano dewon

    (@dewon)


    Czesc Wszystkim,

    Na wstepie chcial bym zaznaczyc ze mam pewne (jak widac nie wielkie 馃檪 ) doswiadczenie w uzywaniu WordPressa ale potrzebuje wskazowki w jednym zagadnieniu. Nie licze na konkretne podanie rozwiazania ale chociaz wskazanie jak ugryzc temat i ktora wiedze nadrobic 馃檪

    Zadanie jakie przede mna sie pojawilo to zrobienie jednej z podstron tak aby wyswietlala w formacie tabeli tylko posty dodane do konkretnej kategorii. Chcial bym zeby naglowkami dla posta w tej tabeli byly dane z pol „wlasne pola” utowrzonymi w kazdym z tych postow. I tu wychodza moje braki w php i niewiedza. W moim rozumowaniu po:
    1 powinienem utowrzyc szablon dla tej strony tak zeby tworzyl tabele i wyswietlal posty tylko z konkretnej kategorii.
    2 stworzyc jakas petle w php ktora by wypelniala odpowiednie pola tabeli ( i tu pytanie czy moge w tej petli w jakis sposob odniesc sie do tych pol dodatkowych? )
    3 chcial bym zeby kazdy z tych postow tez wyswietlal sie w ustalonej formie tj. najpierw tabela z danymi z „wlasne pola” a pozniej szczegoly ktore byly by trescia postu. Pytanie czy to realizuje tworzac nowy „format ” ?

Viewing 9 replies - 1 through 9 (of 9 total)
  • Polecam zapoznanie si臋 z wtyczk膮 ACF i jej rodzajem pola Repeater – tam naj艂atwiej utworzysz custom fields, a tym samym wiersze do tej tabeli.

    Nie musisz robi膰 nowego formatu wystarczy, 偶e na g贸rze zrobisz if., np:
    $tabela = get_field(’tabela’);
    if ($tabela && is_array($tabela)) {
    echo '<table>’;
    foreach ($tabela as $wiersz) {
    ?>
    <tr><td><?php echo $wiersz[’nazwa_pola_1′]; ?></td><td><?php echo $wiersz[’nazwa_pola_2′]; ?></td></tr>
    <?php
    }
    echo '</table>’;
    }

    Wi臋cej info odno艣nie wtyczki ACF znajdziesz na stronie tw贸rc贸w.

    Thread Starter dewon

    (@dewon)

    Wielkie dzieki za pomoc! 馃檪

    Thread Starter dewon

    (@dewon)

    Troche poczytalem o tej wtyczce i wszystko wyglada fajnie, stworzylem taki szablon custom fieldsow dla konkretnej kategorii i teraz wchodzac w edycje danego wpisu mam do niego podpiete pola takie jak trzeba, dziala to elegancko. Z racji mojej slabej wiedzy na temat php zastnawiam sie jak moge z zrobic z tego tabele.
    Wersja pro tej wtyczki obejmuje tez repeater ale czy to nie jest tak ze dane do tabeli zbudowanej na tym typie pol trzeba bedzie wprowadzac „recznie” ? Bo w wiekszosci materialow jakie tak na szybko znalazlem te tabele maja wartosci wpisane na stale a moj cel jest taki ze osoba redagujaca posta uzupelnia wskazane custom fields (nr zlecenia, opis, data) i po opublikowaniu tego posta jest sobie strona na ktorej jest tabela zbierajaca te dane ze wsystkich postow w tej kategorii i prezentujaca je jako kolejne wiersze.
    Potrzebny mi do tego ten Repeater ? czy moge zrobic jakas petle w PHPie renderujaca mi taka tabele w oparciu tylko o te dodatkowe pola?

    Wiem ze moj opis moze wydawac sie troszke enigmatyczny 馃檪 ale tak jak mowielm z braku wiekszego doswiadczenia musze operowac dosc prostymi do zobrazowania pojeciami 馃檪

    Ka偶dy post b臋dzie mia艂 tylko jeden wiersz tabeli? W takim razie nie trzeba Repeatera. Dodaj po prostu odpowiednie pola.

    Aby wy艣wietli膰 tabel臋 b臋dziesz musia艂 skorzysta膰 z wordpressowego query i funkcji echo get_field(’nazwa_pola’);

    Thread Starter dewon

    (@dewon)

    Jeszcze raz wielkie dzieki ! Szybko nadrobilem zaleglosci co do wp_query i odkrylem caly nowy swiat ! 馃檪 get_field dziala idealnie. Jesli nie bylo by to zbyt wielkim naduzyciem cierpliwosci chcialem zapytac jeszcze o to jak zrobic zeby np 1 pole ktore jest numerem bylo jednoczesnie linkiem do posta z ktorego zostalo pobrane ? i drugi temat to w ACF zdefiniowalem jedno pole jako typ Data i w postach wyswietla sie ok ale w tabeli jest ciagkiem cyfr, czy na tabeli tez powinienem ustawic jakis format wyswietlania ?

    1. potrzebujesz jaki艣 counter do liczenia kolejnych numer贸w wiersza i mo偶esz to zrobi膰 tak:

    $row_counter++;
    echo '<a href="'.get_permalink($post->ID).'">'.$row_counter.'</a>';

    2. jak jest podane tutaj: https://www.advancedcustomfields.com/resources/date-picker/
    przyda Ci si臋: https://codex.wordpress.org/Formatting_Date_and_Time

    $date = get_field('date');
    // make date object
    $date = new DateTime($date);
    echo $date->format('j M Y');

    Thread Starter dewon

    (@dewon)

    Jak zwykle dzieki za wskazowki. Niestety brak podstawowej wiedzy w PHPie kosztuje mnie sporo czasu na eksperymentowaniu jak i gdzie to dodac oraz gdzie mi sie znowy jakis znak konca lini zgubil 馃檪 no ale na tym polega edukacja 馃檪

    1 punkt moze troche zle opisalem bo ostatecznie zmienna $row_counter okazala sie zbedna. Chcialem tylko zeby dane z 1 pola byly automatycznie linkiem do tego posta i uzylem tej struktury ktora podales, dziala swietnie.

    Obecnie mam tak:

    echo '<table>
    		  <tr>
    		  <th> aaa </th>
    		  <th> bbb </th>
    		  <th> ccc </th>
    		  </tr>';
    
    while ( $the_query->have_posts() ) {
    		$the_query->the_post();
    
    		$date = get_field('ccc');
    		$date3 = new DateTime('tomorrow');
    
    echo '<tr>';
    echo '<td><a href="'.get_permalink($post->ID).'">' .get_field('aaa'). '</a></td>
    	<td>' .get_field('bbb'). '</td>
    	<td>' .$date. '</td></tr>'; 
    
    	}
    	echo '</table>';

    Zdaje sobie sprawe ze z punktu widzenia doswiadczonego programisty pewnie nie wyglada to zbyt profesjonalnie ale tak jak mowielm na codzien zajmuje sie zupelnie inna czescia informatyki 馃檪 Temat wyswietlania daty okazal sie banalny, po prost zle zdefiniowalem w ACF sposob w jaki ma sie wyswietlac to pole.
    I teraz kwestia z ktora nie bardzo sobie radze, mianowicie ostatnie pole w tabeli $date, zwraca mi ono date jaka zostala ustalona przez osobe tworzaca posta. Chcial bym teraz aby w tej tabeli data ta byla zielona jesli obecna data jest mniejsza niz wyznaczona i czerwona jesli jest juz po tej dacie. Stworzylem sobie taka prosta strukture:

    if ($date < $date3){
    
    	echo '<p style="color:blue";>'.$date->format('j/m/Y').'</p>';
    
    	} elseif ($date >  $date3) {
    
    	echo '<p style="color:red";>'.$date3->format('j/m/Y').'</p>';
    	}

    tylko teraz nie wiem jak to polaczyc ze soba, probowalem wklejac to w rozne miejsca sekcji „while” bo chce zeby ten warunek byl sprawdzany dla kazdego posta ale za chiny mi to nie dziala , prosil bym o jakas podpowiedz 馃檪

    Thread Starter dewon

    (@dewon)

    Maly update:

    Wydaje mi sie ze ten if musi pojawic sie w miejscu w ktorym to pole mialo by zostac uzupelnione :

    while ( $the_query->have_posts() ) {
    		$the_query->the_post();
    
    		$date = get_field('ccc');
    		$date3 = new DateTime();
    		$text1 = 'TEKST 1';
    		$text2 = 'TEKST 2';
    
    	echo '<tr>';
    	echo '<td><a href="'.get_permalink($post->ID).'">' .get_field('aaa'). '</a></td>';
    	echo '<td>' .get_field('bbb'). '</td>';
    
    	if ($date < $date3){
    
    		echo '<td>'.$text1.'</td>';
    
    	}elseif ($date > $date3) {
    
    		echo '<td>'.$text2.'</td>';
    	}
    
    	echo '</tr>'; 
    
    	}
    	echo '</table>';

    roboczo uzylem zmiennej „$text” zeby sprawdzic czy to wogole dziala bo przy uzyciu „.$date->format(’j/m/Y’).” krzyczla ze cos mu tu nie pasuje w formacie, poza petla while ta struktura dziala wiec nie bardzo wiem czemu tu nie chce. Tak czy inaczej na „tekstowych” zmiennych to „prawie” dziala, wstawia wartosc z 1 czesci IFa ale jak zmienie date w tym polu na taka ktora spelniala by 2 warunek to juz zmienna $text2 sie nie wstawia.

    Thread Starter dewon

    (@dewon)

    rozwiazaniem okazalo sie uzycie:

    $date = get_field('ccc');
    $date = DateTime::createFromFormat('d-m-Y', $date);

    dopiero po ustaleniu formatu dla zmiennej date string pobrany z pola „ccc” zamienil sie na obiekt DateTime

    Dzieki za wszystkie wskazowki i porady !

Viewing 9 replies - 1 through 9 (of 9 total)
  • Temat ‘Posty wyswietlane w tabeli z uzyciem Custom_Fields’ jest zamkni臋ty na nowe odpowiedzi.