underscores Featured Image – brak w php
-
piszę skórkę na underscores
underscores jednak nie umieszcza domyślnie kodu dla 'obrazków wyróżniających’ w głównej pętli bloga (index.php)
—————-
Featured Image
Underscores doesn’t embed post thumbnails by default to index, post or page. You need to add PHP and HTML markup to generated and display featured images.—————-
szukam rozwiązania, kodu który miałbym wstawić po stronie php ?
-
najpierw w functions.php trzeba włączyć support dla obrazków wyróżniających:
if ( function_exists( 'add_theme_support' ) ) { add_theme_support( 'post-thumbnails' ); set_post_thumbnail_size( 150, 150, true ); // default Post Thumbnail dimensions (cropped) // additional image sizes // delete the next line if you do not need additional image sizes add_image_size( 'category-thumb', 300, 9999 ); //300 pixels wide (and unlimited height) }
Przykłady pochodzą z tej strony https://codex.wordpress.org/Post_Thumbnails
na której znajdziesz wiele innych cennych wskazówek 🙂a w pętli
// check if the post has a Post Thumbnail assigned to it. if ( has_post_thumbnail() ) { the_post_thumbnail(); } the_content();
Dziękuję bardzo za Odpowiedź i poświęcony czas, próbowałem już podobnej procedury, jednak bez skutku, po zastosowaniu Pana metody/sugestii, mam następujący błąd:
Fatal error: Can’t use function return value in write context in …/beta/wp-content/themes/underscores/functions.php on line 145
moje pliki:
[FUNCIONS.PHP]
<?php /** * underscores functions and definitions. * * @link https://developer.wordpress.org/themes/basics/theme-functions/ * * @package underscores */ if ( ! function_exists( 'underscores_setup' ) ) : /** * Sets up theme defaults and registers support for various WordPress features. * * Note that this function is hooked into the after_setup_theme hook, which * runs before the init hook. The init hook is too late for some features, such * as indicating support for post thumbnails. */ function underscores_setup() { /* * Make theme available for translation. * Translations can be filed in the /languages/ directory. * If you're building a theme based on underscores, use a find and replace * to change 'underscores' to the name of your theme in all the template files. */ load_theme_textdomain( 'underscores', get_template_directory() . '/languages' ); // Add default posts and comments RSS feed links to head. add_theme_support( 'automatic-feed-links' ); /* * Let WordPress manage the document title. * By adding theme support, we declare that this theme does not use a * hard-coded <title> tag in the document head, and expect WordPress to * provide it for us. */ add_theme_support( 'title-tag' ); /* * Enable support for Post Thumbnails on posts and pages. * * @link https://developer.wordpress.org/themes/functionality/featured-images-post-thumbnails/ */ add_theme_support( 'post-thumbnails' ); // This theme uses wp_nav_menu() in one location. register_nav_menus( array( 'primary' => esc_html__( 'Primary', 'underscores' ), ) ); /* * Switch default core markup for search form, comment form, and comments * to output valid HTML5. */ add_theme_support( 'html5', array( 'search-form', 'comment-form', 'comment-list', 'gallery', 'caption', ) ); // Set up the WordPress core custom background feature. add_theme_support( 'custom-background', apply_filters( 'underscores_custom_background_args', array( 'default-color' => 'ffffff', 'default-image' => '', ) ) ); } endif; add_action( 'after_setup_theme', 'underscores_setup' ); /** * Set the content width in pixels, based on the theme's design and stylesheet. * * Priority 0 to make it available to lower priority callbacks. * * @global int $content_width */ function underscores_content_width() { $GLOBALS['content_width'] = apply_filters( 'underscores_content_width', 640 ); } add_action( 'after_setup_theme', 'underscores_content_width', 0 ); /** * Register widget area. * * @link https://developer.wordpress.org/themes/functionality/sidebars/#registering-a-sidebar */ function underscores_widgets_init() { register_sidebar( array( 'name' => esc_html__( 'Sidebar', 'underscores' ), 'id' => 'sidebar-1', 'description' => esc_html__( 'Add widgets here.', 'underscores' ), 'before_widget' => '<section id="%1$s" class="widget %2$s">', 'after_widget' => '</section>', 'before_title' => '<h2 class="widget-title">', 'after_title' => '</h2>', ) ); } add_action( 'widgets_init', 'underscores_widgets_init' ); /** * Enqueue scripts and styles. */ function underscores_scripts() { wp_enqueue_style( 'underscores-style', get_stylesheet_uri() ); wp_enqueue_script( 'underscores-navigation', get_template_directory_uri() . '/js/navigation.js', array(), '20151215', true ); wp_enqueue_script( 'underscores-skip-link-focus-fix', get_template_directory_uri() . '/js/skip-link-focus-fix.js', array(), '20151215', true ); if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) { wp_enqueue_script( 'comment-reply' ); } } add_action( 'wp_enqueue_scripts', 'underscores_scripts' ); /** * Implement the Custom Header feature. */ require get_template_directory() . '/inc/custom-header.php'; /** * Custom template tags for this theme. */ require get_template_directory() . '/inc/template-tags.php'; /** * Custom functions that act independently of the theme templates. */ require get_template_directory() . '/inc/extras.php'; /** * Customizer additions. */ require get_template_directory() . '/inc/customizer.php'; /** * Load Jetpack compatibility file. */ require get_template_directory() . '/inc/jetpack.php'; if ( function_exists( 'add_theme_support' ) ) { add_theme_support( 'post-thumbnails' ); set_post_thumbnail_size( 150, 150, true ); // default Post Thumbnail dimensions (cropped) // additional image sizes // delete the next line if you do not need additional image sizes add_image_size( 'category-thumb', 300, 9999 ); //300 pixels wide (and unlimited height) }
[index.php]
<?php /** * The main template file. * * This is the most generic template file in a WordPress theme * and one of the two required files for a theme (the other being style.css). * It is used to display a page when nothing more specific matches a query. * E.g., it puts together the home page when no home.php file exists. * * @link https://codex.wordpress.org/Template_Hierarchy * * @package underscores */ get_header(); ?> <div id="primary" class="content-area"> <main id="main" class="site-main" role="main"> <?php if ( have_posts() ) : if ( is_home() && ! is_front_page() ) : ?> <header> <h1 class="page-title screen-reader-text"><?php single_post_title(); ?></h1><hr> if ( has_post_thumbnail() ) { the_post_thumbnail(); } the_content(); <?php the_excerpt(); ?> </header> <?php endif; /* Start the Loop */ while ( have_posts() ) : the_post(); /* * Include the Post-Format-specific template for the content. * If you want to override this in a child theme, then include a file * called content-___.php (where ___ is the Post Format name) and that will be used instead. */ get_template_part( 'template-parts/content', get_post_format() ); endwhile; the_posts_navigation(); else : get_template_part( 'template-parts/content', 'none' ); endif; ?> <a class="btn" href="<?php echo the_permalink(); ?>">Read More <span class="glyphicon glyphicon-chevron-right"></span></a> </main><!-- #main --> </div><!-- #primary --> <?php get_sidebar(); get_footer();
wcześniej używałem m.in tej metody:
[funcions / index]
<header> <h1 class="page-title screen-reader-text"><?php single_post_title(); ?></h1><hr> <!--post-thumbnail by LearnWebCode --> <div> <a href="<?php the_permalink(); ?>"><?php the_post_thumbnail('small-thumbnail'); ?></a> </div><!--/ .post-thumbnail--> <?php the_excerpt(); ?> </header> // Image size add_theme_support( 'post-thumbnails' ); set_post_thumbnail_size( 50, 50); // Image size for single posts add_image_size( 'single-post-thumbnail', 590, 180 ); add_theme_support('post-thumbnails'); function underscores_setup() { // Add featured image support add_theme_support('post-thumbnails'); add_image_size('small-thumbnail', 180, 120, true); add_image_size('banner-image', 920, 210, array('left', 'top')); } add_action('after_setup_theme', 'underscores_setup');
też bez rezultatu, nie znam php, i mogę się tylko domyślać i próbować metodą prób i błędów…
1. W functions.php (43 linijka) masz już zadeklarowane wsparcie dla obrazków wyróżniających. Dodatkowy snippet nie jest potrzebny. Żeby sprawdzić, czy to działa utwórz nowy post w kokpicie i zobacz czy jest w prawym sidebarze panel do ustawienia obrazka wyróżniającego. Jeżeli jest, to ustaw jakiś obrazek, żeby później móc sprawdzić poprawność kroku 2.
2. Przenieś konstrukcję, która ma iść do pętli pod komentarz /* Start the Loop */ (poniżej linijki while ( have_posts() ) : the_post();). Ze snippetu, który przytoczyłem wywal ostatnią linijkę the_content() to również jest tutaj zbędne.
działa – does work !
pana rady i wskazówki okazały się bezcenne, dziękuje z całego serca !!!
No to super. Cieszę się. 🙂
aczkolwiek, nie wiem jeszcze m.in. tego, dlaczego u mnie jest najpierw (patrząc od góry do dołu) miniatura obrazka wyróżniającego dla posta, a potem tytuł posta, który logicznie powinien być nad tym zdjęciem (obrazkiem wyróżniającym dla tegoż posta)
w statycznej stronie html/css/js:
kolejność znaczników w kodzie
(…)
<h2 class=””>
<p>
<btn>
(..)odpowiada temu co widzimy na stronie
w php nie widzę gdzie to zmienić… na jakim ukrytym rejestrze coś „trzyma” tą kolejność
=>
co ciekawe kolejność w głównej pętli bloga [index.php] sugeruję coś innego, i wydaje się być
właśnie prawidłowa, <H2> w kodzie jest nad zdjęciem wyróżniającym, a mimo to już na samej stronie h2 wyświetla się pod zdjęciem…<?php /** * The main template file. * * This is the most generic template file in a WordPress theme * and one of the two required files for a theme (the other being style.css). * It is used to display a page when nothing more specific matches a query. * E.g., it puts together the home page when no home.php file exists. * * @link https://codex.wordpress.org/Template_Hierarchy * * @package underscores */ get_header(); ?> <div id="primary" class="content-area"> <main id="main" class="site-main" role="main"> <?php if ( have_posts() ) : if ( is_home() && ! is_front_page() ) : ?> <header class="entry-header"> <h2 class="entry-title"><?php single_post_title(); ?></h2><hr> <?php the_excerpt(); ?> </header> <?php endif; /* Start the Loop */ while ( have_posts() ) : the_post(); // check if the post has a Post Thumbnail assigned to it. if ( has_post_thumbnail() ) { the_post_thumbnail(); } /* * Include the Post-Format-specific template for the content. * If you want to override this in a child theme, then include a file * called content-___.php (where ___ is the Post Format name) and that will be used instead. */ get_template_part( 'template-parts/content', get_post_format() ); endwhile; the_posts_navigation(); else : get_template_part( 'template-parts/content', 'none' ); endif; ?> <a class="btn" href="<?php echo the_permalink(); ?>">Read More <span class="glyphicon glyphicon-chevron-right"></span></a> </main><!-- #main --> </div><!-- #primary --> <?php get_sidebar(); get_footer();
Tak jak wspominałem, właściwa pętla zaczyna się tutaj:
/* Start the Loop */ while ( have_posts() ) : the_post();
następnie sprawdzamy, czy do tej strony przypisana jest miniaturka i ją wyświetlamy:
if ( has_post_thumbnail() ) { the_post_thumbnail(); }
Następnie, w zależności od formatu posta wczytywany jest odpowiedni plik:
get_template_part( 'template-parts/content', get_post_format() );
Funkcja będzie szukała w katalogu template-parts, plików zaczynających się od content. Powinieneś więc zajrzeć jeszcze do pliku content.php, aby sprawdzić czy kolejność się zgadza czy nie. 🙂
Koniec iteracji pętli, powrót do początku dla kolejnego posta, albo zakończenie i przejście dalej:
endwhile;
Dziękuję za Odpowiedź:
wiem, że mam ogromne zaległości (bo jeszcze zajmuję się innymi rzeczami), w nauce, ale wydaje mi się, że ta kolejność jest nie tyle nie prawidłowa, co nie ma po h2 <tagów> php o thumbnail, hmm:
<?php /** * Template part for displaying posts. * * @link https://codex.wordpress.org/Template_Hierarchy * * @package underscores */ ?> <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>> <header class="entry-header"> <?php if ( is_single() ) : the_title( '<h1 class="entry-title">', '</h1>' ); else : the_title( '<h2 class="entry-title"><a href="' . esc_url( get_permalink() ) . '" rel="bookmark">', '</a></h2>' ); endif; //HERE LACK OF THUMB TAG, if I understand properly... if ( 'post' === get_post_type() ) : ?> <div class="entry-meta"> <?php underscores_posted_on(); ?> </div><!-- .entry-meta --> <?php endif; ?> </header><!-- .entry-header --> <div class="entry-content"> <?php the_content( sprintf( /* translators: %s: Name of current post. */ wp_kses( __( 'Continue reading %s <span class="meta-nav">→</span>', 'underscores' ), array( 'span' => array( 'class' => array() ) ) ), the_title( '<span class="screen-reader-text">"', '"</span>', false ) ) ); wp_link_pages( array( 'before' => '<div class="page-links">' . esc_html__( 'Pages:', 'underscores' ), 'after' => '</div>', ) ); ?> </div><!-- .entry-content --> <footer class="entry-footer"> <?php underscores_entry_footer(); ?> </footer><!-- .entry-footer --> </article><!-- #post-## -->
- Temat ‘underscores Featured Image – brak w php’ jest zamknięty na nowe odpowiedzi.