为什么当我将_PAGE放到unctions.php文件中时,它不工作?

时间:2011-06-29 作者:Wordpressor

我有一个名为“Apple”的页面,该页面的ID为2533。

在第页中。php文件我有一行:

echo $bannerimg 
函数中的这个函数。php:

if ( is_page( \'2533\' ) ) {    
    // also tested with \'Apple\'
    $bannerimg = \'apple.jpg\';

} elseif ( is_page( \'test\' ) ) {    
    $bannerimg = \'test.jpg\';

} elseif ( is_page( \'admissions\' ) ) { 
    $bannerimg = \'admissions.jpg\';

} else { 
    $bannerimg = \'home.jpg\';
}  
关键是,包括苹果、考试和招生在内的每一页上都有$bannerimg呼应“home.jpg”。

我甚至使用\\u ID&;检查了所有ID$页面->ID。无任何内容。所以我猜上面的代码有问题?

8 个回复
最合适的回答,由SO网友:Rarst 整理而成

functions.php 在您可以知道正在加载哪个页面之前进行处理。将代码放入函数中并在中使用该函数,而不是为变量赋值page.php 样板

SO网友:Bryan Willis

get_header should 如果你想把它留在里面,那就工作吧functions.php

add_action(\'get_header\', function() {
    if ( is_page( \'2533\' ) ) {    
    // also tested with \'Apple\'
        $bannerimg = \'apple.jpg\';

    } elseif ( is_page( \'test\' ) ) {    
        $bannerimg = \'test.jpg\';

    } elseif ( is_page( \'admissions\' ) ) { 
        $bannerimg = \'admissions.jpg\';

    } else { 
        $bannerimg = \'home.jpg\';
    }  
});

SO网友:Bainternet

扩展@Rarst发布的内容和您的评论,一个更优雅的解决方案是在页面内创建您自己的过滤器。php并从函数内部的函数钩住它。php,例如:

在您的页面中。php

$bannerimg = apply_filters(\'my_bannerimg\',\'defualt_img.jpg\');
在你的功能中。php

add_filter(\'my_bannerimg\',\'what_page_is_it\');

function what_page_is_it($img){
    if ( is_page( \'2533\' ) ) {    
        return \'apple.jpg\';
    } elseif ( is_page( \'test\' ) ) {    
        return \'test.jpg\';
    } elseif ( is_page( \'admissions\' ) ) { 
        return \'admissions.jpg\';
    } else { 
        return \'home.jpg\';
    }  
}

SO网友:Vasyl Gutnyk

将此添加到您的函数中。php,更改脚本名称someCode和页面名称:

   add_action(\'wp_enqueue_scripts\', \'wpt_theme_js\');

    function wpt_theme_js() { 
        if ( is_page(\'somePage\') ) {
            wp_enqueue_script(\'someCode_js\', get_template_directory_uri() . \'/js/someCode.js\', \'\', \'\', true);
        }
    }

SO网友:Alex Older

您正确申报了吗wp_head(); 你的主题是什么?

而且is_page 接受不带引号的ID。

问题还可能是您已经在页面模板上,因此它是一个页面,您最好查询$post->ID 或设置page-apple.php

SO网友:Chip Bennett

设置查询后,需要在WordPress过程中的某个点调用函数。

在里面functions.php:

function mytheme_get_banner_img() {
    if ( is_page( \'2533\' ) ) {    
        // also tested with \'Apple\'
        $bannerimg = \'apple.jpg\';

    } elseif ( is_page( \'test\' ) ) {    
        $bannerimg = \'test.jpg\';

    } elseif ( is_page( \'admissions\' ) ) { 
        $bannerimg = \'admissions.jpg\';

    } else { 
        $bannerimg = \'home.jpg\';
    }  
    return $bannerimg;
}
然后,在你的page.php 模板文件,无论何时需要返回/输出$bannerimg:

<?php
$bannerimg = mytheme_get_banner_img();
?>
然后,你可以做任何你需要的事情$bannerimg: 将其放入<img> 标签等。

SO网友:Viktor Borítás

在函数中。phpis_page() 使用add_action(\'wp\', \'your_function_name\'); 工作正常。

SO网友:Anisur Rahman

if( is_page(\'Vehicle\') ) {
    // code here
}
<这肯定会在第页上起作用。php文件请移到那里并检查

[NB]: // 将页面id | slug |数组替换为Vehicle

结束

相关推荐

WordPress循环问题:多个循环,index.php和is_pages导致下一页出现重复帖子

我不确定我所经历的是一个bug(由于最近升级到3.1.2)还是糟糕的编码。自从我升级到3.1.2版以来,我的索引页上出现了两个循环的问题。以下是我索引页的内容:<?php if ( ! is_paged() && is_front_page() ) { echo \'<h6 class=\"sec1 title\">FEATURE</h6>\'; $sticky = get_option( \'stic