I am trying to get shortcode attribute value to another function to add inline style.I want to use $color
's value to another function.
Here is my code
<?php
/**
*
*/
class MakeShortcode
{
public $color;
public function __construct()
{
add_action( 'init', array($this, 'PostBLock') );
add_shortcode( 'PostBLock', array($this, 'getpostblock') );
add_action( 'wp_enqueue_scripts', array( $this, 'inlinestyle') );
}
public function getpostblock( $atts ){
extract( shortcode_atts(
array(
'section_color' => '#000000',
), $atts) );
$this->color = $section_color;
$output = 'First LIne';
$output .= 'Second Line';
return $output;
}
public function inlinestyle(){
wp_enqueue_style(
'custom-style',
get_template_directory_uri() . '/css/style.css'
);
$custom_css = "
div[data-id=289374].post-block-post-left.active,
div[data-id=289374].post-block-post-right.active{
background : {$this->color};
border-color : {$this->color};
}";
wp_add_inline_style( 'custom-style', $custom_css );
}
}
$test = new MakeShortcode();
But background
and border-color
becomes empty.That means i am not getting $this->color
value in that function.How i can get that?
wp_enqueue_scripts
is called before the shortocode render. then if you want to choose a custom color in a page, add a meta box to select the color in the edit page.