PHP getimagesize не работает, когда вызывается из функции в function.php (Wordpress)? - PullRequest
0 голосов
/ 23 декабря 2010

PHP getimagesize не работает, когда вызывается из функции в function.php.

function.php:

<?php

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

    add_action('wp_head', 'theme_options', 'get_image_size');

    function theme_options() {
        // Initiate Theme Options
        $options = get_option('plugin_options');

        // If a logo image was uploaded then remove text from site title
        if ($options['logo'] != NULL)
            $remove_text = '-9999px';

        else
            $remove_text = 0;

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

        #header h1 a {
            background: url(<?php echo $options['logo']; ?>) no-repeat scroll 0 0;
            text-indent: <?php echo $remove_text; ?>;
        }
        </style><?php
    }

    function get_image_size() {

        list($width, $height, $type, $attr) = getimagesize($options['logo']);

        echo "Image width " .$width;
        echo "<BR>";
        echo "Image height " .$height;
        echo "<BR>";

        var_dump($width);
        var_dump($heigt);
    }

$options['logo'] возвращается http://localhost/wordpress/wp-content/uploads/2010/12/logo4.png, поэтому изображение отображается.

Я также сделал var_dump до $width и $height, но они не появились.

Есть предложения?

РЕДАКТИРОВАТЬ: Я вставил полный код functions.php.$options['logo'] отлично работает в функции theme_option, поэтому я не знаю, почему она не работает в функции get_image_size.

Ответы [ 3 ]

1 голос
/ 23 декабря 2010

$options['logo'] не определено в вашем коде.Если он определен вне вашей функции, он по умолчанию недоступен внутри вашей функции.

Пожалуйста, включите создание отчетов об ошибках, используя ini_set('display_errors', 1) и error_reporting(E_ALL), при разработке.Это обеспечит сообщение об ошибках.

0 голосов
/ 23 декабря 2010

Я узнал, как это исправить (разделив функции на различные add_action операторы):

add_action('wp_head', 'theme_options');

function theme_options { 
    ...
}

add_action('wp_head', 'get_image_size');

function get_image_size { 
    ...
}

add_action допускает только одну функцию?

В чем была проблема?

0 голосов
/ 23 декабря 2010

Если вы не видите никаких сообщений об ошибках, включите error_reporting и display_errors .

$ options ['logo'] отлично работает вФункция theme_option, поэтому я не знаю, почему она не работает в функции get_image_size.

Как сказал @Sjoerd: $options не определено в функции get_image_size.Это определено только в функции theme_options.В этом суть функций, они являются черным ящиком, который знает об окружающей среде только по аргументам, которые они получают.Если вы хотите сделать опции видимыми в функции get_image_size, вам необходимо Инициировать опции темы и в этой функции.

...