Область применения: использование переменной, определенной в функции - PullRequest
1 голос
/ 07 декабря 2010

У меня есть функция в файле functions.php, которая определяет определенные переменные:

add_action( 'the_post', 'paginate_slide' );

function paginate_slide( $post ) {

    global $pages, $multipage, $numpages;

    if( is_single() && get_post_type() == 'post' ) {

    $multipage = 1;
    $id = get_the_ID();
    $custom = array();
    $pages = array();
    $i = 1;

    foreach( get_post_custom_keys() as $key )
        if ( false !== strpos( $key, 'slide' ) )
            $custom[$key] = get_post_meta( $id, $key, true);

    while( isset( $custom["slide{$i}-title"] ) ) {

        $page = '';
        $tzTitle = $custom["slide{$i}-title"];
        $tzImage = $custom["slide{$i}-image"];
        $tzDesc = $custom["slide{$i}-desc"];
        $tzEmbed = $custom["slide{$i}-embed"];

        $page = "<h2>{$tzTitle}</h2><img src='{$tzImage}' />";
        $pages[] = $page;
        $i++;
    }

    $numpages = count( $pages );
    }
}

Я хотел бы вывести некоторые из этих переменных в файл template.php примерно так: <?php echo $tzDesc; ?>, но я не могу заставить его работать. Из того, что я понимаю о области видимости переменных , чтобы вызвать эти переменные в другом месте, мне нужно определить их в глобальной области видимости и назвать их глобальными в этой функции, как я это сделал $pages, $multipage, $numpages;. Это должно позволить мне подключать эти переменные там, где они мне нужны. Проблема в том, что когда я вынимаю их из функции и определяю их выше в глобальной области видимости, вся функция перестает работать.

Как мне нужно структурировать это так, чтобы я мог позвонить <?php echo $tzDesc; ?> в любое место на сайте и получить эхо определенной информации?

Я не знаю, имеет ли это значение, но это на сайте WordPress.

1 Ответ

2 голосов
/ 07 декабря 2010

Если вы все равно хотите использовать <?php echo $tzDesc; ?>, вам нужно определить $tzDesc как глобальную переменную.Однако я не рекомендую делать это, поскольку глобальные переменные считаются плохой практикой программирования.

Лучшим решением будет иметь paginate_slide() add $tzDesc (и другие значения)к $post объекту.Таким образом, у вас есть доступ к этим переменным в любое время, когда вы вызываете the_post().Если вы идете по этому пути, не забудьте указать пространство имен переменных:

$post->ns_tzDesc = $tzDesc;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...