2010-12-19 8 views
0

Ich möchte die folgende PHP-Anweisung innerhalb function.php: Wenn es ein hochgeladenes Bild für #header h1 a 's Hintergrund, den Text einrücken (entfernen) ... Wenn nicht (sonst) , behalte den Text (nicht einrücken).PHP bedingte Anweisungen in Wordpress Funktion.php Datei funktioniert nicht

Ich bin nicht sehr vertraut mit PHP, aber das ist, was ich tat:

<?php 

// Include functions of Theme Options 
require_once(TEMPLATEPATH . '/functions/admin-menu.php'); 

// If there's an image for the site title, remove it's text 
function logo_exists() { 
    ?><style type="text/css"> 
     #header h1 a { 
     <?php 
     if ($options['logo'] == NULL) { ?> 
      float: left; 
      text-indent: 0; 
     <?php } else { ?> 
      background: url(<?php echo $options['logo']; ?>) no-repeat scroll 0 0; 
      float: left; 
      text-indent: -9999px; 
      width: 160px; 
      height: 80px; 
     } 
     <?php } ?> 
    </style><?php 
} 

header.php:

// Initiate Theme Options 
    $options = get_option('plugin_options'); 
var_dump($options['logo']) 
    ?> 

    <style> 
     body { 
      background-color: <?php echo $options['color_scheme']; ?> 
     } 
    </style> 
</head> 

<body <?php body_class(); ?>> 
<div id="wrapper"> 
    <div id="header"> 
     <h1> 
      <a href="<?php echo home_url('/'); ?>" title="<?php echo esc_attr(get_bloginfo('name', 'display')); ?>" rel="home"><?php bloginfo('name'); ?></a> 
     </h1> 

(Ich bin nicht sicher, ob es nützliche Hinweise aber plugin_options wird kurz vor den <style> Tags initialisiert.)

Ich tat var_dump und #options['logo'] dis spielt:

string(63) "http://localhost/wordpress/wp-content/uploads/2010/12/logo3.png" 

(So ist das Bild arbeitet)

Aber ich sehe jetzt nur die Wordpress-Website Titel

I "aktivieren" oder "initiieren" die Funktion Müssen ** logo_exists? oder gibt es ein anderes Problem? **

(Alles funktioniert ok, wenn ich direkt $ options [logo] von header.php nicht den PHP Wenn Anweisungen verwenden und zu erklären)

Vielen Dank im Voraus!

+0

empfehle ich Ihren Code neu zu formatieren mit [IF..ENDIF] (http://php.net/manual/en/control-structures.alternative-syntax.php) Syntax besser lesbar werden (in gemischten PHP/HTML-Codes). –

+0

BlotClock hat immer noch einen Punkt, die Variable $ options hat keinen Gültigkeitsbereich innerhalb der Funktion. Wenn Sie auf diese Variable in dieser Funktion verweisen möchten, müssen Sie sie in der Funktion globalisieren. Das Problem, denke ich, ist, dass Ihre Funktion an eine geeignete Aktion angehängt werden muss, zum Beispiel 'add_action ('wp_print_styles', 'logo_exists')', um den Inhalt an einer geeigneten Position in der Kopfzeile für das Styling auszugeben. – t31os

Antwort

3

$options existiert nicht im Rahmen dieser Funktion. Sie müssen

global $options; 

kurz nach der Funktionsdeklaration hinzufügen, so dass es die $options Variable nimmt von der aufzunehmen. Wie folgt aus:

function logo_exists() { 
    global $options; 

    ?><style type="text/css"> 
    ... 
+0

Sorry, ich habe das versucht, aber immer noch nicht funktioniert (immer noch den Text von # header h1 a. ​​Ich bin mir nicht sicher, ob es nützliche Informationen ist aber plugin_options wird kurz vor den