plugins – ¿Cómo puedo usar las funciones de WordPress en mi hoja de estilo?

Pregunta:

Tengo mi archivo style.php con este aspecto.

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

Esto no funciona, pero cuando lo hago, funciona.

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

¿Cuál sería el problema?

Este es el archivo 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');

En realidad, se encuentra en la sección de administración.

Respuesta:

Las funciones de WordPress están disponibles solo si WordPress está cargado. Si llama a su style.php directamente, no puede usar una función de WordPress.

Una forma sencilla de cargar WordPress para su hoja de estilo impulsada por PHP es agregar un punto final a WordPress: una URL reservada personalizada donde carga su archivo de plantilla.

Para llegar tienes que:

  1. Registre un punto final en 'init' con add_rewrite_endpoint() . Vamos a 'phpstyle' .

  2. Conéctese a 'request' y asegúrese de que la variable de punto final 'phpstyle' no esté vacía si está configurada. Lea la excelente guía A (en su mayoría) completa de la API de reescritura de WordPress de Christopher Davis para comprender lo que está sucediendo aquí.

  3. Conéctese a 'template_redirect' y entregue su archivo en lugar del archivo de plantilla predeterminado index.php .

Para mantener las cosas breves, combiné los tres pasos simples en una función en el siguiente complemento de demostración.

Complemento de estilo 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;
}

Instale el complemento, visite wp-admin/options-permalink.php una vez para actualizar las reglas de reescritura y agregue un style.php a su tema.

Ejemplo de 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' );

Ahora visite yourdomain/phpstyle/ . Producción:

/* WordPress 3.3.2 */

default

Pero si vas a yourdomain/phpstyle/blue/ la salida es:

/* WordPress 3.3.2 */

blue

Por lo tanto, puede usar el punto final para entregar diferentes hojas de estilo con un archivo según el valor de get_query_var( 'phpstyle' ) .

Advertencia

Esto ralentizará su sitio. WordPress debe cargarse dos veces por cada visita. No lo hagas sin un almacenamiento en caché agresivo.

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım