Hallo allemaal,

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.

Alvast bedankt en nog de beste wensen.

Zack
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'>";;
?>
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;
}
?>
Bedankt Willem.

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.

Nog een idee?
Hallo Zack,

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?
@Frank,

Waarom denk je dat jouw code wel werkt en de mijne niet?
De code van Frank is wat netter, maar ik denk niet dat die wel zal werken

<?
echo '<img src="http://www.site.nl/images/'; . $plaatje . '.jpg" />"';
?>

Volgens mij moeten die dubbele quotes aan het eind weg...
D B op 09/01/2014 19:52:42

De code van Frank is wat netter

Daarover verschillen we dan van mening... ;-)

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...

Reageren