Обертывание кода в функции не позволяет ему работать - PullRequest
0 голосов
/ 14 февраля 2012

Я хочу обернуть мой код в функцию (а затем поместить его в functions.php), чтобы я мог вызывать его в другом месте, но мой код завершился ошибкой, как только я обернул его в функцию.

Iдумаю, что это может быть проблемой, нужно ли каким-то образом передавать номер сообщения функции?Если я избавлюсь от функции, обернутой вокруг запроса, код будет работать нормально.

Я предполагаю, что код на самом деле не имеет значения (хотя я могу ошибаться) - это больше связано с тем, чтоэто цикл и функция.

        <?php function getGallery2() { ?>
            <!-- 1. search for any pages with a custom field of 'test' that have a value of 'yes' -->
            <?php query_posts('meta_key=Gallery - Promotion Gallery Photo Link&post_type=page'); ?>

            <?php while ( have_posts() ) : the_post(); ?>
                <!-- 2. echo the test field -->
                <?php $link =  get_post_meta($post->ID, 'Gallery - Promotion Gallery Photo Link', true); ?>
                <?php $alt =  get_post_meta($post->ID, 'Gallery - Promotion Gallery Photo Alt text', true); ?>
                <img src="<?php echo $link ?>" alt="<?php echo $alt ?>" />
            <?php endwhile;?>

            <?php wp_reset_query(); ?>

        <?php } ?>

        <?php getGallery2(); ?>

Ответы [ 2 ]

1 голос
/ 15 февраля 2012

Я бы подумал (не проверял), что-то вроде этого:

<?php function getGallery2() { ?>
    $global post;       
    $link =  get_post_meta($post->ID, 'Gallery - Promotion Gallery Photo Link', true); ?>
    $alt =  get_post_meta($post->ID, 'Gallery - Promotion Gallery Photo Alt text', true); ?>
            <img src="<?php echo $link ?>" alt="<?php echo $alt ?>" />
<?php } ?>

Затем вызовите функцию в любом цикле на любой странице PHP. Есть смысл? т.е. не зацикливайтесь внутри функции. Я не понимаю, почему вы не используете php include? т.е.

require('get-gallery.php');

Надеюсь, это поможет: D

0 голосов
/ 14 февраля 2012

$ сообщение не входит в область функций.

Вы можете добавить global $post; в начало функции или включить его в качестве параметра следующим образом:

function getGallery2($post){
    // code
}

echo getGallery2($post)

Код внутри функции может видеть только переменные, созданные в той же функции или в глобальной области видимости. Значение объекта $post не определено.

// Немного не по теме, у вас есть много HTML-комментариев в PHP. Вы можете легко привести в порядок вещи, сделав все это PHP.

EDIT:

function getGallery2(){

    global $post;

    // 1. search for any pages with a custom field of 'test' that have a value of 'yes' -->
    query_posts('meta_key=Gallery - Promotion Gallery Photo Link&post_type=page'); 

    while ( have_posts() ) : the_post(); 
        // 2. echo the test field -->
        $link =  get_post_meta($post->ID, 'Gallery - Promotion Gallery Photo Link', true); 
        $alt =  get_post_meta($post->ID, 'Gallery - Promotion Gallery Photo Alt text', true); 
        echo '<img src="'.$link.'" alt="echo $alt " />';
    endwhile;

    wp_reset_query(); 

} 

getGallery2();
...