Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

I'm just learning PHP, and I'm using get_terms to get some text descriptions from the CMS, but i want to assign 3 variables to only 3 of my woocommerce tags. My code works well, but I just want to learn if there's a better way to filter by $tag_descrip->name than using if conditions.

This is my code:

<?php
$tag_descrip = get_terms( 'product_tag', 'orderby=count&hide_empty=0' );
$count = count($tag_descrip);


if ( $count > 0 ){

 foreach ( $tag_descrip as $tag_descrip ) {

 if($tag_descrip->name == "parfum_bestof")
   {$title_new1 = $tag_descrip->description ;}

 if($tag_descrip->name == "tshirt_bestof")
   {$title_new2 = $tag_descrip->description ;}

 if($tag_descrip->name == "child_bestof")
   {$title_new3 = $tag_descrip->description ;}



 }



}

?> 

Thanks

share|improve this question
    
Generic PHP questions are off-topic here. You could try asking this on Stack Overflow. –  Brian Fegter Dec 3 '12 at 15:25
1  
It isn't necessarily off-topic... I think the OP is asking how to query 3, specific tags? But I can't really tell because I don't know the use case for the above code. –  helgatheviking Dec 3 '12 at 15:27

1 Answer 1

up vote 1 down vote accepted

Hi there is not better option, but to speed it up little you can use wordpress transient, see documentation: http://codex.wordpress.org/Transients_API

your code would look like this (and i cleaned it bit and used function empty to check array...):

<?php

if ( false === ( $tag_descrip = get_transient( 'tag_descrip' ) ) ) {

     $tag_descrip = get_terms( 'product_tag', 'orderby=count&hide_empty=0' );

     set_transient( 'tag_descrip ', $tag_descrip );
}


if ( !empty($tag_descrip) ){

 foreach ( $tag_descrip as $tag_descrip ) {

 if($tag_descrip->name == "parfum_bestof")
   $title_new1 = $tag_descrip->description;

 if($tag_descrip->name == "tshirt_bestof")
   $title_new2 = $tag_descrip->description;

 if($tag_descrip->name == "child_bestof")
   $title_new3 = $tag_descrip->description;

}


}

?> 
share|improve this answer
    
foreach ( $tag_descrip as $tag_descrip ) – there is some room for improvement in the variable names … ;) –  toscho Dec 3 '12 at 15:48
    
Thanks ! Seems like a good idea, I'm going to try it too but what's meaning of the operator "===" in PHP code, why we use "===" instead of "==" ? –  Rodrigo Sanz Dec 3 '12 at 19:21

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.