Wsparcie » Wtyczki » custom fields

  • Jest to zapewne bardzo użyteczny plugin. Niemniej dla takiego początkującego jak ja, każdy plugin który wymaga zabawy z kodem (dla mnie to raczej udręki ) jest dość trudny do opanowania. W internecie udało mi się znaleźć masę poradników , ale stosując się do nich po dwóch dniach pracy jestem w punkcie wyjścia. Utworzyłem grupę pól, ale nie wiem jaki kod i gdzie mam go wkleić. Prosił bym o jakąś podpowiedź. Szablon którym się posługuję został stworzony w Arteesterze. Z tego co czytałem na forach generuje on dość specyficzny kod. Być może właśnie w tym tkwi problem. Czy mógłbym liczyć na jakąś pomoc. Na forach odpowiedź zazwyczaj jest odmowna, lub bardzo lakoniczna w formie wklej taki to a taki kod. Ok, ale gdzie, w jakim pliku , w jakim miejscu? Z góry dziękuję za odpowiedź.

Viewing 11 replies - 1 through 11 (of 11 total)
  • OK, mam nadzieję, że nie będzie zbyt lakonicznie 😉

    Przede wszystkim napisz, o jaki dokładnie plugin Ci chodzi. Napisz też, jak chcesz go wykorzystać, to postaram się pomóc krok po kroku.

    Naprawdę bardzo się cieszę , że ktoś ma chęci mi pomóc . Dziś od rana znowu próbowałem , ale dla mnie to jednak czarna magia, a szkoda bo to fajna umiejętność. Trochę projektuję grafikę , ale raczej na użytek znajomych , zdecydowanie hobbystycznie. Ale do rzeczy, to link do mojego szablony stworzonego w programie Artesteer . http://photoshop.mixxt.pl/networks/files/download.135470
    to są screeny moich pól które chciałbym , żeby wyświetlały się w treści postu, a w tym przypadku zamiast niego . jest to jakiś tam rodzaj formularza – oferty. W pluginie Advanced Custom Fields stworzyłem grupę pól o nazwie „ogloszenie”. Grupa ta składa się z 12 pól – 10 tekst, jedno obszar tekstowy i jedno pole daty . Chcąc napisać post będę korzystał wyłącznie z tego formularza pomiajając zupełnie edytor wordpressa. Po utworzeniu tej grupy , gdy przechodzę do zakładki dodaj nowy post, formularz wyświetla mi się na dole pod edytorem wordpressa co jest normalne. Niestety wypełniając formularz i publikując stronę , nic się na niej nie ukazuje. Zacząłem googlić , wklejać kody w różne miejsca, ale to wszystko mnie trochę przerosło. Ponieważ ACF posiada moduł eksportu , wyeksportowałem kod php , który podobno ma być wklejony do funkcions.php, ale wyskakuje mi błąd i strona wogóle nie pojawia się w przeglądarce.
    To link do wygenerowanego kodu i legendy jego użycia, oraz screeny tego co już zrobiłem : http://photoshop.mixxt.pl/networks/files/download.135471
    Domyślam się , że utworzyłem już prawidłowo tą grupę pól. Interesuje mnie jak dodać je jednak do mojego tematu na stałe tak, aby wyświetlała się w polu posta. Z góry naprawdę bardzo serdecznie dziękuję za pomoc. Piotr

    OK, więc po kolei:

    1. Grupę pól masz zrobioną w miarę sensownie. Jedyna uwaga tutaj jest taka, że pole „opis” trzymałbym mimo wszystko w WordPressowym edytorze – dzięki temu sporo zyskasz za darmo (wyszukiwanie, excerpty, podobne wpisy, itd.)

    2. Ten „export”, który zrobiłeś i możesz wkleić do functions.php, robi zupełnie co innego, niż byś oczekiwał. On służy do tego, żebyś mógł w motywie zdefiniować od razu dane grupy pól. Nie będzie wstawiał tych pól w treść wpisu.

    3. Aby wyświetlić te pola we wpisie musisz zmodyfikować szablon odpowiedzialny za wyświetlanie danej strony (jeśli np. pola mają się wyświetlać we wpisach, to modyfikuj single.php, jeśli w stronach, to page.php, itd., jeśli tylko w niektórych wpisach/stronach, to odpowiedni szablon zgodnie z Template Hierarchy)

    A, no i najważniejsze…

    Zawartość pól możesz wyświetlać za pomocą funkcji dostarczonych z ACF lub też zwykłym WordPressowym get_post_meta.

    Chcę żeby pola wyświetlały mi się w poście , czyli modyfikacji podlegałby single.php to jest dla mnie jasne. Ale co i gdzie konkretnie mam wkleić , jest już dla mnie zagadką. O jakich funkcjach ACF piszesz ? Próbowałem get_post_meta , ale wtedy wyskakuje błąd i strona się nie wyświetla. Dla mnie trzeba niestety trochę jaśniej, tak jak to napisałeś „to postaram się pomóc krok po kroku”.

    Hehe, nie ma sprawy. No to krok po kroku.

    Możesz korzystać z ACFowej funkcji the_field, czyli np. w pliku single.php w odpowiednim miejscu wstawiasz:

    <?php the_field('moje_pole'); ?>

    Albo też z WordPressowych funkcji (tu będzie trochę trudniej od strony programistycznej, bo musisz pamiętać o escape’owaniu, odpowiednim zczytywaniu wartości, itd. To robisz np. tak:

    <?php echo get_post_meta($post->ID, ‚moje_pole’, true); ?>

    Oczywiście w obu przykładach moje_pole to nazwa pola (ta skrócona, a nie etykieta).

    Po części udało mi się wyświetlić moje pola , ale nie wyświetlają się one w polu wpisu tylko poniżej. w żaden sposób nie mogę ich umieścić w kodzie tak aby wyświetlały się w ramce wpisu. Gdybym posłużył się którym którymkolwiek podam p[rzez ciebie kodem, musiałbym wstawić go w pętlę strony , a to powoduje błąd. Może jakaś podpowiedź.
    Obecnie moje single.php wygląda następująco:
    <?php

    /**
    *
    * single.php
    *
    * The single post template. Used when a single post is queried.
    *
    */

    get_header(); ?>
    <div class=”layout-wrapper”>
    <div class=”content-layout”>
    <div class=”content-layout-row”>
    <div class=”layout-cell content”>
    <?php get_sidebar(‚top’); ?>
    <span style=”font-size: large;”>POSZUKUJEMY PRACOWNIKA NA STANOWISKO:</span>
    <?php
    if (have_posts()){
    /* Display navigation to next/previous posts when applicable */
    if (theme_get_option(‚theme_top_single_navigation’)) {
    theme_page_navigation(
    array(
    ‚next_link’ => theme_get_previous_post_link(‚« %link’),
    ‚prev_link’ => theme_get_next_post_link(‚%link »’)
    )
    );
    }

    while (have_posts())
    {
    the_post();
    get_template_part(‚content’, ‚single’);
    /* Display comments */
    if ( theme_get_option(‚theme_allow_comments’)) {
    comments_template();
    }
    }

    /* Display navigation to next/previous posts when applicable */
    if (theme_get_option(‚theme_bottom_single_navigation’)) {
    theme_page_navigation(
    array(
    ‚next_link’ => theme_get_previous_post_link(‚« %link’),
    ‚prev_link’ => theme_get_next_post_link(‚%link »’)
    )
    );
    }

    } else {

    theme_404_content();

    }
    ?>

    <?php the_field(‚Zawód’); ?>
    <div class=”cleared”></div>
    ————————————————————————————————————————————
    <div class=”cleared”></div>
    Kraj zatrudnienia:
    <?php the_field(‚kraj_zatrudnienia’); ?>
    <div class=”cleared”></div>
    ————————————————————————————————————————————
    <div class=”cleared”></div>
    Opis stanowiska pracy:
    <?php the_field(‚opis_stanowiska_pracy’); ?>
    <div class=”cleared”></div>
    ————————————————————————————————————————————
    <span style=”font-size: large;”>Wymagania</span>
    <div class=”cleared”></div>
    ————————————————————————————————————————————
    <div class=”cleared”></div>
    Wykształcenie:
    <?php the_field(‚wyksztalcenie’); ?>
    <div class=”cleared”></div>
    ————————————————————————————————————————————
    <div class=”cleared”></div>
    Doświadczenie w zawodzie:
    <?php the_field(‚doswiadczenie_w_zawodzie’); ?>
    <div class=”cleared”></div>
    ————————————————————————————————————————————
    <div class=”cleared”></div>
    Wymagana znajomość języka:
    <?php the_field(‚Wymagana_znajomosc_jezyka’); ?>
    <div class=”cleared”></div>
    ————————————————————————————————————————————
    <div class=”cleared”></div>
    Dodatkowe atuty:
    <?php the_field(‚dodatkowe_atuty’); ?>
    <div class=”cleared”></div>
    ————————————————————————————————————————————
    <div class=”cleared”></div>
    CV w języku:
    <?php the_field(‚CV_w_języku’); ?>
    <div class=”cleared”></div>
    ————————————————————————————————————————————
    <span style=”font-size: large;”>Wybranym kandydatom oferujemy</span>
    <div class=”cleared”></div>
    ————————————————————————————————————————————
    <div class=”cleared”></div>

    <?php the_field(‚opis’); ?>
    <div class=”cleared”></div>
    ————————————————————————————————————————————
    <div class=”cleared”></div>
    Wynagrodzenie:
    <?php the_field(‚wynagrodzenie’); ?>
    <div class=”cleared”></div>
    ————————————————————————————————————————————
    <div class=”cleared”></div>
    Termin rozpoczęcia pracy:
    <?php the_field(‚termin_rozpoczecia_pracy’); ?>
    <div class=”cleared”></div>
    ————————————————————————————————————————————
    <div class=”cleared”></div>
    Okres zatrudnienia:
    <?php the_field(‚okres_zatrudniena’); ?>
    <div class=”cleared”></div>
    ————————————————————————————————————————————
    <div class=”cleared”></div>
    Oferta ważna do:
    <?php the_field(‚oferta_wazna_do’); ?>
    <div class=”cleared”></div>
    ————————————————————————————————————————————

    <div class=”cleared”></div>

    <?php get_sidebar(‚bottom’); ?>
    <div class=”cleared”></div>
    </div>
    <div class=”layout-cell sidebar1″>
    <?php get_sidebar(‚default’); ?>
    <div class=”cleared”></div>
    </div>
    </div>
    </div>
    </div>
    <div class=”cleared”></div>
    <?php get_footer(); ?>

    <?php 
    
    /**
     *
     * single.php
     *
     * The single post template. Used when a single post is queried.
     *
     */	
    
    get_header(); ?>
    <div class="layout-wrapper">
        <div class="content-layout">
            <div class="content-layout-row">
                <div class="layout-cell content">
    			<?php get_sidebar('top');  ?>
    			<span style="font-size: large;"><strong>POSZUKUJEMY PRACOWNIKA NA STANOWISKO:</strong></span>
    			<?php
    				if (have_posts()){
    					/* Display navigation to next/previous posts when applicable */
    					if (theme_get_option('theme_top_single_navigation')) {
    						theme_page_navigation(
    							array(
    								'next_link' => theme_get_previous_post_link('&laquo; %link'),
    								'prev_link' => theme_get_next_post_link('%link &raquo;')
    							)
    						);
    					}
    
    					while (have_posts())
    					{
    						the_post();
    						get_template_part('content', 'single');
    						/* Display comments */
    						if ( theme_get_option('theme_allow_comments')) {
    							comments_template();
    						}
    					}
    
    					/* Display navigation to next/previous posts when applicable */
    					if (theme_get_option('theme_bottom_single_navigation')) {
    						theme_page_navigation(
    							array(
    								'next_link' => theme_get_previous_post_link('&laquo; %link'),
    								'prev_link' => theme_get_next_post_link('%link &raquo;')
    							)
    						);
    					}
    
    				} else {    
    
    					theme_404_content();
    
    				}
    			?>
    
    			<?php the_field('Zawód'); ?>
    			<div class="cleared"></div>
    			------------------------------------------------------------------------------------------------------------------------------------
    			<div class="cleared"></div>
    			<strong>Kraj zatrudnienia: </strong>
    			<?php the_field('kraj_zatrudnienia'); ?>
    			<div class="cleared"></div>
    			------------------------------------------------------------------------------------------------------------------------------------
    			<div class="cleared"></div>
    			<strong>Opis stanowiska pracy: </strong>
    			<?php the_field('opis_stanowiska_pracy'); ?>
    			<div class="cleared"></div>
    			------------------------------------------------------------------------------------------------------------------------------------
    			<span style="font-size: large;"><strong>Wymagania</strong></span>
    			<div class="cleared"></div>
    			------------------------------------------------------------------------------------------------------------------------------------
    			<div class="cleared"></div>
    			<strong>Wykształcenie: </strong>
    			<?php the_field('wyksztalcenie'); ?>
    			<div class="cleared"></div>
    			------------------------------------------------------------------------------------------------------------------------------------
    			<div class="cleared"></div>
    			<strong>Doświadczenie w zawodzie: </strong>
    			<?php the_field('doswiadczenie_w_zawodzie'); ?>
    			<div class="cleared"></div>
    			------------------------------------------------------------------------------------------------------------------------------------
    			<div class="cleared"></div>
    			<strong>Wymagana znajomość języka: </strong>
    			<?php the_field('Wymagana_znajomosc_jezyka'); ?>
    			<div class="cleared"></div>
    			------------------------------------------------------------------------------------------------------------------------------------
    			<div class="cleared"></div>
    			<strong>Dodatkowe atuty: </strong>
    			<?php the_field('dodatkowe_atuty'); ?>
    			<div class="cleared"></div>
    			------------------------------------------------------------------------------------------------------------------------------------
    			<div class="cleared"></div>
    			<strong>CV w języku: </strong>
    			<?php the_field('CV_w_języku'); ?>
    			<div class="cleared"></div>
    			------------------------------------------------------------------------------------------------------------------------------------
    			<span style="font-size: large;"><strong>Wybranym kandydatom oferujemy</strong></span>
    			<div class="cleared"></div>
    			------------------------------------------------------------------------------------------------------------------------------------
    			<div class="cleared"></div>
    			<strong></strong>
    			<?php the_field('opis'); ?>
    			<div class="cleared"></div>
    		    ------------------------------------------------------------------------------------------------------------------------------------
    			<div class="cleared"></div>
    			<strong>Wynagrodzenie:</strong>
    			<?php the_field('wynagrodzenie'); ?>
    			<div class="cleared"></div>
    		    ------------------------------------------------------------------------------------------------------------------------------------
    			<div class="cleared"></div>
    			<strong>Termin rozpoczęcia pracy: </strong>
    			<?php the_field('termin_rozpoczecia_pracy'); ?>
    			<div class="cleared"></div>
    			------------------------------------------------------------------------------------------------------------------------------------
    			<div class="cleared"></div>
    			<strong>Okres zatrudnienia: </strong>
    			<?php the_field('okres_zatrudniena'); ?>
    			<div class="cleared"></div>
    			------------------------------------------------------------------------------------------------------------------------------------
    			<div class="cleared"></div>
    			<strong>Oferta ważna do: </strong>
    			<?php the_field('oferta_wazna_do'); ?>
    			<div class="cleared"></div>
    			------------------------------------------------------------------------------------------------------------------------------------
    
    			<div class="cleared"></div>
    
    			<?php get_sidebar('bottom'); ?>
                  <div class="cleared"></div>
                </div>
                <div class="layout-cell sidebar1">
                  <?php get_sidebar('default'); ?>
                  <div class="cleared"></div>
                </div>
            </div>
        </div>
    </div>
    <div class="cleared"></div>
    <?php get_footer(); ?>

    Czy możesz wkleić ten kod zgodnie z zasadami?

    Jak należy wklejać? Posting Code

    Po kolei. Jaki błąd powoduje wklejenie tego kodu w pętlę strony?

    Czy na pewno wklejasz ten kod prawidłowo? (Np. nie zagnieżdżasz tagów otwierających i zamykających php?)

    Spokojnie możesz zrobić coś takiego:

    while ( have_posts() ) {
      the_post();
      get_template_part('content', 'single');
    
      echo '<strong>Zawód: </strong>';
      the_field('Zawód');
      echo '<div class="cleared"></div>';
    
      echo '<strong>Kraj zatrudnienia: </strong>';
      the_field('kraj_zatrudnienia');
      echo '<div class="cleared"></div>';
    
      // itd...
    
      /* Display comments */
      if ( theme_get_option('theme_allow_comments')) {
        comments_template();
      }
    }

    PS. Unikałbym, natomiast tego rozdzielania pól za pomocą minusów. Od tego jest <hr /> chociażby… A zawsze można też CSSem border ustawić.

Viewing 11 replies - 1 through 11 (of 11 total)
  • The topic ‘custom fields’ is closed to new replies.