Generiert automatisch mehrere Bildgrößen für Element

Angenommen, ich möchte einen Responsive Header mit Compliance für mehrere Geräte implementieren. Um dies zu tun (mit einem schönen Ergebnis von c), brauche ich verschiedene Versionen des Bildes, verkleinert und beschnitten an ihren Seiten, dann legen Sie alle in einem … Block. Ich könnte einfach mehrere Versionen hochladen, aber das wäre nicht benutzerfreundlich, da ich gezwungen bin, die Bilder einzeln zu erstellen.

Ich dachte so etwas wie hinzufügen

add_image_size("grand_neo", 320, 450, true); 

zu functions.php, dann in meiner header.php bekomme es mit

 wp_get_attachment_image($id, 'grand-neo'); 

Wobei $ id das Headerbild ist. Aber wie bekomme ich es? Danke, dass jemand bereit ist zu helfen.

Solutions Collecting From Web of "Generiert automatisch mehrere Bildgrößen für Element"

Ich habe eine ähnliche Notwendigkeit in einigen meiner Projekte und getriggers, indem ich die Bild-ID von seiner URL bekommen und dann das Markup mit wp_get_attachment_image da es ein Markup mit srcset -Attribut zurückgibt.

Um die Bild-ID zu erhalten, benutze ich Gustavo Bordonis Helfer wie folgt und hier gezeigt.

 function attachment_url_to_postid( $url ) { global $wpdb; $dir = wp_upload_dir(); $path = $url; if ( 0 === strpos( $path, $dir['baseurl'] . '/' ) ) { $path = substr( $path, strlen( $dir['baseurl'] . '/' ) ); } $sql = $wpdb->prepare( "SELECT post_id FROM $wpdb->postmeta WHERE meta_key = '_wp_attached_file' AND meta_value = %s", $path ); $post_id = $wpdb->get_var( $sql ); if ( ! empty( $post_id ) ) { return (int) $post_id; } } 

function attachment_url_to_postid ($ url) {global $ wpdb;

 $dir = wp_upload_dir(); $path = $url; if ( 0 === strpos( $path, $dir['baseurl'] . '/' ) ) { $path = substr( $path, strlen( $dir['baseurl'] . '/' ) ); } $sql = $wpdb->prepare( "SELECT post_id FROM $wpdb->postmeta WHERE meta_key = '_wp_attached_file' AND meta_value = %s", $path ); $post_id = $wpdb->get_var( $sql ); if ( ! empty( $post_id ) ) { return (int) $post_id; } 

}

und es ist Wrapper:

 function get_attachment_id_by_url( $url ) { $post_id = attachment_url_to_postid( $url ); if ( ! $post_id ){ $dir = wp_upload_dir(); $path = $url; if ( 0 === strpos( $path, $dir['baseurl'] . '/' ) ) { $path = substr( $path, strlen( $dir['baseurl'] . '/' ) ); } if ( preg_match( '/^(.*)(\-\d*x\d*)(\.\w{1,})/i', $path, $matches ) ){ $url = $dir['baseurl'] . '/' . $matches[1] . $matches[3]; $post_id = attachment_url_to_postid( $url ); } } return (int) $post_id; } 

und dann das Markup:

wp_get_attachment_image( $image_id, $args['desired_image_size_as_registered'] );

Ich hoffe es hilft.