W tym artykule opisze wam dwa rozwiązania dotyczące ikon wpisów w serwisach opartych na WordPressie. Po pierwsze pokażę, jak sprawić, aby WordPress automatycznie wstawiał zawsze taką samą ikonę wpisu, a po drugie, jak sprawić, aby WordPress automatycznie generował ikonę wpisu z pierwszego wstawionego w treści artykułu obrazka.

Do dzieła :)

Opisując te dwie metody zakładam, że szablon, z którego korzystacie obsługuje już możliwość wstawienia ikon wpisów.

Automatyczne wstawianie domyślnej (zawsze takiej samej) ikony wpisu

W tym przypadku całą zabawę zaczynamy od stworzenia obrazka, który będzie domyślną ikoną wpisów. Plik nazywamy np. ikona-wpisu.jpg i zapisujemy w katalogu images aktualnie używanego szablonu WordPressa.

Następnie w plikach, gdzie występuje tzw. pętla wpisów (post loop), czyli np. w pliku home.php, single.php, index.php, archive.php wstawiamy w tę pętlę taki kod:

< ?php if ( has_post_thumbnail() ) {
the_post_thumbnail();
} else { ?>
<img src="<?php bloginfo('template_directory'); ?>/images/ikona-wpisu.jpg" alt="<?php the_title(); ?>" />
<?php } ? >

Kiedy takie rozwiązanie się przyda? Na przykład wtedy, gdy pracujemy nad nowym szablonem jakiegoś serwisu opartego na WordPressie i chcemy pokazać, jak będą wyglądać wpisy na stronie wyposażone w ikony.

Druga metoda, opisana poniżej, przyda się z kolei autorom serwisów opartych na WordPressie, ponieważ przyspieszy ona publikację artykułów – odpada samodzielne przygotowanie do każdego artykułu specjalnego obrazka będącego jego ikoną.

Automatyczna zamiana pierwszego obrazka wstawionego w treść wpisu na jego ikonę

Jeśli chcemy, aby WordPress automatycznie zamieniał nam pierwszy wstawiony w treści artykułu obrazek na jego ikonę, należy wykonać następujące czynności:

Otwieramy plik functions.php szablonu bloga, z którego korzystamy i wklejamy w niego taki kod:

//function to call first uploaded image in functions file
function main_image() {
$files = get_children('post_parent='.get_the_ID().'&post_type=attachment&post_mime_type=image&order=desc');
if($files) :
$keys = array_reverse(array_keys($files));
$j=0;
$num = $keys[$j];
$image=wp_get_attachment_image($num, 'large', true);
$imagepieces = explode('"', $image);
$imagepath = $imagepieces[1];
$main=wp_get_attachment_url($num);
$template=get_template_directory();
$the_title=get_the_title();
print "$the_title";
endif;
}

Następnie w plikach, gdzie występuje tzw. pętla postów (post loop) wklejamy taki kod:

< ?php if ( (function_exists('has_post_thumbnail')) && (has_post_thumbnail()) ) { echo get_the_post_thumbnail($post->ID);
} else {
echo main_image();
} ? >

Należy zaznaczyć, że automat ten zadziała tylko wtedy, jeśli sami nie wstawimy ikony wpisu własnoręcznie. Jeśli to zrobimy to ikoną wpisu będzie obrazek przygotowany przez nas, a nie ten automatycznie wygenerowany z ilustracji w treści wpisu. Poza tym warto wiedzieć, że zamiana pierwszej ilustracji na ikonę postu nie spowoduje jej usunięcia z treści artykułu.

Obie metody znalazłem w artykule na blogu WPBeginner, sprawdziłem na swoim blogu roboczym i tam wszystko działa.

4 komentarz(e)y na temat “WordPress – jak wstawić domyślne ikony wpisów?

  1. zawsze można użyć innej funkcji:

    if (function_exists(“add_theme_support”))
    add_theme_support(“post-thumbnails”);

    dzięki temu możemy tworzyć ikony wpisów w oknie tworzenia newsa na bloga i nie musimy wstawiać obrazka do treści wpisu bezpośrednio

  2. Witaj,
    trafiłem tutaj nie pierwszy raz, tym razem z Googla w odpowiedzi na gnębiący mnie problem z pętlą. Tak się złożyło że “wypluło” znowu Piotra Sajnoga ;) Zatem –
    korzystam w WP z seo wtyczki Greg’s High Performance. Dzięki unikalanej funkcji umożliwia np. na stronie kategorii na której są wylistowane zajawki konkretnych postów z danej kategorii w zamian za the_excerpt() wstawić swój kod odpowiedzialny za wstawienie uprzednio przygotowanej przez siebie zajawki posta (opis). Rzecz w tym, że koniecznie trzeba to zrobić poza pętlą. Gdy wstawiam poza nią nie osiągam zamierzenia bowiem description nie wyświetla się w boksie/divie owej zajawki posta. Jak w nim wstawię – jestem w pętli. Wiesz może jak z niej wyjść, a mimo to wstawić zajawkę w diva?

    Wstawiam dla pomocy zawartość pliku template_1.php do którego odwołuje się archive.php. Plugin w znaczniku wykonuje podmianę title na drugi oraz pod tym znacznikiem podmianę opisu posta the_excerpt() zastępując go swoim, przytoczonym powyżej. Zajmie sporo miejsca:

    ID, 'full_image_value', true);
    //CHECK IMAGE POST
    if ($image2) { ?><a href=""><img src="/timthumb.php?src=&h=100&w=100&zc=1&q=90" width="100" height="100" alt="" /><?php }
    //CHECK AUTOMATIC THUMB
    elseif (catch_that_image()"") { ?><a href=""><img src="/timthumb.php?src=&h=100&w=100&zc=1&q=90" width="100" height="100" alt="" /><a href=""><img src="/images/blog-thumb-100x100.jpg" width="100" height="100" alt="no image"/>
    <?php the_tags(' ', ', ', ''); ?>

    Niestety, żadnych treści w tej kategorii.

    Gdybyś był w stanie mi pomóc bardzo bym prosił.

    Pozdrawiam

Komentarze zostały wyłączone.