包含文件的WP环境问题

时间:2012-02-04 作者:Sagive

我有一个文件,我包括整个网站的索引。php,单个。php等。

此文件的行为非常严格,其行为就像它不是wordpress环境的一部分,意思是:

我在get\\u bloginfo(\'template\\u url\')上出错,它无法从我的选项页中获取值。

知道会发生什么吗?

Here is the include code i have in my index.php (somewhere mid page):

<?php include(get_bloginfo(\'template_url\') .\'/extras/floater.php\'); ?>
(包括文件,所以问题不在那里)

Here is the actuall "floater.php" code... :

<?php
    function establishParms() {
    // get yes/no values and urls..
    $facebook = get_option(\'sg_show_facebookfloater\');
    $twitter = get_option(\'sg_show_twitterfloater\');
    $mail = get_option(\'sg_show_mailfloater\');

        // facabook
        if($facebook == "Yes") {
            $facebook = \'<li><a href="\'. get_option(\'sg_url_facebookfloater\') .\'"><img src="\'. get_bloginfo(\'template_url\') .\'/images/facebook.png" alt="\'.__(\'Visit us on Facebook\', \'sagive\').\'" /></a></li>\';
        } 

        // twitter
        if($twitter == "Yes") {
            $twitter = \'<li><a href="\'. get_option(\'sg_url_twitterfloater\') .\'"><img src="\'. get_bloginfo(\'template_url\') .\'/images/twitter.png" alt="\'.__(\'Visit us on Twitter\', \'sagive\').\'" /></a></li>\';
        } 

        // mail
        if($mail == "Yes") {
            $mail = \'<li><a href="\'. get_option(\'sg_url_mailfloater\') .\'"><img src="\'. get_bloginfo(\'template_url\') .\'/images/mail.png" alt="\'.__(\'Contact us\', \'sagive\').\'" /></a></li>\';
        } 
    }
?>

<div class="floatingBar" >
    <ul class="gotop">
        <?php echo $facebook; ?>
        <?php echo $twitter; ?>
        <li><a href="#top"><?php echo \'<img src="\'. get_bloginfo(\'template_url\') .\'/images/mail.png" alt="" />\'; ?></a></li>                                    
        <li><a href="#top"><?php echo \'<img src="\'. get_bloginfo(\'template_url\') .\'/images/up.png" alt="" />\'; ?></a></li>
    </ul>
</div>  
<没有什么特别的,也没有。。我想不出答案。

而且这个网站还有一个奇怪的问题(它在localhost上运行得很好)
我有一个函数,它在函数中做了一件简单的事情。php文件:

function setPaths() {
    $templateUrl = get_bloginfo(\'template_url\');
    $imagesUrl = get_bloginfo(\'template_url\')."/images/";
}
但当尝试在索引中使用$templateUrl时。php文件它什么都没给我。。

非常感谢您的帮助:)
干杯,萨吉夫

REVISION:

下面是我遇到的一个错误示例:

Fatal error: Call to undefined function get_bloginfo() in /home/workspac/public_html/sagive/wp-content/themes/sagive-spaceJunkie/extras/floater.php on line 29

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

该错误表明正在WordPress生成的页面之外调用文件“floater.php”。将其添加到文件顶部,以便能够使用WordPress功能。

编辑:请参阅Brian Fegter关于为include使用服务器路径的响应。

if ( !function_exists( \'get_bloginfo\' ) )
    require( \'../../../wp-blog-header.php\' ); // check path leads to root of your WordPress install
关于setPaths函数,可以将其设置为全局变量,也可以使用常量。根据您使用这些函数的目的,您可以直接在函数中定义这些函数。php文件,而不是调用其他函数。

function setPaths() {
    // option one
    global $templateUrl, $imagesUrl;
    $templateUrl = get_bloginfo( \'template_url\' );
    $imagesUrl = $templateUrl . "/images/"; // no need to call get_bloginfo again

    // option two preferred assuming these values are not changing.
    define( \'TEMPLATE_URL\', get_bloginfo( \'template_url\' ) );
    define( \'IMAGES_URL\', TEMPLATE_URL . \'/images/\' );
}
/*
setPaths();
global $templateUrl, $imagesUrl;
echo $templateUrl;
echo $imagesUrl;
echo TEMPLATE_URL;
echo IMAGES_URL;
*/

SO网友:Brian Fegter

您应该包括使用服务器路径,而不是URL。这将允许您访问WordPress功能。

include(\'extras/floater.php\');
Update:下面将进一步解释为什么通过URL包含文件是一种不好的做法。发生的情况如下:

当您通过服务器路径包含文件时,会有一种固有的继承。它可以访问在include之前加载的函数、类和变量如果相对服务器路径不起作用,可以使用本机WordPress常量来确定浮动程序的路径。php。

include(WP_CONTENT_DIR.\'/themes/yourtheme-name/extras/floater.php\');

结束