web-dev-qa-db-fra.com

Passer la chaîne de requête à la page

J'ai écrit cette fonction dans mon functions.php

function header_resized_img ($path, $width, $height) {
    $image = wp_get_image_editor($path);
    if (!is_wp_error($image)) {
        $image->resize(9999, $height, false);
        $orig_size = $image->get_size();
        $image->crop($orig_size['width']/2-$width/2, $orig_size['height']/2-$height/2, $width, $height);
        $image->stream( $mime_type = 'image/jpeg');
    }
}

Pour que cela fonctionne, j'ai créé un fichier nommé page-image.php, puis une page avec permalink http://www.example.com/image/ . Dans page-image.php j'ai mis (juste un test)

header_resized_img (get_header_image(), 414, 700);

qui, en réalité, affiche l’image redimensionnée/recadrée lorsque je la visite. Maintenant, je veux le rendre plus flexible et transmettre les paramètres via une URL. J'ai essayé les chaînes de requête en utilisant $_GET, puis j'ai trouvé get_query_arg, mais aucun de ceux-ci ne semble faire l'affaire. Comment pourrais-je faire ça? Je vous remercie.

1
Daniele Squalo

Cela devrait réellement fonctionner pour vous:

function header_resized_img () {
    $image = wp_get_image_editor($_GET['path']);
    $height = $_GET['height'];
    $width =  $_GET['width'];
    if (!is_wp_error($image)) {
        $image->resize(9999, $height, false);
        $orig_size = $image->get_size();
        $image->crop($orig_size['width']/2-$width/2, $orig_size['height']/2-$height/2, $width, $height);
        $image->stream( $mime_type = 'image/jpeg');
    }
}

et incluez votre fonction quelque part dans le modèle:

header_resized_img();

Ensuite, essayez d'accéder à cette URL:

http://example.com/image/?width=500&height=400&path=some-url

Pour générer votre image.

1
Jack Johansson