3

I am creating a feature for my website using a WordPress shortcode. The shortcode is displays an HTML table that contains certain data.

I have enabled the short code for widget/sidebar and it is working fine in the widget.

The only problem is that my designer has created two different styles; one for post and another for widget. Is there any way to know that the code is being executed in sidebar or in post?

eg:

if(is_widget()){
//add stylesheet for widget here
}
else{
//add stylesheet for post here
}

Thank you

9
  • Are the styles so significantly different that you couldn't just adjust it based on container size?
    – Jami Gibbs
    Dec 28, 2016 at 16:00
  • yes, in fact they are two different css files. for post the table have 4 columns and for widget it have 2 columns.
    – SD433
    Dec 28, 2016 at 16:03
  • The Number of columns are just an example, even the icon used are different for widget and post.
    – SD433
    Dec 28, 2016 at 16:11
  • 1
    Just brainstorming some ideas (I'm not sure if this is an option depending on who your end-user will be) but what about adding another attribute to your shortcode like [myshortcode type="post"] where type indicates if it's a "post" or "widget" format and then apply a style based on that attribute setting.
    – Jami Gibbs
    Dec 28, 2016 at 16:19
  • 1
    just add styles for both and use descendant selectors. widgets will be inside widget container elements, and posts will be inside posts container element.
    – Milo
    Dec 28, 2016 at 18:14

1 Answer 1

1

Using conditional tag in_the_loop inside your shortcode function may serve the purpose.

if( in_the_loop() ) {
    //add stylesheet for post/page here...
} else {
    //add stylesheet for widget here...
}

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.