当前位置: 首页>>网站问题>>正文


如何在样式表中使用WordPress功能?

webfans 网站问题 , , , , 去评论

问题描述

我的style.php文件看起来像这样。

<?php  header('Content-Type: text/css');?>
#div{
    background:<?php  echo get_option('bgcolor');?>;
}

这不起作用,但是当我这样做时它起作用。

<?php  header('Content-Type: text/css');?>
#div{
    background: <?php  echo 'blue';?>;
}

会出现什么问题?

这是mainfile.php

 <?php 

    function test(){
    global get_option('bgcolor');?>

        <input type="text" id="bgcolor" name="post_popup_settings[bgcolor]" value="<?php echo get_option('bgcolor');?> " />
    <?php
}
    add_action('admin_head','test');

这实际上是在管理部分。

最佳解决方法

WordPress功能仅在加载WordPress时可用。如果直接呼叫style.php,则无法使用WordPress功能。

为PHP驱动的样式表加载WordPress的一种简单方法是向WordPress添加一个端点:一个自定义的保留URL,您可以在其中加载模板文件。

要到达那里你必须:

  1. 使用add_rewrite_endpoint()'init'上注册端点。我们将它命名为'phpstyle'

  2. 挂钩到'request'并确保端点变量'phpstyle'在设置时不为空。阅读Christopher Davis的优秀A (Mostly) Complete Guide to the WordPress Rewrite API,了解这里发生了什么。

  3. 挂钩到'template_redirect'并提供您的文件而不是默认模板文件index.php

为了简短起见,我在以下演示插件中将所有三个简单步骤合并到一个函数中。

插件PHP风格

<?php # -*- coding: utf-8 -*-
/*
 * Plugin Name: PHP Style
 * Description: Make your theme's 'style.php' available at '/phpstyle/'.
 */
add_action( 'init',              'wpse_54583_php_style' );
add_action( 'template_redirect', 'wpse_54583_php_style' );
add_filter( 'request',           'wpse_54583_php_style' );

function wpse_54583_php_style( $vars = '' )
{
    $hook = current_filter();

    // load 'style.php' from the current theme.
    'template_redirect' === $hook
        && get_query_var( 'phpstyle' )
        && locate_template( 'style.php', TRUE, TRUE )
        && exit;

    // Add a rewrite rule.
    'init' === $hook && add_rewrite_endpoint( 'phpstyle', EP_ROOT );

    // Make sure the variable is not empty.
    'request' === $hook
        && isset ( $vars['phpstyle'] )
        && empty ( $vars['phpstyle'] )
        && $vars['phpstyle'] = 'default';

    return $vars;
}

安装插件,访问wp-admin/options-permalink.php一次刷新重写规则,并在主题中添加style.php

样品style.php

<?php # -*- coding: utf-8 -*-
header('Content-Type: text/css;charset=utf-8');

print '/* WordPress ' . $GLOBALS['wp_version'] . " */\n\n";

print get_query_var( 'phpstyle' );

现在访问yourdomain/phpstyle/。输出:

/* WordPress 3.3.2 */

default

但是如果你去yourdomain/phpstyle/blue/输出是:

/* WordPress 3.3.2 */

blue

因此,您可以使用端点根据get_query_var( 'phpstyle' )的值为一个文件提供不同的样式表。

警告

这会降低您的网站速度。每次访问都必须加载两次WordPress。没有积极的缓存,不要这样做。

参考资料

本文由朵颐IT整理自网络, 文章地址: https://duoyit.com/article/2671.html,转载请务必附带本地址声明。