Types of Stores WooCommerce is Optimal On
Diva asked at the beginning “What types of stores is WooCommerce best for?” since I spoke negatively about it at the beginning. The answer is WooCommerce is best for stores that have complex functionality.
For example, if you run a subscription website where you want to charge somebody $300 for a year for the the first year and $150 every year after that in a single subscription signup and you are using PayPal, you have to be able to be able to use what PayPal calls reference transactions. The only ecommerce system that has a PayPal integration with reference transactions is WooCommerce.
I have a client who is using WooCommerce for the sole reason that he needs to use authorize.net and he needs to be able to not process the transaction but stop the transaction so people make a purchase…he wants to be able to adjust shipping so that it is 100% perfect so he wants to intersect the processing of the sale and change the sale price based on their actual shipping cost once they box up the product before he realizes the sale. That’s something that authorize.net allows him to do but the only integration with authorize.net that allowed that was WooCommerce.
If you are shipping internationally and you have a specific provider that you want to use the chances are that you need to use WooCommerce. Other stores are coming up with other shipping options but WooCommerce has the largest number of shipping options available.
If you want to integrate your sales with Quickbooks then you only have a couple of choices and one of them is WooCommerce.
If you want to integrate your sales with Infusionsoft then you only have a couple of choices and one of them is WooCommerce.
There are varying levels of complexity in the decision of what kind of store to use. Those levels of complexity what your options are. You might use WooCommerce for a book store even if you didn’t need to use authorize.net to intersect the payment because of the flexibility in setting up USP shipping, shipping zones, rates and all that stuff. So there may be other more complex reasons for doing it.
You really have to ask yourself what is your rational but you do it knowing that WooCommerce is probably the most expensive WordPress ecommerce solution available to you. And unless you have some very unusual requirements and you’re selling digital products you probably don’t want to use WooCommerce. You probably want to use WP eStore or Easy Digital Downloads or something like that where the very inexpensive versions of them work flawlessly. And where you actually get decent support.
If you are doing simple shipping in the US, simple shipping, simple taxes, not particularly complex products then MarketPress by WPMUDev is an excellent, very well supported choice. I, in fact, have boxes for styling and customizing MarketPress if you are using it with Thesis 2. There are other choices for you besides WooCommerce but the more complicated your need the more likely that WooCommerce is your solution. And hopefully at some point it will become great and every update will work and you’ll get decent support but at the moment you should walk into it knowing that neither of those two things are correct.
Styling Select Boxes in Agility
Dalla says, “I’m still mucking around here trying to style products in the shop page”. Dalla are you still here? I just unmuted your microphone.
So you’re talking about this. Well, this actually already has the kind of styling you are looking for, Chris adding styling for the sorting boxes. You’re using Agility?
Dalla: Yes. Agility 3.
Rick: So Agility doesn’t currently have default styles for any of this yet. You can see what Chris has done here for the select. You could just copy this and paste it in your custom CSS.
Chris: You may not want all that.
Rick: No, but it’s a place to start. Because really what you are missing here is this padding so you could just use the select and take that stuff out like that. That’s probably what you are looking for and it would apply to all of your select boxes not just the one. I’m going to put that code in the chat window for you.
Because Agility currently does not have default styling for select boxes. It will but it doesn’t currently. Is that all you needed?
Dalla: Yes, I think so. Definitely to at least move them to where I need them go.
Rick: Okay. Do you have any other questions?
Dalla: No, I don’t think so. I think all your other little snippets are going to handle the other issues that I had.
Dalla: Thank you.
Products with Different Height Images Not Lining Up
Diva asks, “To get products lining up on a page when each image has a different height. Is there a way to line up and make sure each that they line up in each row?”
Rick: Diva, really you’re going to hate to hear this but the first answer to this question is that the product images should all be exactly the same size, period. You’re never going to get the desired result out of any columnar display of products when the images are not exactly the same size.
You should probably make them 600×600 or 800×800, something like that and let WooCommerce carve them down to the right size. If you’ve got a whole bunch of old images and just added WooCommerce you might install the plugin Regenerate Thumbnails. And have it just go through those images and just recreate all those images for you. If you change the product image sizes in settings then you are going to want to run Generate Thumbnails again.
Chris: You can also do max width and max height in CSS to force it.
Rick: You could do that but really there are all kinds of things you could try to do but when it comes right down to it the professional way is to recognize that when you are looking for columns of images and you want grids of images to look right you need to make them all the same size.
Now WooCommerce will make thumbnail images for you where they are all the same size as long as your images are big enough. If you put in a 150×200 image in then that’s not big enough for it to crop down but if you’ve got a 600×400 pixel image that is big enough for it to crop down.
On the other hand if it’s cropping it down you may not like the way it crops. So really the right answer is that if you want to be in full control of the images and what is shown the best thing to do is to make every single image the 800×800 or 600×600 so no cropping happens and all it does is get shrunk down into a square size. And if you don’t want to use a square size then come to the bootcamp class next weekend and I’ll show you how to use non standard, non square sizes with this stuff. Because you can use rectangular sizes for products instead of square but you have a bunch of settings that need to be set up. And the underlying concepts behind that are kind of outside the scope of this conversation.
Thesis Schema System
Rick: Do you have any parting comments, Chris?
Chris: Yes. So it has come up recently about the schema system and I’ve kind of revisited it a little bit. So the way it has been prior to now in Thesis it has been related to the skin data and to templates specifically. So, in other words if I make the skin then I also assign some basic default schema data to certain templates as it makes sense. And that’s what gets used.
And that kind of works. But let’s say you’ve got a site where you’ve got a review type of content which is its own schema typically and then you’ve got another one that is a create article. So you’ve got reviews, articles and then maybe you’ve got some other category, just a third type of schema that you would use in your content. Well then at that point you are forced to make a decision. You set up one of those schemas as your default maybe article and then you would somehow choose review for this other post type. But that’s not how it currently works. You would have to actually have it set up as a different post type.
Rick: Or set up a different template.
Chris: Or set up a different template but then you would be choosing a custom template on some of your types of content but not all and you would have to select that custom template. And if you changed skins you would have to select that custom template again. So that is a bummer, just to manage schema.
And so the reason why that is so cumbersome is because schema is really a piece of data that is related to the content and not to the template. So I’m going to have to refactor that a little bit and what we’ll probably end up being called 2.4. And I’m going to make that schema content specific so that at least on the WordPress post editor there will be post meta associated with it that you can set. And that data will persist on anything Thesis enabled. As long as Thesis is enabled on the website that data will persist and then skins will then inherit this data and then output it accordingly. At least that’s the idea going in.
Rick: That is what we do with Agility. There is the ability to choose default schema by post type first. So you can set up your default schemas for those things that you want to set up default schemas for. Then when you are on a post you can choose to override that schema.
You can choose to override the schema based on the Thesis schema filter and then the new override is applied. Then what we do…it seems to me like there was one case where instead of having text as the item prop I capture that instance and change the item prop to whatever it was. I can’t remember what that issue was right now.
Now the trick to that is that I’m not actually using the Thesis Post Box or the Thesis Query Box, I’m using all the parts of it but I’m not using the wrapper so that I can capture the post meta or the option. And then change that out. So if you came to a place where just like the rest of these Thesis meta options you had the ability to select schema that’d be great.
Chris: That’s cool. I like the page specific widget content as well. As well as some other script options. That’s pretty neat.
Rick: Well, the page specific widget content is my implementation of the old Thesis media box. I use it for resource downloads on courses. So I just have one widget in place and then if it’s on a course page that has a download to it then I put it in this widget specific content and it doesn’t have to show up anywhere else. And I don’t have to create a new widget for it.
Chris: Yeah, that’s so good. I think about stuff like that in my own site and that’s super handy but like the way it is wrapped up in there as like a separate kind of option tucked in this meta box. I don’t know…this whole interface with the post editor and everything just leaves me wanting so badly. Because I want information associations the way you input data stuff. I just want associations to be so much stronger. I don’t think it’s like a WYSIWYG presentation is necessarily the answer but just a whole other way of doing that post editor and that presentation. Being able to select what shows on a particular type of page that you are editing.
Rick: Okay, well I’ll be excited to see what you come up with because I was trying with Agility to give people, beginners, a measure of template customizability without them getting into the Skin Editor.
Chris: Yes, it’s perfect. It’s so good. It’s the best I’ve seen by far.
Rick: But what I did was I made it way more complicated. It just became…the downside of Agility is that you have to learn all that stuff and it may keep people out of the Skin Editor but after somebody has taken a class on how to use it and they ask the question, “well, I need to change the schema on this page so how to I do it?” and I say go down to Agility page details and they say “what?”. Because whatever it was that I tried to teach them didn’t sink in and so the lack of knowing that keeps them from having the benefit of it.
Chris: That’s what my point was about the overall organization, the way WordPress kind of allows you to interact with the presentation of this page it just going to be hard no matter what. There is just so much teaching involved to really make it successful. It’s a little bit frustrating. Because better design could solve a lot of those problems. It is what it is.
You know it makes sense to have another item on the page associated with that piece of content. I’ve been thinking about this stuff in terms of atomic content forever. You’ve got your main chunk of content on this page here but maybe on this side of the page you want to pull in this other piece of atomic piece of content. And maybe that other atomic piece of content is only associated with this other piece of content or maybe it’s not. Maybe it’s more useful in more contexts than that. I don’t how those relationships get managed or if it even matters how they get managed just as long as those atoms exist and can be organized in some way.
Kind of an interesting way of thinking about building a website and piecing together content. This sort of speaks to that with the widget content and all that stuff.
Rick: I was thinking about creating a box that is essentially a CMS box that has all the tools in it that I think of as being important for a CMS type of website. So that’s post meta…I mean creating your own custom post meta in the dashboard or post types. And then having a established custom content type that’s just another post type but you use it specifically only for these little snippets of text, like you were saying atoms of text, content that you want to add to a page or some number of pages depending upon what it is and wrapping that all up into a plugin or a box or something like that.
Chris: Yeah. I was just thinking the possibilities of this are pretty cool. You could pull up an atom and see what its relationships are in your website and you would know then every occasion on which this item is likely to appear. By way of exploring those relationship by way of a much cooler admin than WordPress.
Rick: Oh, yeah! I hadn’t even thought about it that way but being able to look at it and know what relationships exist.
Chris: Right, because it’s really not about the templates at that point. Content has its own relationships and then templates should seek to output the information that’s there as reliably and efficiently as possible. But most of that data, and this goes back to the schema thing, even those relationships are products of the content. They are associated with the content in some way. Or else they are a stand alone piece of data but bottom line is that everything needs to be data thats synthesized at run time and then once those decisions are made about what to do, boom output.
Rick: Well, I created a query box that’s a related posts query box and the primary dimension is what’s the taxonomy that defines the relatedness. And I used that on a site where the client had hundreds of testimonials all dealing with different aspects of the services that they provided. So we created a taxonomy that would define the relatedness between the service description and the testimonials. Because he had service descriptions and sector descriptions so banking, business, government sectors and then translation, legal translation and different services. And then languages, French, Italian, German…so you have these three different sets of data that you want to all wrap together where the testimonials when they are on the business sector page all the testimonials reflect business clients and if you are on the French page all the testimonials reflect French clients. So you have this multi dimensional relatedness of the content. So you really only need one template and that template has the query box in it that says Display Testimonials By Relatedness and that template defines the dimension of relatedness and then whatever page is displaying that also defines the relatedness. It has a taxonomy term and so it then goes out and displays all of the testimonials of that taxonomy term that are related to that product or service or sector. But we had only one template doing all that work.
Chris: Sure. At its core there you were just defining a type of relationship which is pretty cool. Atoms of content and then types of relationship. That’s pretty much the bottom line.
Rick: It was a very successful project and we are very happy with the outcome of it. It was really interesting to implement it in Thesis because if you didn’t have Thesis you I would have had to do all kinds of messing around with taxonomies, templates and queries to get all that stuff to come together.
Chris: Yeah, that would be pretty messy, especially from a maintenance standpoint. But your solution sounds really interesting especially with leveraging the taxonomy to do that.
Rick: Well that does it for today so thank you everybody for joining us today.