web-dev-qa-db-ja.com

ランダムに設定するとカスタムヘッダー画像が表示されません

私はBoilerplate(しばらく前)から開発されたカスタムテーマを使っています。私は、静的に設定されたときにヘッダー画像がうまく機能することに気づきましたが、ランダムに設定されたときには現れません。私はテーマを切り替えてみました、そして同じ問題がボイラープレートと同様に起こることに気づきました、そして、二十二。しかし、20個はうまくいったので、そのコードを私のテーマにコピーしましたが、それでもうまくいきません。

私のfunctions.phpが含まれています:

    // The custom header business starts here.

$custom_header_support = array(
    // The default image to use.
    // The %s is a placeholder for the theme template directory URI.
    'default-image' => '%s/images/headers/starkers.png',
    // The height and width of our custom header.
    'width' => 760,
    'height' => 280,
    // Don't support text inside the header image.
    'header-text' => false,
    // Callback for styling the header preview in the admin.
    'admin-head-callback' => '',
);

add_theme_support( 'custom-header', $custom_header_support );

if ( ! function_exists( 'get_custom_header' ) ) {
    // This is all for compatibility with versions of WordPress prior to 3.4.
    define( 'HEADER_TEXTCOLOR', '' );
    define( 'NO_HEADER_TEXT', true );
    define( 'HEADER_IMAGE', $custom_header_support['default-image'] );
    define( 'HEADER_IMAGE_WIDTH', $custom_header_support['width'] );
    define( 'HEADER_IMAGE_HEIGHT', $custom_header_support['height'] );
    add_custom_image_header( '', $custom_header_support['admin-head-callback'] );
    add_custom_background();
}

// We'll be using post thumbnails for custom header images on posts and pages.
// We want them to be 940 pixels wide by 198 pixels tall.
// Larger images will be auto-cropped to fit, smaller ones will be ignored. See header.php.
set_post_thumbnail_size( $custom_header_support['width'], $custom_header_support['height'], true );

// ... and thus ends the custom header business.


// Default custom headers packaged with the theme. %s is a placeholder for the theme template directory URI.
register_default_headers( array(
    'berries' => array(
        'url' => '%s/images/headers/starkers.png',
        'thumbnail_url' => '%s/images/headers/starkers-thumbnail.png',
        /* translators: header image description */
        'description' => __( 'Boilerplate', 'boilerplate' )
    )
) );
}
endif;

基本的に逐語的にコピーされた。

そして私のheader.php:

<?php
    // The header image
    // Check if this is a post or page, if it has a thumbnail, and if it's a big one
    if ( is_singular() &&
            has_post_thumbnail( $post->ID ) &&
            ( /* $src, $width, $height */ $image = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), array( HEADER_IMAGE_WIDTH, HEADER_IMAGE_WIDTH ) ) ) &&
            $image[1] >= HEADER_IMAGE_WIDTH ) :
        // Houston, we have a new header image!
        echo get_the_post_thumbnail( $post->ID, 'post-thumbnail' );
    elseif (get_header_image()) : ?>
    <img src="<?php header_image(); ?>" width="<?php echo HEADER_IMAGE_WIDTH; ?>" height="<?php echo HEADER_IMAGE_HEIGHT; ?>" alt="" />
<?php endif; // end check for featured image or standard header 
?>

私は今、私の考えから外れているだけなのです。足りないものはあるでしょうか。それとも私が気づいていない衝突?

2

コードを確認したところ、get_header_image()内でランダムヘッダー画像機能が発生しているようです。したがって、問題は次のいずれかになります。

  1. あなたのelseifは決して実行されません。つまり、if条件は常にtrueと評価され、get_the_post_thumbnail()がイメージの生成を行います。
  2. あなたのテーマはカスタムヘッダデフォルト画像、またはその両方に対して有効にされていません。

何が起きているのかを正確に診断する簡単な方法のために、私はあなたのheader.phpのどこにでもデバッグメッセージを置きます。

参考のために、get_header_image()ソースコード を示します。

function get_header_image() {
    $url = get_theme_mod( 'header_image', get_theme_support( 'custom-header', 'default-image' ) );

    if ( 'remove-header' == $url )
        return false;

    if ( is_random_header_image() )
        $url = get_random_header_image();

    return esc_url_raw( set_url_scheme( $url ) );
}

編集:何かが見つかりました。次のように、add_theme_supportを呼び出すためにdefault-imageパラメータを配列に追加してみてください。

$custom_header_support = array(
    // The default image to use.
    // The %s is a placeholder for the theme template directory URI.
    'default-image' => '%s/images/headers/starkers.png',
    // The height and width of our custom header.
    'width' => 760,
    'height' => 280,
    // Don't support text inside the header image.
    'header-text' => false,
    // Callback for styling the header preview in the admin.
    'admin-head-callback' => '',
    'random-default' => true
);

注:このリンク は、どのパラメータがテーマのランダム画像を有効にするのに役立つかを理解するのに非常に役立ちました。 。

1
montrealist

あなたは Post Types Order プラグインを使うべきですか?
同じ問題があり、そのプラグインの自動並べ替え機能を無効にすることで解決しました。

1