Wsparcie » Używanie i konfiguracja WordPressa » Wyświetlanie lub ukrywanie obrazka wyrozniajacego

  • Witam, jest możliwość ukrywania lub wyświetlania obrazka wyróżniającego? Szukałem w internecie, ale nic nie znalazłem. Mogłaby być też możliwość wyświetlanai zwykłego obrazka z wpisu na stronie głównej, a ukrycie go w pojedynczym wpisie. Jedyne co znalazłem to niedziałająca wtyczka Hide Featured Image.

Viewing 5 replies - 1 through 5 (of 5 total)
  • Dlaczego od razu wtyczki a nie modyfikacja motywu?

    Obrazek wyróżniający generuje funkcja the_post_thumbnail().

    Wystarczy dodać warunek:

    if ( $warunek ) :
    the_post_thumbnile();
    endif;

    Warunkiem będzie metadata (metabox) z wpisu (Jeżeli chcesz dla każdego z osobna kontrolowac) lub opcja motywu (wtedy ustawienie jest globalne i albo pokazuje obrazki albo nie.

    Dodatkowo można dodać warunki dla poszczególnych stron (wpis, strona, blog, strona domowa) itd.

    Możesz też pokombinować z filtrem:
    http://hookr.io/filters/post_thumbnail_html/
    Ale wyjdzie na to samo.

    Jak chcesz wyłaczyć obrazek wyrózniający we wpisach, to najlepiej wyedytować sobie motyw (korzystając z motywu potomnego) i wyciąć w nim po prostukawałek kodu odpowiedzialny za pokazywanie OW.
    Można tez kombinować filtrami np. https://helloacm.com/how-to-hide-feature-image-of-posts-in-wordpress/ – ale wszystko i tak zależy od konstrukcji danego motywu.

    Thread Starter szukista

    (@szukista)

    Paweł własnie myślałem o takim rozwiązaniu tylko nie mam pojęcia gdzie generować zmienną warunek. W każdym poście musiałbym otwierać tagi php i pisać np $warunek = 1; chciałbym to troche bardziej zaautomatyzować. A jak się odnieść do metadaty z wpisu? jak w ogóle to ustawić?

    z takim stałym wyświetlaniem albo ukryciem to daję rade to zrobić, ale zależy mi na opcji wyboru który wpis ma mieć obrazek wyróżniający, a który nie.

    Edytujesz sobie tylko 1 raz w motywie, w miejscu gdzie masz wywołanie ikony wpisu – może to być plik content.php, single.php czy jakiś inny – musisz sobie to już sprawdzić.
    A jako warunek można użyć custom fields, czyli własnego pola – które można najnormalniej ustawić sobie w oknie edycji wpisu …jeżeli nie masz bloku „Własne pola”, to w górnym prawym narożniku ekranu rozwijasz „Opcje ekranu” i tam zaznaczasz.

    Można też sobie wyprowadzić w bardziej przyjaznej formie, prostego do zaznaczenia/odznaczenia pola checkbox.
    W functions.php motywu wrzucasz coś takiego:

    function prefix_featured_image_meta( $content ) {
        global $post;
        $text = __( 'Don\'t display image in post.', 'prefix' );
        $id = 'hide_featured_image';
        $value = esc_attr( get_post_meta( $post->ID, $id, true ) );
        $label = '<label for="' . $id . '" class="selectit"><input name="' . $id . '" type="checkbox" id="' . $id . '" value="' . $value . ' "'. checked( $value, 1, false) .'> ' . $text .'</label>';
        return $content .= $label;
    }
    add_filter( 'admin_post_thumbnail_html', 'prefix_featured_image_meta' );
    
    function prefix_save_featured_image_meta( $post_id, $post, $update ) {
        $value = 0;
        if ( isset( $_REQUEST['hide_featured_image'] ) ) {
            $value = 1;
        }
        update_post_meta( $post_id, 'hide_featured_image', $value );
      
    }
    add_action( 'save_post', 'prefix_save_featured_image_meta', 10, 3 );

    a potem w miejscu wywołania ikony wpisu robisz tylko warunek w tym stylu:

    if( has_post_thumbnail() && get_post_meta(get_the_ID(), 'hide_featured_image', true) != 1 ){
    
    ...
    
    }
    Thread Starter szukista

    (@szukista)

    Metoda z checkboxem działa 🙂 wielkie dzięki 🙂 🙂

Viewing 5 replies - 1 through 5 (of 5 total)
  • Temat ‘Wyświetlanie lub ukrywanie obrazka wyrozniajacego’ jest zamknięty na nowe odpowiedzi.