Ik ben een beginner met PHP en probeer meestal net zolang tot het lukt. Nu loop ik echter tegen een probleem aan waar ik niet uit kom, wat ik ook probeer. In dit geval gaat het om een PHP probleem in een WordPress omgeving.
Ik heb een aantal variabelen (warm, koud, regen, droog, sneeuw) en wil dat als deze gelden, er een plaatje getoond wordt.
Ik heb deze code wat als output heeft warm.jpg droog.jpg etc.
function temperatuur() {
global $post;
$situatie = get_the_term_list( $post->ID, 'product_cat', '', '.jpg ', '.jpg' );
echo $situatie;
}
Echter, in plaats van echo $situatie wil ik iets als echo '<img src="http://www.site.nl/images/ .$situatie"> waardoor het plaatje getoond wordt. Of meerdere, omdat het warm en droog kan zijn.
Wat dus niet lukt.
Ik krijg het niet voorelkaar om uberhaupt een plaatje te tonen en de url ingeven lukt me ook niet. Daarnaast weet ik ook niet of dit de manier is om
.jpg
aan de categorie toe te voegen.....
Kan iemand me op weg helpen? Het lukt me dus om output te genereren, maar niet om hier een image van te maken.
echo '<img src="http://www.site.nl/images/ .$situatie">' zal niet werken, omdat de te echo'en string tussen enkele quotes staat. Variabelen worden dan niet geƫxpandeerd. Als je dubbele quotes gebruikt, werkt het wel:
<?php
echo "<img src='http://www.site.nl/images/$situatie'>";
?>
Jeetje het is niet de eerste keer dat ik in de mist ga met ' of ". Heb het aangepast, maar mis in het geheel nu nog een oplossing om het per variable te krijgen.
Ik weet niet precies wat get_the_term_list() doet, maar op basis van de functienaam vermoed ik dat hij een lijst geeft van alle plaatjes. Als ik ervan uit mag gaan dat alle plaatjes getoond moeten worden en de plaatjes gescheiden worden door een spatie, zou je zoiets kunnen doen:
<?php
function temperatuur() {
global $post;
$situatie = get_the_term_list( $post->ID, 'product_cat', '', '.jpg ', '.jpg' );
foreach (explode(' ',$situatie) as $plaatje) {
echo "<img src='http://www.site.nl/images/$plaatje'>";
}
echo $situatie;
}
?>
In dit geval geeft get_the_term_list() een aantal specifieke eigenschappen terug. In mijn geval droog, warm etc.
Op een of andere manier werkt bovenstaande code wel om alle eigenschappen te tonen, en hier .jpg achter te zetten maar helaas nog steeds als tekst en niet als image.
kleine aanpassing op de code van Willem:
<?php
function temperatuur() {
global $post;
$situatie = get_the_term_list( $post->ID, 'product_cat', '', '.jpg ', '.jpg' );
foreach (explode(' ',$situatie) as $plaatje) {
echo '<img src="http://www.site.nl/images/'; . $plaatje . '.jpg" />"';
}
echo $situatie;
}
?>
Als het nu nog niet lukt kun je dan misschien even de bron van de pagina bekijken zodat je de HTML ziet en dan even het stukje met de <img .... /> tonen?
Door al dat gegoochel met quotes en concatenaties is het veel lastiger om te zien of je quotes matchen. Frank bewijst dat al meteen met dat ene regeltje dat hij tikt...
Voor de goede lezer staat er een ander verschil in dan alleen die ene extra dubbele quote. Frank plakt er nog een extentie aan, terwijl Willem dat niet doet. De vraag is: wat is goed. Als ik de posts van de TS goed lees hoeft die extra extentie er niet bij, maar helemaal zeker kan ik het ook niet zeggen.
Volgens de originele post zou de get-functie "warm.jpg droog.jpg" teruggeven. Met dat als aanname is het dus niet nodig (en zelfs fout) er een extensie aan te plakken. Tenzij het plaatje op de server "warm.jpg.jpg" heet...