web-dev-qa-db-ja.com

注目の画像が設定されていない場合は、プレースホルダ/デフォルトの画像を表示

使用可能な機能のある画像がない場合は、プレースホルダーを表示するように次のコードを変更する必要があります。

次のコードにifステートメントを追加する必要があることを私は理解していますが、必要な正確なコーディングについては確信が持てませんでした。平易な英語では明らかに、プレースホルダを表示しない場合はそれを表示するサムネイルがあるかどうかの行に沿って表示されます。

<?php $rel = $related->show(get_the_ID(), true);
     $count = 1;
    foreach ($rel as $r) {
     $class= ($count%6 == 0)?"category-related-item-right":"";

     echo '<div class="category-related-item '.$class.'"><a href='.get_permalink($r->ID).'>'.'<div class=category-related-title>'.$r->post_title.'</div>'.get_the_post_thumbnail($r->ID, array(50,50)).'</a></div>';
$count++;
}?>

私は以下を試しましたが、それはページを壊しているので、何かはまったく正しくありません...

<?php $rel = $related->show(get_the_ID(), true);
$count = 1;
foreach ($rel as $r) {
$class= ($count%6 == 0)?"category-related-item-right":"";

echo '<div class="category-related-item '.$class.'"><a href='.get_permalink($r->ID).'>'.'<div class=category-related-title>'.$r->post_title.'</div>';
if (get_the_post_thumnail($r->ID)) : 
get_the_post_thumbnail($r->ID, array(50,50));
else :
echo '<img src="image_url"/>';
endif;
echo '</a></div>';
$count++;
}?>
2
Vince Pettit

Ifステートメントのthumbnail(thumnail)のスペルミス。

また、 get_the_post_thumbnail はサムネイルをエコーし​​ますが、htmlを返します。あなたはそれをエコーする必要があります。

また、投稿にサムネイルがあるかどうかを確認するには、 has_post_thumbnail を使用できます。

 if ( has_post_thumbnail($r->ID)) {
    echo get_the_post_thumbnail($r->ID, array(50,50));
 }else{
    echo '<img src="image_url"/>';
 }
4
Stephen Harris

知識が少ないかまったくない設計者、およびwordpressの状態記述者が画像コードを取得する場合は、こちらをご覧ください。デザイナーはwordpressをコピーして、イメージコードを取得して貼り付けるだけです。

if ( has_post_thumbnail($post->ID) ){   
    $image = wp_get_attachment_image_src(get_post_thumbnail_id(), 'full');
    $image = $image[0];
    echo '<div id="product" class="MagicZoomPlus" href="'.$image.'" rel="selectors-class: Active"><img src="'.$image.'" alt="" /></div>';
}else{  
    $image = get_template_directory_uri() .'/img/placeholder-580.png'; 
    echo '<a id="product" class="MagicZoomPlus" href="'.$image.'" rel="selectors-class: Active"><img src="'.$image.'" alt="" /></a>';
}
1
Bipin Sapkota

テーマのデフォルト画像を追加する機能

次のコードはチケットとしてTracにもあります。 1)

1)それをサポートするために、@ ccとして自分自身を追加してください。ありがとうございます。

チケットリンク

関数wp_default_img()を使う:

これは属性の入力配列を処理し、2つのフィルター(wp_default_img_attr&wp_default_img)を提供します。そのため、デフォルトの画像を設定するのは、フィルタを使用するのと同じくらい簡単で(テーマ開発者が関数default argsに満足していない場合)、最後に単に追加するだけです…

// functions.php during init:
add_image_size( 'default_img', 80, 80, true );

// Inside some template
$placeholder = get_site_url( null, 'your_path' ).'/some_img.jpg';
echo wp_default_img( array( 'url' => $placeholder, 'size' => 'default_img' ) );

Add_image_size();を使用してサイズを登録するときに4番目の引数がtrueに設定されている場合、この関数は画像の切り取りも考慮します。

function wp_default_img( $attr )
{
        // Sizes registered via add_image_size();
        global $_wp_additional_image_sizes;

        $defaults = array(
             'size'     => 'medium'
            ,'classes'  => false
            ,'alt'      => false
            ,'title'    => false
            ,'align'    => 'none'
            ,'echo'     => true 
        );

        $attr = wp_parse_args( $attr, $defaults );

        if ( 'thumb' === $attr['size'] )
            $attr['size'] = 'thumbnail';

        // Size in built in sizes - call size setting from DB
        # behavoir in here, dependent on outcome of @link http://core.trac.wordpress.org/ticket/18947
        if ( ! in_array( $attr['size'], array_keys( $_wp_additional_image_sizes ) ) )
        {
            $sizes                        = get_intermediate_image_sizes();
            // Get option - gladly autoloaded/can use wp_cache_get();
            $size_data['width']  = intval( get_option( "{$attr['size']}_size_w") );
            $size_data['height']= intval( get_option( "{$attr['size']}_size_h") );
            // Not sure how this will behave if cropped is false (autoloaded option not added)
            $size_data['crop']    = get_option( "{$attr['size']}_crop" ) ? get_option( "{$attr['size']}_crop" ) : false;
        }
        // Size array from global registered additional/custom sizes array
        else 
        {
            $size_data = $_wp_additional_image_sizes[ $attr['size'] ];
        }

        // Retrieve image width & height
        $img_info       = @getimagesize( $attr['url'] );

        // Calculate final dimensions - if "crop" was set to true during add_image_size(), the img will get ... cropped
        $end_sizes      = image_resize_dimensions( $img_info[0], $img_info[1], $size_data['width'], $size_data['height'], $size_data['crop'] );

        // defaults to px units - can't get changed, as applying units is not possible
        $hwstring       = ' '.trim( image_hwstring( $end_sizes[4], $end_sizes[5] ) );

        // Attributes:
        // Not made required as users tend to do funky things (...and lock screen readers out)
        $attr['alt'] = $attr['alt'] ? ' alt="'.esc_attr( $attr['alt'] ).'"' : '';

        if ( ! $attr['title'] )
        {
            $mime = explode( "/", $img_info['mime'] );
            $attr['title'] = sprintf( __('default image of type: %1$s'), ucfirst( $mime[1] ) );
        }
        $attr['title'] = $attr['title'] ? ' title="'.esc_attr( $attr['title'] ).'"' : '';

        $attr['classes'] = "wp-img-default ".esc_attr( $attr['classes'] ? $attr['classes'] : '' );
        $attr['align'] = $attr['align'] ? "align".esc_attr( $attr['align'] ) : '';
        $attr['size'] = "size-".esc_attr( $attr['size'] );

        // Allow filtering of the default attributes
        $attributes  = apply_filters( 'wp_default_img_attr', $attr );

        // Build class attribute, considering that maybe some attribute was unset via the filter
        $classes  = ' class="';
        $classes .= 'wp-img-default'.esc_attr( $attr['classes'] ? ' '.$attr['classes'] : '' );
        $classes .= $attr['align'] ? ' '.esc_attr( $attr['align'] ) : '';
        $classes .= $attr['size'] ? ' '.esc_attr( $attr['size'] ).'" ' : '" ';

        $url        = trim( $attr['url'] );
        $image      = "<img src='{$url}'{$hwstring}{$classes}{$attr['alt']}{$attr['title']} />";

        // Allow filtering of output
        $image      = apply_filters( 'wp_default_img', $image );

        if ( ! $attr['echo'] )
            return $image;

        return print $image;
}
0
kaiser