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.
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 ){
...
}
Metoda z checkboxem działa 🙂 wielkie dzięki 🙂 🙂