web-dev-qa-db-fra.com

Comment générer des CSS à partir d'un shortcode dans un plugin

J'ai du mal à générer des CSS "à la volée" à partir d'un shortcode contenu dans un plugin utilisant class. Voici la fonction shortcode:

public function shortcode($atts, $content = NULL) {

        $data = shortcode_atts ( 
            array(
                'id'    => '',
                'img'   => '',
                'speed' => '5',
            ), $atts 
        );

        $id_tmp = $data['id'];

        $src = wp_get_attachment_image_src( $data['img'], 'full');
        $image_url =  $src[0];

        return  '<section id="'. $data['id'] .'" data-speed="'. $data['speed'] .'" data-type="background">' .do_shortcode($content). '</section>';
    }

Ce que j'essaie de faire, c'est d'obtenir les valeurs id et image_url et de les mettre dans un fichier CSS pour créer quelque chose comme:

#intro01 <-- THE ID SHORTCODE VALUE {    
    background: url(../images/fly.jpg <-- THE $image_url VALUE ) 50% 0 fixed;
}

C'est un css public (front-end).

1
Daniel

Mettre les règles CSS générées dans un fichier CSS à partir du shortcode peut être une pratique plutôt mauvaise car chaque fois que vous exécutez le shortcode, il devra ouvrir un fichier et y écrire; Je pense que ce n'est pas vraiment ce dont vous avez besoin. Dans votre cas, vous pourriez, par exemple, définir l'attribut style sur l'élément lui-même, cela devrait suffire:

public function shortcode($atts, $content = NULL) {

    $data = shortcode_atts ( 
        array(
            'id'    => '',
            'img'   => '',
            'speed' => '5',
        ), $atts 
    );

    $id_tmp = $data['id'];

    $src = wp_get_attachment_image_src( $data['img'], 'full');
    $image_url =  $src[0];

    $style = "style = background: url(".$image_url.") 50% 0 fixed;";

    return  '<section id="'. $data['id'] .'" data-speed="'. $data['speed'] .'" data-type="background" '.$style.'>' .do_shortcode($content). '</section>';
}

Vous pouvez aussi essayer la fonction wp_add_inline_style () .

2
cybmeta