2012-12-12 21 views
5

Mam nadzieję, że ktoś może mi pomóc w rozwiązaniu problemu. Buduję stronę z wiadomościami dla mojego przyjaciela. Witryna zaczyna się spotykać, ale nie mogę się dowiedzieć, jak dodawać podpisy do polecanych zdjęć. Przeglądałem dzisiaj całą sieć, istnieje wiele sposobów na to, dodając kod do arkuszy php, ale nie jestem pewien, co robię.Jak dodać wyróżniony podpis w WordPressie

Dodałem kod do funkcji functions.php, ale wszystko idzie w parze.

Trzymam kciuki, ktoś będzie w stanie mi pomóc, pisząc do mnie, co mam robić.

Z góry dziękujemy za pomoc.

poważaniem

Jana

+0

Co masz na myśli przez "polecane obrazy"? Czy chcesz, aby niektóre obrazy zawierały podpisy, a inne nie? Wyjaśnij, w jakim kontekście chcesz wyświetlać obrazy, podpisy itp. – barakadam

+1

Polecany obraz ma własne miejsce do wysyłania dla każdego postu i strony, a jego nazwa to "Featured Image". Zakładam, że o tym właśnie mówi. Szybkie wyszukiwanie w Google było prostym rozwiązaniem, opublikuję to poniżej. – AndyWarren

Odpowiedz

9

Po pierwsze, trzeba upuścić następujący kod w pliku functions.php:

function the_post_thumbnail_caption() { 
    global $post; 

    $thumbnail_id = get_post_thumbnail_id($post->ID); 
    $thumbnail_image = get_posts(array('p' => $thumbnail_id, 'post_type' => 'attachment')); 

    if ($thumbnail_image && isset($thumbnail_image[0])) { 
    echo '<span>'.$thumbnail_image[0]->post_excerpt.'</span>'; 
    } 
} 

wklej go tuż przed zamykającym tagiem w PHP, które plik, jeśli nie ma zamykającego tagu PHP, upewnij się, że pod wklejanym kodem nie ma pustych linii, ponieważ może to powodować problemy.

Następnie, w którym chcesz podpis ma być wyświetlany, trzeba nazwać to z tym:

<?php the_post_thumbnail_caption(); ?>

Jeśli nie wiesz gdzie umieścić wywołanie w plikach szablonów , musisz się dowiedzieć, gdzie jest wywoływany <?php the_post_thumbnail(); ?>. Poszukaj tej linii w pliku szablonu i umieść wywołanie funkcji w pobliżu, gdzie chcesz, aby napis był wyświetlany. Funkcja automatycznie otacza podpis w znaczniku zakresu, dzięki czemu możesz kierować go za pomocą CSS, ale możesz też zawinąć wywołanie funkcji w dowolny tag, który chcesz.

Tak na przykład, jeśli plik szablonu dzwoni obraz opisywany z tym lub coś bardzo podobny:

<?php 
    if (has_post_thumbnail()) { 
     the_post_thumbnail(); 
} ?> 

Ty chciałby dodać połączenie z napisami do niego tak:

<?php 
    if (has_post_thumbnail()) { 
     the_post_thumbnail(); 
} ?> 
<?php the_post_thumbnail_caption(); ?> 

Daj mi znać, jeśli potrzebujesz innych wyjaśnień.

+0

Cześć, Andy, dziękuję, że poświęciłeś mi czas. Używam bardzo dobrego programu do generowania motywów o nazwie Ultimatum, zobacz poniższy link. http://ultimatumtheme.com/ Dziś rano zajrzałem do wszystkich folderów, ale nie mogę znaleźć wymienionych plików php. Skopiowałem twój post i zapisałem go na forum Ultimatum, mam nadzieję, że ktoś powie mi, który plik powinienem otworzyć w Notatniku ++ i dodać. – TLCJohn

+0

Nie ma problemu, mam nadzieję, że pomaga. Kiedy już to zrozumiesz, przyjmij moją odpowiedź tutaj, jeśli to było to, czego szukałeś. Poszedłem do podanego linku i pobrałem kopię, aby znaleźć dla ciebie odpowiednie pliki, ale jest to dość drogie narzędzie. Wydaje się, że jest to swego rodzaju budowniczy przeciągania i upuszczania z przodu. Więc może mieć o wiele więcej kodu i plików niż typowy motyw WordPress. – AndyWarren

-1
the_post_thumbnail();     // without parameter -> Thumbnail 

the_post_thumbnail('thumbnail');  // Thumbnail (default 150px x 150px max) 
the_post_thumbnail('medium');   // Medium resolution (default 300px x 300px max) 
the_post_thumbnail('large');   // Large resolution (default 640px x 640px max) 
the_post_thumbnail('full');   // Original image resolution (unmodified) 

the_post_thumbnail(array(100,100)); // Other resolutions 
+2

Powinieneś usunąć tę odpowiedź. Jest całkowicie niepoprawny i prawdopodobnie zostaniesz zignorowany. –

0

wiem, że to jest stare pytanie, ale chciałam zaoferować inne rozwiązanie, które inni wolą, jeśli wolisz czynienia z danymi, które są już dostępne (mniej połączeń baz danych) podczas korzystania z pól już dostępne w WordPress .

Ponieważ wynik get_the_post_thumbnail() zwraca cały tag img jako ciąg z tagiem alt wstępnie wypełnionym z pola podpisu, można po prostu wyodrębnić znacznik alt znacznika obrazu za pomocą parsera xml lub regex.

Zrobiłem to:

<?php 
    if ($featured = get_the_post_thumbnail(get_the_ID())): 

     echo $featured; 
     preg_match('/alt="(.*)"/i', $featured, $caption); 

     if ($caption) { 
      echo wpautop(array_pop($caption)); 
     } 
    endif; 
    ?> 

Jeśli chcesz go w funkcji takich jak pierwotnie przyjętego odpowiedź, przekazać tag img bezpośrednio do funkcji:

function get_the_post_thumbnail_caption($img_tag) { 
     preg_match('/alt="(.*)"/i', $img_tag, $caption); 
     return array_pop($caption); 
    } 

I w szablonie:

$img = get_the_post_thumbnail(get_the_ID()); // or any id 
    echo wpautop(get_the_post_thumbnail_caption($img)); 

Pamiętaj, że wypełnienie pola "tekst alternatywny" spowoduje nadpisanie danych pola podpisu podczas wysyłania znacznika img. W razie potrzeby możesz zastąpić to zachowanie za pomocą filtrów.

+0

Jeszcze jedno: można rozszerzyć wyrażenie regularne, aby uwzględnić inne znaczniki za pomocą funkcji 'preg_match_all' i wzorca, jak" /(alt|title|src)="(.*)"/i ' – Scorpius