无法使用Get_Favicon()显示收藏图标?

时间:2011-11-14 作者:Adam

我使用fetch\\u feed(基于Simplepie)来显示一系列RSS feed(仅限于favicon和headlines)。有关simplepie website 表示在样式表中使用get\\u favicon。我用的是fetch_feed codex 实例我得到了favicon应该在哪里的间距,但不是favicon。馈送链接看起来很好。

CSS:

.rss a {
padding:0 0 0 20px;
background:transparent url(<?php echo esc_url ( $item->get_favicon() ); ?>) no-repeat 0 1px;
}
PHP:

<h2><?php _e(\'Recent news from Some-Other Blog:\'); ?></h2>

    <?php // Get RSS Feed(s)

        // include_once(ABSPATH . WPINC . \'/feed.php\');

        // Get a SimplePie feed object from the specified feed source.

        $rss = fetch_feed(array(\'http://wordpress.org/news/feed/\',\'http://beernews.org/feed/\'));

            if (!is_wp_error( $rss ) ) : // Checks that the object is created correctly 

                  // Figure out how many total items there are, but limit it to 5. 

                  $maxitems = $rss->get_item_quantity(20); 

                    // Build an array of all the items, starting with element 0 (first element).

                    $rss_items = $rss->get_items(0, $maxitems); 

            endif;

    ?>

<ul style="list-style-type: none;">

    <?php if ($maxitems == 0) echo \'<li>No items.</li>\';

    else

        // Loop through each feed item and display each item as a hyperlink.

        foreach ( $rss_items as $item ) : ?>

            <li>   

                <a class=\'rss\' href=\'<?php echo esc_url( $item->get_permalink() ); ?>\' title=\'<?php echo \'Posted \'.$item->get_date(\'j F Y | g:i a\'); ?>\'>

                                      <?php echo esc_html( $item->get_title() ); ?>

                                </a>

                <?php echo \'<hr/>\'; ?>

            </li>

        <?php endforeach; ?>

</ul>

3 个回复
SO网友:Tom J Nowell

您不能(也不应该)在css文件中使用php,css应该是静态的、不变的。如果需要生成动态css,可以将其内联到标题中,或者让主题通过wordpress添加url,从中动态生成css样式表。

add_action(\'wp_head\',createfunction("","echo \'<style>.rss a { background-image: url(".esc_url ( $item->get_favicon() )."); }</style>\';"));
如果您使CSS PHP可执行,那么浏览器可能(也可能会)缓存样式表,从而在使用多个提要时使某些页面上的图标不正确。这也是一个安全问题。

SO网友:markratledge

您必须告诉apache为php解析css文件。一种方法是编辑。htaccess并添加下面的指令,以使php解析css文件。

AddType application/x-httpd-php .css
请参见http://net.tutsplus.com/tutorials/php/supercharge-your-css-with-php-under-the-hood/

SO网友:Doug

你有几个不同的问题。一个是你的CSS选择器(.rss a) 不引用HTML中的任何内容。你想要的a.rss 相反

其次,如前所述,CSS文件不是由PHP解析的(无论如何,默认情况下),因此您需要在某个地方使用PHP解析favicon引用。

此外,由于每个提要都有不同的favicon,因此您需要在foreach 环尝试类似的方法(为了清晰起见,添加了不必要的换行符):

foreach ( $rss_items as $item ) : ?>
    <li>   
        <a class=\'rss\' 
            style=\'background-image:<?php echo $item->get_favicon(); ?>\'
            href=\'<?php echo esc_url( $item->get_permalink() ); ?>\' 
            title=\'<?php echo \'Posted \'.$item->get_date(\'j F Y | g:i a\'); ?>\'
        >
            <?php echo esc_html( $item->get_title() ); ?>
        </a>
    </li>
<?php endforeach; ?>
这是您的CSS:

a.rss {
    padding:0 0 0 20px;
    background:transparent url(\'some-placeholder-image-in-case-no-favicon-exists.png\') no-repeat 0 1px;
}
而且--这只是编辑,与你的问题无关--不要添加<hr><li>; 使用CSS添加底部边框。

结束

相关推荐

即使使用ADD_THEME_SUPPORT也无法使用提要链接(‘Automatic-Feed-Links’)

即使我将此代码添加到函数中,我的提要链接也无法工作。php: add_theme_support(\'automatic-feed-links\'); 当我尝试去我的网站。com/feed或mysite。com/?feed=rss或中指定的任何链接Codex, 我的内容没有得到反馈。在Safari中,我得到以下信息:Safari无法更新此源,因为源文件不再可用。在Chrome中,我可以看到: <channel> <title>My Site