web-dev-qa-db-fra.com

Utilisation d'instructions if/else avec une sortie d'options de thème

Dans une autre question je parlais d'utiliser des options de thème pour modifier CSS. C'est une question distincte mais liée.

Lorsqu'un utilisateur définit une couleur de lien dans mon thème, voici comment j'inclue son choix:

<?php $options = get_option('mytheme_theme_options'); _e( 'a, a:link {color: #' ); echo $options['linkcolour']; _e( ';}' ); ?>

Donc, si un utilisateur spécifie une couleur de lien de # 333333 dans la page d'options de thème, alors mon code ci-dessus génère un joli fichier CSS:

a, a:link {color: #333333;}

Génial.

Cependant, s'ils ne spécifient pas de couleur de lien, j'obtiens ceci:

a, a:link {color: #;}

... qui est à la fois moche et redondant - ça ne fait rien.

Je ne suis pas un PHP personne, donc je ne connais pas vraiment le meilleur moyen de résoudre ce problème, mais j'imagine que cela pourrait être corrigé avec une instruction if-else quelconque, où le code uniquement obtient la sortie lorsque l'utilisateur définit une valeur. Est-ce correct? Si oui, quel code devrais-je utiliser?

Merci.

1
snthr

Il n'est pas nécessaire d'utiliser _e() pour le texte à traduire, vous ne traduisez pas le code CSS, il n'est disponible que dans une langue ...

En ce qui concerne votre si/sinon, essayez ceci ..

<?php 
$options = get_option('mytheme_theme_options');
if( isset( $options['linkcolour'] ) && ( !empty( $options['linkcolour'] ) ) )   
    printf( "a, a:link {color: #%s;}", $options['linkcolour'] );
?>

Voici quelques PHP références pour vous aider à comprendre le PHP utilisé ci-dessus.

http://www.php.net/manual/en/control-structures.if.php
http://php.net/manual/en/function.isset.php
http://www.php.net/manual/fr/function.empty.php
http://php.net/manual/en/function.printf.php

J'espère que cela pourra aider.

1
t31os