Условные операторы PHP в файле WordPress function.php не работают - PullRequest
0 голосов
/ 19 декабря 2010

Я хочу сделать следующее выражение PHP внутри function.php: если есть загруженное изображение для фона #header h1 a, сделать отступ текста (удалить) ... Если нет (иначе), оставьте текст (не Сделайте отступ).

Я не очень знаком с PHP, но вот что я сделал:

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

(Я не уверен, что это полезная информация, но plugin_options инициализируется непосредственно перед тегами <style>.)

Я сделал var_dump и #options['logo'] дисплеи:

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

(значит, изображение работает)

Но сейчас я просто вижу название сайта Wordpress

Должен ли я "активировать" или "инициировать" функцию ** logo_exists ? или есть другая проблема? **

(все работает нормально, если я не использую операторы PHP If и объявляю $ options [logo] непосредственно из header.php)

Заранее спасибо!

1 Ответ

3 голосов
/ 19 декабря 2010

$options не существует в области действия этой функции. Вам нужно добавить

global $options;

сразу после объявления функции, так что она выбирает переменную $options из include. Как это:

function logo_exists() {
    global $options;

    ?><style type="text/css">
    ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...