Wordpress功能可更改现有的特色图像尺寸

时间:2013-08-08 06:05:13

标签: php wordpress function wordpress-theming

我正在使用自定义社区(CC)主题 我创建了一个子主题 我创建了一个functions.php文件

原始CC主题在functions.php中有此代码

        // This theme uses post thumbnails
    if (function_exists('add_theme_support')) {
        add_theme_support('post-thumbnails');
        set_post_thumbnail_size(222, 160, true);
        add_image_size('slider-top-large', 1006, 250, true);
        add_image_size('slider-large', 990, 250, true);
        add_image_size('slider-responsile', 925, 250, true);
        add_image_size('slider-middle', 756, 250, true);
        add_image_size('slider-thumbnail', 80, 50, true);
        add_image_size('post-thumbnails', 222, 160, true);
        add_image_size('single-post-thumbnail', 598, 372, true);
    }

我想将后缩略图大小从222x160更改为更大的尺寸,例如400x300的。

我在Post Thumbnails,Function Reference / add image size,Function Reference / set post thumbnail size,Function Reference / post thumbnail,Plugin API / Filter Reference上阅读过codex。

不幸的是,我对PHP的理解仍然非常有限,而且我处于早期学习阶段。

我已经看到了二十个主题在其他地方听起来类似问题的例子,但没有我的函数,我无法理解或应用自己。没有我的函数.php将我锁定,在ftp上删除它并重新开始。

我仍然不确定是否可以向我的子主题functions.php添加一个函数,该函数将在父主题中取消设置/重新指定缩略图(或任何其他指定图像类型)的图像大小。

为了澄清我的functions.php和子主题是否正常工作我可以确认我已成功使用函数来设置我的登录样式,我只是缺乏理解来实现这一点。

按照tuts-plus教程(第6点 - 删除其他图像大小),我在我的functions.php中尝试了以下代码:

//change thumbnail size
function remove_parent_image_sizes( $sizes ) {
    unset( $sizes['post-thumbnail-size'] );
    return $sizes;
}

if ( function_exists( 'add_image_size' ) ) {
    // 400 pixels wide and 300 px tall, cropped
    add_image_size( 'post-thumbnails', 400, 300, true );
}

然后,我从帖子中删除了一个精选图片并应用了一个新图片,但它仍然具有222x160的尺寸。

仍然难过:(

也试过这种方式,但仍然没有运气;

//change thumbnail size
function remove_parent_image_sizes( $sizes ) {
    unset( $sizes['post-thumbnail-size'] );
    return $sizes;
}

if (function_exists('add_theme_support')) {
    add_theme_support('post-thumbnails');
    set_post_thumbnail_size(400, 300, true);
    add_image_size('post-thumbnails', 400, 300, true);
}

将此行(从stackexchange链接修改)添加到结尾会导致我的网站中断:

add_action( 'after_setup_theme', 'remove_parent_image_sizes' );

3 个答案:

答案 0 :(得分:1)

您应首先使用remove_action()remove_filter()函数删除父主题行为,然后您可以使用add_action()添加子主题的操作。 Here 是一个很好的教程如何修改子主题中的父主题行为供您参考。

答案 1 :(得分:1)

答案最终非常简单,父母主题的作者提供了我需要做的明确指示。

 * To override cc_setup() in a child theme, add your own cc_setup to your child theme's
 * functions.php file.

原始代码之上是需要包含在子主题中的函数的开头:

function cc_setup() {
    global $cap, $content_width;

    // This theme styles the visual editor with editor-style.css to match the theme style.
    add_editor_style();

    // This theme uses post thumbnails
    if (function_exists('add_theme_support')) {
        add_theme_support('post-thumbnails');
        set_post_thumbnail_size(222, 160, true);
        add_image_size('slider-top-large', 1006, 250, true);
        add_image_size('slider-large', 990, 250, true);
        add_image_size('slider-responsile', 925, 250, true);
        add_image_size('slider-middle', 756, 250, true);
        add_image_size('slider-thumbnail', 80, 50, true);
        add_image_size('post-thumbnails', 222, 160, true);
        add_image_size('single-post-thumbnail', 598, 372, true);
    }

然后我删除了我不想修改的行并关闭了函数}:

// Override parent theme thumbnail size
function cc_setup() {
    global $cap, $content_width;

    // This theme styles the visual editor with editor-style.css to match the theme style.
    add_editor_style();

    // This theme uses post thumbnails
    if (function_exists('add_theme_support')) {
        add_theme_support('post-thumbnails');
        set_post_thumbnail_size(400, 300, true);
        add_image_size('post-thumbnails', 400, 300, true);
    }
}

保存了functions.php(子主题),上传了一个新的精选图片到一个帖子,它工作,我的缩略图现在是400,300。

我第一次没有正确阅读文档,这是我的错!教训!

答案 2 :(得分:1)

在我看来,在您的子主题中创建自己的尺寸的最简单方法是使用remove_theme_support删除并再次设置add_theme_support,如下例所示:

// Use the after_setup_theme hook with a priority of 11 to load after the
// parent theme, which will fire on the default priority of 10
add_action( 'after_setup_theme', 'remove_featured_images_from_child_theme', 11 );

function remove_featured_images_from_child_theme() {

    // This will remove support for post thumbnails on ALL Post Types
    remove_theme_support( 'post-thumbnails' );

    // Add this line in to re-enable support for just Posts
    add_theme_support( 'post-thumbnails', array( 'post' ) );
    // Thumbnail sizes
    add_image_size( 'my-theme-featured', 638, 280, true );
    add_image_size( 'my-theme-featured-home', 311, 207, true);
    add_image_size( 'my-theme-featured-carousel', 970, 400, true);
}

请勿忘记在更改后使用AJAX Thumbnail Rebuild等插件重建缩略图

我希望这有帮助, 麦克