Wsparcie » Motywy » underscores Featured Image – brak w php

  • Rozwiązano And1rzej

    (@and1rzej)


    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 ?

Viewing 8 replies - 1 through 8 (of 8 total)
  • 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();
    Thread Starter And1rzej

    (@and1rzej)

    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.

    Thread Starter And1rzej

    (@and1rzej)

    działa – does work !

    pana rady i wskazówki okazały się bezcenne, dziękuje z całego serca !!!

    No to super. Cieszę się. 🙂

    Thread Starter And1rzej

    (@and1rzej)

    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;

    Thread Starter And1rzej

    (@and1rzej)

    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">&rarr;</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-## -->
    
Viewing 8 replies - 1 through 8 (of 8 total)
  • Temat ‘underscores Featured Image – brak w php’ jest zamknięty na nowe odpowiedzi.