Hoi,

Ik ben bezig met een webshop, dit doe ik met Wordpress en WooCommerce.
Bij onze korte beschrijving (post_excerpt) willen we een list hebben.
Al onze producten (ca 3500) staan in een csv bestand waarbij de list items ook vermeld staan.
In de csv staan de items gescheiden met een komma, het idee is om die string te pakken en bij elke komma een nieuwe li te maken.

Ik dacht dat een foreach loop daar goed bij zou passen maar helaas werkt de code die ik heb niet. Deze heb ik na wat zoekwerk gevonden. Hieronder de code zoals die nu is.

Is er iemand die weet wat ik fout doe of die een betere oplossing heeft voor onze wens?


<?php
if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

global $post;

$short_description = apply_filters( 'woocommerce_short_description', $post->post_excerpt );

if ( ! $short_description ) {
	return;
}

?>

<?php $words = str_getcsv(',', $short_description); ?>

<div class="woocommerce-product-details__short-description">
	
	<?php 
    
        if(!empty($words)){
            echo '<ul>';
            foreach($words as $word){
                echo '<li>'.htmlspecialcharacters($word).'</li>';
            }
            echo '</ul>';
        }
    
    ?>
</div>
Je roept volgens mij nergens je csv-bestand aan?
We hebben nu via een import plugin de waarde van de csv geplaatst in de short description.
Ik dacht dat die nu de short description leest, maar dat is dan mogelijk ook niet zo.
Na deze regel:

$words = str_getcsv(',', $short_description);

plaats eens

var_dump($words);

Zie je dan de inhoud van die csv?
Dan krijg ik dit te zien: array(1) { [0]=> string(1) "," }
En als je dit doet:

var_dump($short_description);
Als ik dat doe dan krijg ik de inhoud van de csv te zien.

string(61) "
elektrische gitaarversterker, 10W, 6,5? speaker

"
ipv $words = str_getcsv(',', $short_description);

dit

$words = explode(',', $short_description);
array(4) { [0]=> string(31) "
elektrische gitaarversterker" [1]=> string(4) " 10W" [2]=> string(2) " 6" [3]=> string(21) "5? speaker

" }

Dit is wat er dan uit komt, wel met de var_dump. Zonder dat laat die nog niets zien.
Waarschijnlijk omdat de functie 'htmlspecialcharacters' niet bestaat. Probeers eens 'htmlspecialchars'.
Ik krijg het nu bijna zoals ik het wil! Heel tof, alleen zie ik dat er een <p> tag in de tekst wordt geplaatst.

-<p>gitaar ukelele met gitaarmechanieken
-blauw</p>

Dit is wat ik nu zie.

Reageren