PriMoThemes — now s2Member® (official notice)

This is now a very OLD forum system. It's in READ-ONLY mode.
All community interaction now occurs at WP Sharks™. See: new forums @ WP Sharks™

s2member blocking widget from theme

s2Member Plugin. A Membership plugin for WordPress®.

s2member blocking widget from theme

Postby schwein » January 4th, 2012, 8:31 am

I am using s2member and a them from PressCoders called FitPro. I am trying to add their slider widget, but it is blocked by s2member. When I deactivated s2member, the widget worked. But when I reactivated s2member, the widget was blocked. Why is this blocking the slider widget? All of the other widgets work.

Thanks

Erin
User avatar
schwein
Registered User
Registered User
 
Posts: 10
Joined: January 4, 2012

Re: s2member blocking widget from theme

Postby Cristián Lávaque » January 5th, 2012, 4:47 am

The way the theme is using JavaScript for that slider may not be the best way to do it in WordPress, prone to a conflict like the one it's experiencing with s2Member.

If you really need that theme, you can tell the developer to look into it and improve it. Or you can try doing it yourself if you know how to do it.

This is part of a conversation I had with Jason some months ago regarding JavaScript conflicts.

Cristián: I still don't understand how the JS conflicts work... If the library is the same in both plugins, why is there a conflict? Same var names?

Jason Caldwell: Well, I call it a conflict. Sometimes it's a conflict in jQuery because of a bad plugin, which attempts to load jQuery on it's own, instead of doing it the WP way. Or sometimes, it just a bad plugin that causes a JavaScript error, which may result in all JavaScript failing ( the nature of JavaScript ). Not really a "conflict" in that case, really an error due to a bad plugin/theme.

Jason Caldwell: I've also see some conflicts between frameworks. That's rare, but there are some plugins that use the ProtoType framework, and combined with another framework like MooTools, there is a possibility for a conflict to arise. Rare though, and it's usually attributed to the way their loaded ( i.e. by a bad plugin/theme ).

Cristián: Does WP load JQuery already? If so, why do plugins load it too?

Jason Caldwell: Yea, WP already loads it. But some plugin authors don't know that, or they just hard code it into their plugin not realizing that. Other times they'll try to include a dependency on jQuery, but they name it wrong, and WordPress gets confused.

Cristián: Does s2Member load it again or uses WP's?

Jason Caldwell: Hmm, not really, because in the Dashboard, it's already loaded by WordPress. s2Member enques scripts that is uses, which rely on jQuery being present. In the call to wp_enqueue_script(), s2Member will list jQuery as a dependency, which forces WP to load it, though it's already loaded in the Dashboard anyway. That's the proper way to handle it.

On the front-end of a site, s2Member will load jQuery if it's not already loaded, but again, using the same technique. A call to wp_enqueue_script() with a dependency on jQuery forces WP to load jQuery. If 10 plugins all do it this way ( i.e. the right way ), WordPress loads jQuery in the proper order and only one time.

Cristián: Ah, got it. I understand WP has a QC team, don't they check this?

Jason Caldwell: Not in my experience. They look mostly for security issues and really bad code. They usually don't catch minute details like this.

Cristián: I see. Well, they do look at how the db is used, iirc.

Cristián: I see, but these details do cause trouble for the users. Maybe it'd be good to write an article about JS conflicts as you explained above and post it in the forums, and then show it to the QC guys for consideration to include in their quality checklist.

Jason Caldwell: Yea, that's a good idea. On the WP side though, they're aware of this problem, and that's why they created the wp_enqueue_script() wp_enqueue_style() functions. Although, I wish this were more prominent in this article: http://codex.wordpress.org/Writing_a_Pl ... uggestions

It is mentioned, but it's all the way at the bottom:

Try not to echo <script> and <style> tags directly - instead use the recommended wp_enqueue_style() and wp_enqueue_script() functions. They help eliminate including duplicate scripts and styles as well as introduce dependency support. See posts by the following people for more info: Ozh Richard, Artem Russakovskii, and Vladimir Prelovac.


I hope it helps you recognize what the theme is doing wrong and fix it. :)
Cristián Lávaque http://s2member.net
Is s2Member working for you? Please rate it Image at WordPress.org. Thanks! :)
User avatar
Cristián Lávaque
Developer
Developer
 
Posts: 6836
Joined: December 22, 2010


Return to s2Member Plugin

Who is online

Users browsing this forum: No registered users and 2 guests

cron