วิธีรับรายการขนาดย่อที่เป็นไปได้ทั้งหมดที่ตั้งค่าไว้ภายในธีม


24

ฉันสามารถใช้ฟังก์ชันใดในปลั๊กอินเพื่อรับขนาดของทุกขนาดภาพ (ในอาเรย์ที่ควรใช้) ที่กำหนดไว้ในธีมลูก

เพื่อความกระจ่างแจ้งฉันไม่ได้ถามว่าจะสร้างขนาดภาพใหม่ได้อย่างไร


กำลังหาบางสิ่งบางอย่างเช่นนี้ แต่ด้วยอินเตอร์เฟซ, มาข้ามปลั๊กอินขนาดรูปภาพเพิ่มเติม (Zui) มี 500 วันโดยไม่มีการอัปเดต แต่ผ่านการทดสอบชุดแรก
brasofilo

คำตอบ:


41

พบได้ที่นี่ คำตอบคือ:

global $_wp_additional_image_sizes; 
print '<pre>'; 
print_r( $_wp_additional_image_sizes ); 
print '</pre>';

การเพิ่มไปที่ด้านบนของfunctions.phpไฟล์จะไม่ทำงาน แต่ติดในฟังก์ชั่นของคุณในไฟล์นั้นและมันจะทำงานได้
kevnk


13

WordPress core ไม่มีวิธีเนทีฟในการรับขนาดภาพระดับกลาง (เช่นความกว้างและความสูง) แต่ฟังก์ชั่นตัวช่วยต่อไปนี้จะได้ขนาดภาพที่ลงทะเบียนทั้งหมดพร้อมขนาดของมัน:

/**
 * Get all the registered image sizes along with their dimensions
 *
 * @global array $_wp_additional_image_sizes
 *
 * @link http://core.trac.wordpress.org/ticket/18947 Reference ticket
 *
 * @return array $image_sizes The image sizes
 */
function _get_all_image_sizes() {
    global $_wp_additional_image_sizes;

    $default_image_sizes = get_intermediate_image_sizes();

    foreach ( $default_image_sizes as $size ) {
        $image_sizes[ $size ][ 'width' ] = intval( get_option( "{$size}_size_w" ) );
        $image_sizes[ $size ][ 'height' ] = intval( get_option( "{$size}_size_h" ) );
        $image_sizes[ $size ][ 'crop' ] = get_option( "{$size}_crop" ) ? get_option( "{$size}_crop" ) : false;
    }

    if ( isset( $_wp_additional_image_sizes ) && count( $_wp_additional_image_sizes ) ) {
        $image_sizes = array_merge( $image_sizes, $_wp_additional_image_sizes );
    }

    return $image_sizes;
}

ซึ่งผลลัพธ์จะคล้ายกับ:

Array
(
    [thumbnail] => Array
        (
            [width] => 150
            [height] => 150
            [crop] => 1
        )

    [medium] => Array
        (
            [width] => 300
            [height] => 300
            [crop] => 
        )

    [medium_large] => Array
        (
            [width] => 768
            [height] => 0
            [crop] => 
        )

    [large] => Array
        (
            [width] => 1024
            [height] => 1024
            [crop] => 
        )

)

3
+1 สำหรับคำตอบที่สมบูรณ์ยิ่งขึ้น คนอื่น ๆ ส่งคืนขนาดเพิ่มเติม แต่ไม่ใช่ขนาดเริ่มต้น
Cazuma Nii Cavalcanti

2
ดียิ่งขึ้นถ้าคุณใช้$default_image_sizes = get_intermediate_image_sizes();เนื่องจากมีmedium_largeขนาดตั้งแต่ WP 4.4
natebeaty

คำแนะนำที่ดี; ฉันได้อัปเดตคำตอบพร้อมคำแนะนำของคุณแล้ว
rjb

ACF ทำให้ฉันเสียใจด้วยสื่อต่างๆ
Adam Patterson

3

หากคำตอบอื่น ๆ ใช้การไม่ได้ให้ใช้รหัสนี้ดังนั้นมันจะทำงานหลังจาก WordPress เริ่มทำงานแล้ว

add_action('init', 'get_all_image_sizes');

function get_all_image_sizes(){
    global $_wp_additional_image_sizes; 
    print '<pre>'; 
    print_r( $_wp_additional_image_sizes ); 
    print '</pre>';
}

ฉันได้ทดสอบหลายวิธีและวิธีนี้ใช้งานได้ในที่สุด (WP + WooCommerce + ธีมที่กำหนดเอง)
Juraj.Lorinc
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.