2016-08-14 12 views
0

Я работаю над созданием короткого кода, который предназначен для изменения css и js динамически для этого короткого кода на основе ситуации. Теперь проблема в том, что я не понимаю, как использовать add_action() внутри add_shortcode(). Позволь мне дать вам пример коду сниппета, так что вы, ребята, можете лучше понять меня:Как добавить встроенный css/js в shortcode wordpress

add_shortcode('example', function($atts) { 
    //extracting the shortcode attributes 
    extract(shortcode_atts(array(
     'value1' => null, 
     'value2' => null, 
     'value3' => null 
    ), $atts)); 

    //Now here I wll do my code for the shortcode 
    // But the shortcode needs some js and css to work 
    // so, I'm trying like this 

    //For the CSS 
    add_action('wp_head', function() { 
     echo '<style type="text/css"> 
      .class { 
       background-color: '. $value2 .'; 
      } 
     </style>'; 
    }); 

    //For the JS 
    add_action('wp_footer', function() { 
     echo '<script type="text/javascript"> 
      var a = '. $value3 .' 
     </script>'; 
    }); 

}); 

Теперь, очевидно, он не работает, так что я надеялся, что если любой из вас может вести меня, как к подобным вещам в собственном путь.

Если вы можете, пожалуйста, помогите вместо отрицательного голосования.

+0

Вопрос: Является ли это действительно необходимо иметь js и css в коротком коде. Я бы поставил css в style.css и часть javascript в файл js – meck373

+0

@ meck373 Я думаю, что вы не читали пример кода правильно. Причина, по которой я должен был это сделать, потому что значения CSS & JS будут динамически изменяться в зависимости от значений короткого кода. Как вы можете видеть выше, я использовал соответственно '$ value2' и' $ value3' в разделе css & js. Оба из них поступают из короткого кода. Вот почему я сделал такой подход. Дайте мне знать, если у вас есть еще вопросы. – iSaumya

ответ

0

Там должен быть лучший способ сделать это, но в настоящее время только сделать его работу, удалите add_action() часть, просто сделать строку кода и вернуть его:

add_shortcode('example', function($atts) { 
    //extracting the shortcode attributes 
    extract(shortcode_atts(array(
     'value1' => null, 
     'value2' => null, 
     'value3' => null 
    ), $atts)); 

    //For the CSS 
     $result = '<style type="text/css"> 
      .class { 
       background-color: '. $value2 .'; 
      } 
     </style>'; 

    //For the JS 
     $result .= '<script type="text/javascript"> 
      var a = '. $value3 .' 
     </script>'; 

    return $result; 
}); 
+0

Большое спасибо за ваш ответ. Но это не кажется хорошим способом сделать это, поскольку теги стиля будут заполнены внутри 'body'. Проведя много исследований, я придерживаюсь такого подхода: http://pastebin.com/eYi6RAbT не уверен, что он сработает. Не могли бы вы взглянуть и поделиться своими мыслями. – iSaumya