Smashing Podcast Episode 64 With Alvin Bryan: What Is A Headless CMS?

We’re talking about headless content management systems. What are they, and how do they differ from more traditional systems? Drew McLellan talks to Alvin Bryan to find out.

Show Notes

Weekly Update

Transcript

Drew: He’s a developer advocate with the content management platform company, Contentful. Before that, he used to be a lead engineer for Dow Jones in the Wall Street Journal and has had various front end roles. He’s very UX driven and happiest when collaborating with designers and pushing boundaries as a team. And these days, he’s learning a lot about DEVREL and loving it. So we know he’s an experienced developer, but did you know he once taught Catherine Zeta Jones to do a cartwheel? My Smashing friends, please welcome Alvin Brian. Hi Alvin, how are you?

Alvin: I’m smashing, thank you so much for having me here. It’s an honor.

Drew: Thanks for joining us. I wanted to talk to you today about one of the key technologies that’s really at the center of so many projects, but perhaps these days doesn’t get the spotlight shone on it so often because maybe it’s not so glamorous as front-end frameworks or any of these other things. It’s content management systems. We’re all using them, but I think sometimes the discussion isn’t there about it when it’s so important. I just — before we start — want to address the elephant in the room and that you’re a developer advocate for Contentful, and I know we have a really savvy audience here at Smashing, and they’d see right through anything that was a thinly veiled ad for your employer. So I just wanted to reassure the audience at this point that this is not that, rather it’s the fact that your work leads you to have some really great upstate knowledge of the space and that’s why you’re the perfect guest for this episode. That’s right, isn’t it?

Alvin: Oh yeah. I think that’s the difference between a developer advocate and a salesman. I’m not here to sell you anything, I’m here to help developers, whatever that looks like. At least this is how we approach DEVREL at Contentful. It varies, and this could be a podcast episode on its own.

Drew: It could be, couldn’t it? What is developer relations? Is it a function of sales? Is it a function of marketing? Is it support? What is it?

Alvin: Yeah.

Drew: So yes, that’s a whole can of worms. Just to give a bit of background on me in this context, I’ve got a lot of history with the content management space from years of building bespoke systems for clients and then distilling all that experience down into a CMS product, which I founded in 2009 and then sold in 2021. All the CMS solutions that I’ve developed have followed this traditional model of the CMS being the entire platform that delivered your website. So it’d be taking content and taking templates and merging all that together to create HTML pages essentially. Is that approach to content management still a valid thing in 2023, do you think?

Alvin: I think it’s valid. Well, it’s valid depending on what you’re trying to build. Squarespace is, I’m pretty sure they’re doing great. I’ve not looked at anything, any numbers, but they’ve been doing great for years and I’m sure they’ll continue. So yeah, it’s definitely a valid thing, but I think for the sort of place that would employ a developer, that may not be anymore.

Drew: It’s almost that market from a development point of view, it’s almost like a solved problem, isn’t it? There are so many good CMSs for rolling out, for example, small websites. I don’t know what the latest stats on how much of the web is powered by WordPress, but it’s approaching half, isn’t it?

Alvin: Yeah. I believe it kept increasing as well, right?

Drew: Right.

Alvin: Yeah, so definitely, it’s a thing for sure.

Drew: I think we’re here today to talk about headless CMS, which of course is a different approach to the same problem. I think most of us will have heard of Contentful in some capacity over the last few years as one of the rising stars in the headless CMS space. And you really can’t talk about content management. You can’t have a content management discussion these days without headless being a factor in that discussion. We mentioned WordPress, but even WordPress has a headless mode. Drupal have what they call a coupled mode, which I think is just the same thing. So getting down to brass tacks, what do we mean when we say a headless CMS? What sort of problem is it solving for us?

Alvin: The problem it’s solving is, it’s making a distinction between what the CMS manages and what you get out of it. With the traditional CMS, you’re tied to a website or a page where you’re made a page on WordPress and ended up being a page on your website. And it’s the approach that, as we said before, this is what Squarespace does, this is what they all do. With headless, you manage your content and you retrieve that content with an API call, so the way that looks on your website is completely decoupled. And this solves a lot of problems, especially with bigger companies. So you can imagine, with Contentful, one of our biggest clients is Ikea, and you can imagine that they don’t just have content on their website, they have physical catalogs, they have ads on the side of the road, so all of that. You really have to break away from this old, one page in the CMS equals one page on the website.

Drew: So you end up more with a multipurpose repository of content with an API that you can then access it. So if you’re Ikea, you can pull the same product description into your mobile app and on your website and into, what, any number. So yeah, I guess it is decoupling, isn’t it? It’s, rather than saying, this content is being produced on this HTML page, it’s saying, this is a system for managing content and here is an API for getting at that content and using it however you want. So it sounds like it makes a whole bunch of problems, especially around the reusing content space, it makes that a lot easier. Are there any things, do you think, that using this approach make more difficult?

Alvin: Well, it’s the time to iteration, because depending on how well your system is set up, you can go around this. But the beauty of it, what we developers love about it is, we have control. What other people in the organization tend to hate is that we have control. And as a result, if you want a brand new section on your website when you need designer to design it, a developer to make it work, you can work around it with templates and other things that we used to do. But in general, this can be a thing where people can be... I can just spin up a completely new section from scratch. Again, it might be, but there would need to be something that’s been set up previously.

Drew: Right. So you can put the content into the system, but you need something then to consume it in a targeted way to make use of it. Yeah, so that, as you say, the iteration speed could be slower. One thing that I sometimes see online is, people say, "Oh, if you use a headless CMS, it’s terrible for SEO." But with my software engineering hat on, that sounds like a symptom of one possible implementation of using a headless CMS, and it’s not inherent to the overall solution, is it? You could be merging this content into a static website offline and then publishing it, or when people take a purely client side single page app approach to using that content, that might have SEO implications and that maybe be is the sort of naive initial implementation that someone might go with.

Drew: But yes, it’s funny how often that crops up almost, sort of one of these myths that drifts around people without maybe fully understanding the implications, just repeat it. One thing that Contentful talks about in a lot of their materials is composable content. What does that mean? What are we talking about with composable content?

Alvin: It’s the fancy new 12-23 thing, isn’t it? Yeah, just to come back on the SEO bit, I think, yeah, as you said, it’s just, anything that Google consumes is, at the end of the day, an HTML tag. It’s no different to the P tag, which you’ll use to display whatever. So it’s also up to you, the developer, to make sure that you create the OG tags that your content is there practically so the engines can crawl it. So it’s nothing... The headless provider will just give you an API, you can do whatever you want with it. To go back to the composable thing now, yeah, so a lot more people have started to move to it. You hear us talking about it, you hear some of our competitors talk about it, and that Defy is also doubling down with the acquisition of Gatsby, for example.

Alvin: The idea is to go headless CMS plus, right? So with headless you say, "Oh, I have this one API that takes care of all my content." But now, what if you could plug other things to this API? What if you could say, "Oh, I want..." I’m just making stuff up here, but what if I want to connect my slack to it? What if we have a weather app or something like that? Any other types of dynamic data that we need to combine with our content to have this one API that gives us everything. And it’s the idea of, again, you’re composing what you need with your headless CMS. And that for us, that looks like an ecosystem of apps, meaning you can extend Contentful with different apps, which could be translation, it’s 2023, so it could be GPT, could be anything else. So that’s the idea. Your headless CMS also integrates with other data providers.

Drew: So it becomes like an aggregator of other content. So as well as having maybe a content editing team creating content, you might also be pulling stuff in from your Instagram feed.

Alvin: Yeah, exactly.

Drew: Or say, a dynamic feed from a third party provider and then making that all available under one API to all your different consumers. Okay, well that kind of makes sense. I think that makes sense.

Alvin: Especially with Instagram, we’ve all seen the horrible Instagram embeds or the Twitter ones. Twitter API is a thing of the past now but anyway, just to give you an example of, you have these horrible embeds, and what if you could get that data from the headless CMS as well and then render it statically? That makes a lot more sense.

Drew: Okay. So yes, it’s just an aggregation function on top of the standard as well as being the source of truth for your own content.

Alvin: Exactly.

Drew: Also then brings in other pieces of content. Now, I’ve personally always been interested in owning my own data where I can, and I’d usually pick a self-hosted solution for something rather than a service, given the choice. Although I have mellowed over the years. The trade-offs I make now are very different from what I would made in the past. But with a headless CMS being API driven, it seems like you’ve got a bit more flexibility there as to where it’s hosted. So you don’t necessarily need the CMS and the website to live on the same server or in the same environment. You could separate those out. So, is there added complexity there or is that an opportunity for simplification? Have you any thoughts?

Alvin: Yeah, for sure. It depends, because everything is from that one API. Depending on your needs, that might get a lot of traffic, which will make self-hosting a problem. As you said, you’ve mellowed as some sort of into self-hosting because it’s become easier to just set up something in the cloud, whereas managing servers, has that necessarily got easier? Tech has changed, but it’s still annoying.

Drew: It’s just got complicated in different directions.

Alvin: Right. Yeah. So there are self-hosted headless CMSs. We’re not one of them because, again, we tend to target bigger clients that have, again, these needs for these APIs, and our CDN takes in, it’s in the billions of requests per month. So we’re pretty for high traffic stuff. But yeah, there are solutions you can install, Strappy is one of them that is self-hosted. You can install it on your own server, and this will give you, as you said, headless CMS. You’ll own your content, you’ll get the API. But the drawback with that is, obviously, if you get a ton of traffic, then it’ll go to your server that you might not scale or you might not want to pay for it to scale that yet. That’s the one true — but it’s possible for sure.

Drew: And I guess you’ve got to manage it then if it’s on your end, you’ve got to keep it updated, keep it running, keep it backed up. I guess the decisions you’d make for a small community website would be different for the things you’d make if you were Ikea. IKEA probably isn’t going to be running Strappy on a VPS. That’s probably not a good solution for them in a lot of ways. So what are the things you should weigh up when picking a headless CMS solution? What are the things to be looking out for that are perhaps different from what we’re used to evaluating for a traditional CMS?

Alvin: I think it depends... Well, as a developer, you’ll know what you’ll be coding so you can look at the API and what it looks like, whether you like it or not. How easy, does it support GraphQL? Everyone does these days, but stuff like that. Then I think it depends on the people who are going to spend a lot of time in the CMS team. As much as it’s great for me if I like the API, but if the people who are going to write in the CMS hate it, then it’s probably not the right choice. So I definitely think you probably want to involve these people to the decision, right? Because they’re going to be the ones spending time. For us, we want to make sure that we can retrieve everything we want from the API as developers, but definitely wants your blog editor to give you the green light and make sure it has everything they need.

Drew: Yeah, you mentioned the API becomes really important, and I’ve seen headless CMSs with Rest APIs with GraphQL, and then various solutions have SDKs that you can import into your project that give you a language native way of interacting. Is there anything you would, from a development point of view, that would be useful to look out for when evaluating availability of SDKs or types of APIs?

Alvin: Yeah, for sure, if it’s something you like. At the end of the day, the beauty of it, is it’s still an API call. So any language under the sun will support that, hopefully. Yeah, so it’s also up to you, right? Do you want Python native SDK where it’s just like, okay, I’m typing three lines of code and I do client, get entry, get this idea whatever, or get these entries that are of this content type, they prefer that grade. But if you’re the kind of person who’s like, "Nope, I’m going to have complete control," it also goes back to what you said about owning your data. The problem with relying on this on an SDK is what happens when there’s a security problem, versus if it’s you and you’re just using the bare bones HTTP client on your language, that there’s less risk. So it also depends on the kind of project you’re working on.

Drew: You talked about the user interface aspect, and it’s got to be one of the big factors, isn’t it? When you’ve got people entering content, creating content in a system and managing it, the user interface that’s provided is a big factor there and how the data is... There are all sorts of different approaches aren’t there? In content management to how you manage data, whether it’s just one big wizzywig block of junk, or whether things are broken down to a granular level for structured content. Presuming that most headless solutions still have some sort of user interface for editing content to get you started, does that reflect what you’ve seen in the marketplace?

Alvin: Yeah, everyone has a wizzywig. Some have varying degrees of support with Markdown, and again, the ecosystem of apps that I was talking about. So more and more players are having their own, and this helps also to extend it so it can help with this discussion of, if you’re talking to a blog editor, it’s like, "Ah, it’s kind of there, but I really wish there was a field that could do X," and you could either extend it yourself or just look for another solution. But yeah, different teams have varying needs. And it could be small things, like for example, scheduling. Like, oh, I want to be able to have this campaign going, I want to make sure that from now, I can make sure a blog post goes on the Monday, another one goes on a Tuesday and another one goes on the Thursday. And if the interface for this is a nightmare versus something else that you might not need. It depends, right? It’s always... But yeah, it’s crucial. Absolutely.

Drew: And I guess, if you’ve got very specific needs, in theory, you could use a headless CMS purely as a content engine and have your own mechanisms for getting data in, and basically write your own interface for writing into that system as well. Is a right interface something that everyone supports? Or is that a feature to look out for when evaluating?

Alvin: I wouldn’t say... I can’t remember if there’s one in particular who doesn’t, but I know we definitely do because-

Drew: It’s a very broad question. With your extreme knowledge of a hundred percent of the marketplace, does every single one...

Alvin: Right. Yeah, I know we support it because, it’s also, I think, with DEVREL, you end up spending a lot more time in your product versus the others, you tend to have a good... And this is where it’s different to sales, what we were saying earlier. When someone comes up to me and say, "Oh, what is the one feature that is different?" I always say, "Well, it depends what you need." What is the one reason I could choose Contentful? And this is where we very much differ from sales, which we’ll have a list right there in the ready. And then we’ll be like, "Oh, for sure you should choose us because A, B, C, D." And for us as developer, is more like, "What do you need? What scale do you have? What do you like working on? How big is your team?" It’s a different question. But as far as writing, having an API that works both ways, we definitely support it, and I would be surprised if others do not.

Drew: It becomes quite crucial, doesn’t it? Because very few projects comparatively start with nothing. Most people have got some sort of system in place before, and taking the data that you’ve already got and migrating it into a new system can be a major project, and a deal breaker for a lot of bigger use cases. You’ve got to be able to get data in. So having a CMS that has an API that you can write code and interface with whatever the previous system is, get that code into a decent shape, and then inject it into the headless system, that’s a major advantage, isn’t it?

Alvin: And you can think in terms of reproducibility as well, because migration is great, but it’s even better if you can say, "Oh, this is the exact script that I ran for migration as opposed to just this collection of random commands that I did on my machine." And it’s like, oh, beta’s over now. It’s much better to say, "Oh, we have this very defined way of transforming this data from this shape to that shape." And having an API helps you with this for sure.

Drew: Hopefully gone are the days when you have two browser windows open and copy and paste content from one form to another. I’ve certainly been there in the distant past. But yeah, flew those days behind us. Is there anything that has particularly caught your attention?

Alvin: I think the composable thing is, it’s been going on for a few months now, but it is definitely a shift. Everyone is starting to think, oh, maybe there’s more than just being the headless CMS solution. And obviously AI, which every market is talking about now. But it’s also content, and especially written content is, the first, right now, at least, the very first industries to be impacted by it. So how do you integrate it? How do you make sure... How do you account for things like attribution? These are discussions that are happening in the content space for sure, definitely. At least right now, it’s the first industry that it’s really attacking.

Drew: Yes. Written content and things like images, there’s Photoshop, new version of Photoshop has come out this last couple of weeks that has completely generative fill in it, which is amazing. So it’s a brave new world, isn’t it? From a content point of view particular, it’s a brave new world. And you mentioned attribution, and that’s a minefield as well, isn’t it? Figuring out how all that works when content has been generated from a model trained on-

Alvin: We don’t know what.

Drew: Yeah, who knows what. So how can you attribute stuff? It’s going to be a very interesting time, going forward, figuring out how we do that. Is there anything else that, say I’m planning a project, I’m going to use a headless CMS. I’ve decided maybe I’m going to use Contentful, and I’m planning out this project. What should I be considering? What lies ahead of me? What should I be worrying about? What is there that I should be thinking about? On embarking on this?

Alvin: I think it’s your content model. So it’s the first thing to get right. We see sometimes people really over-complicating things and having content model for, if you think of an index page, having a separate content for a carousel, and then there may be a river type content. Do you know what I mean? In terms of where you have an image on the left and text on the right, and then it follows by image on the right text on the left. So you can really over-complicate things where it’s content model. You could think, "Oh, rivers is very different to a Carousel," for example. But then you can think, "Oh wait, no, is it just an image with text with it?" And then at the end of the day, oh yeah it is. So it’s stuff like that where it’s easy to over-engineer things, and then having content models that are Carousel homepage one, and then about page Carousel two, and it’s like, well, no, these aren’t the same thing.

Alvin: So it’s trying to think in the abstract way, even if it might be more code originally because you’re building more flexibility into each of the content models, the content types as well. But in the long run, that could save you.

Drew: So it’s about, I guess, thinking of what content you’ve got and what different types it falls into?

Alvin: And what you might have in the future, which is complicated for sure because you can never know. But trying to build flexibility of, in terms of trying to think outside the box that, for example, what if there was a caption in this river? What if one of the images was actually a video? These little tweaks like this, which it will save you a lot of time in the long run, because it will prevent you from having to rethink everything later.

Drew: From a development point of view, from a developer point of view, one thing that always gives me reassurance in my work is having a good test suite that you can run to make sure that things aren’t broken before you deploy.

Alvin: Yeah.

Drew: Is there anything in terms of testing around content that we could make use of?

Alvin: For sure. It’s an API too. So if you can think of using something like Storybook, where you have your different components, you could say, right, so, as we said about, this is a generic component. What happens if there’s three instances of it? What happens if there’s five? What happens again, if one of them is a video? It’s this whole, the meme, cue engineer walks into a bar, orders zero beers, orders a thousand beers, stuff like that.

Drew: What is an elephant?

Alvin: Right. Yeah, exactly. And that type of thing. You can build into test suite and see what happens.

Drew: Yes, that’s quite interesting. I guess, again, it’s the decoupling of things that makes that really easy. And I guess then, if you’re running that Storybook, you can then run it through some visual regression testing and spot breakages or what have you. Yeah, that’s really fascinating.

Alvin: You can think of human errors too, right? Sometimes when you set up everything, you’re like, "Oh yeah, of course they’re going to put a date on the article," but then sometimes you forget or sometimes there’s something else and you realize, oh, that the date you published is different than the date you had in the article, whatever. Or one of the author’s Twitter doesn’t work. Stuff like that is, it’s writing your test suite is a good time to think about these edge cases, right? Sorry, what was your question?

Drew: Yes, no, I was just jabbering on. In fact, I remember years ago writing a sort of system for blogging, and every one of the absolute required fields was a title for the blog post. When I created it, I never even questioned, would a title be optional? A title is fundamental. Every blog post has a title.

Alvin: H1.

Drew: Right. And then you use that to generate the nice slug for the URL and all these sorts of things. And in listings, it’s the title that appears. And then Tumblr came out, and you could create all sorts of posts on that, and you didn’t even need a date or a title.

Alvin: Oh yeah.

Drew: What madness is this? But it’s like you’re saying, it’s thinking outside of the box and thinking about the different types of content that you might have. And it turns out that fundamental assumption that I made early on in that system, that we absolutely a hundred percent always had a title, became a limitation of what we could do with the system, because then when content came along that didn’t have a title, I was stuffed.

Alvin: Yeah, Instagram is another example. Or as we said, the great thing about headless is that it can go anywhere, but if you’re also planning stuff that is written in Contentful, but that will go on your website, again, your catalog, but also on Instagram, we have this great promotion this week for half price of whatever. On Instagram, that might just be the image and nothing else, and the description or something else. Yeah. Or you want to make sure, definitely don’t pull the hashtag into the blog, stuff like that.

Drew: Yes. Yeah, and I guess just thinking about Instagram and using content in that way, having this API with your content opens up all sorts of possibilities for generating images. You could pull the content and render text onto an image and post it to Instagram and do all that sort of things, that imagining doing that with a traditional CMS would just be... It’d be a flight of fancy, it’d be difficult. You’d be fighting against the system rather than working with it.

Alvin: Yeah. And this is where other features, as I said, scheduling for example, can be very important, because you can say, I want to make sure that whenever this campaign launches, we also have the Instagram stuff going out, which are again, these images generated from the new publish in the CMS, and this is where the CMS itself can have a scheduler, you can use Zapier or you can use Zapier to capture it and run a script that will then generate the image. You can do all of this in a Chrome job somewhere. It depends, but this is where these features become important.

Drew: Your content then just sits as one piece in a big chain of loosely joined elements that are delivering your various digital products or what have you onto your customers.

Alvin: And the composable stuff is about this being less loose, is to make sure you have some kind of control that’s defined, right? That’s not like, oh, there’s this Chrome job here and this app here, and it’s all duct tape.

Drew: Yes. So yeah, it gives you a level of control and potentially then, quality control or moderation or any of those steps that you might want to put in between rather than just... Because it would be possible to federate content in a front-end JavaScript app, you could do that, but then you’re missing that potential gate-keeping or any of those steps that you might want to put in, that having a platform that does it for you or enables that as a feature. Sounds super useful. So we’ve been learning all about headless CMSs today. What have you been learning about lately, Alvin?

Alvin: I was on web rush last week, so I did a lot of work with Astro, the different web framework. It’s been out for a bit, but since 2.0, I feel like they’ve really stepped on the gas and started releasing so many things. So I’ve really been looking into it, and it’s great. I have a blog post coming out. But yeah, I’ve been looking at the docs and learning a lot about all the new features, references, which are amazing. If you’ve had to deal with Markdown before and the whole type safety that they’ve added to Markdown, it’s really interesting. And the fact that they support all the frameworks is just even better. So yeah, I’ve been learning a lot about Astro recently.

Drew: That’s great. I think we did an episode on Astro, maybe a couple of years ago now, so perhaps it’s time that the Smashing Podcast Revisited.

Alvin: Yeah, there’s a lot of new stuff that came out

Drew: That’s amazing. If you, dear Listener, would like to hear more from Alvin, you can find his personal website with links to his various projects and social profiles at alvin.codes. Thanks for joining us today, Alvin. Do you have any parting words?

Alvin: No, thank you for having me. I’ve been a reader of Smashing Mag for a long time. My first article, I think, came out last year, which was also a great honor. And yeah, thank you so much for having me.

How to Display Twitter Followers Count as Text in WordPress

Do you want to display your Twitter followers count as text in WordPress?

By showing that many people follow you on social media, you can encourage visitors to trust your website. Even better, by displaying this information as text, you have the freedom to use it anywhere on your website, including inside your posts and pages.

In this article, we will show how to display your Twitter followers count as text in WordPress.

How to display Twitter followers count as text in WordPress

Why Display Twitter Followers Count as Text in WordPress?

You may have noticed that many popular blogs, influencers, and brands proudly show how many people follow them on social media.

If visitors see lots of people following you on social media, then they are more likely to trust your business and see you as an expert in your blogging niche.

Many of the best social media plugins allow you to show the total follower count in embedded feeds, buttons, banners, and more.

However, sometimes you may want to show the number as plain text. This gives you the freedom to add the follower count to your blog posts, footer, or anywhere else on your WordPress blog or website.

With that in mind, let’s see how you can display your Twitter follower count as text in WordPress.

Step 1: Get a Twitter API Key and Secret

To get your follower count, you will need to access the Twitter API by creating an API Key and Secret.

To get this information, head over to the Twitter Developers Portal and then click on ‘Sign up for Free Account.’

Signing up for a Twitter Developers account

You can now type in some information about how you plan to use the Twitter API. It’s a good idea to provide as much detail as possible, as Twitter will review this information and may delete your account if they don’t understand how you are using their API.

After that, read the terms and conditions. If you are happy to continue, go ahead and click on the ‘Submit’ button.

Agreeing to the Twitter Developers terms

You will now see the Developer Portal. In the left-hand menu, click to expand the ‘Projects & Apps’ section. Then, select ‘Overview.’

You can now go ahead and click on ‘Add App.’

How to create a Twitter app

After that, just type in the name you want to use for your Twitter app. This is just for your reference, so you can use anything you want.

With that done, click on the ‘Next’ button.

Naming a Twitter application

Twitter will now show an API key and API Secret. This is the only time you will see this information, so make a note of it somewhere safe.

We recommend adding the key and secret to a password manager for extra security.

Getting a Twitter API key and secret

Step 2: Add Custom Code to Your WordPress Website

The easiest way to add the Twitter follower count to your site is by using PHP code.

For security reasons, WordPress doesn’t allow you to add PHP code directly to your pages and posts, but it does allow shortcodes. This means you can create a custom shortcode and then link it to your PHP code.

The easiest way to add custom shortcodes in WordPress is by using WPCode. This plugin allows you to create as many shortcodes as you want and then link them to different sections of PHP code.

The first thing you need to do is install and activate the free WPCode plugin. For more details, see our step-by-step guide on how to install a WordPress plugin.

Upon activation, head over to Code Snippets » Add Snippet.

Adding custom shortcode to your WordPress website

Here, you will see all the ready-made snippets you can add to your website. These include snippets that allow you to completely disable WordPress comments, upload files that WordPress doesn’t support by default, and more.

Since you are creating a new snippet, hover your mouse over ‘Add Your Custom Code.’ Then, just click on ‘Use snippet.’

Adding a custom code snippet to WordPress using WPCode

To start, type in a title for the custom code snippet. This can be anything that helps you identify the snippet in the WordPress dashboard.

After that, you need to open the ‘Code Type’ dropdown and select ‘PHP Snippet.’

Adding a PHP snippet to WordPress using custom code

In the code editor, simply paste the following PHP code:

function getTwitterFollowers($screenName = 'wpbeginner')
{
    // some variables
    $consumerKey = 'YOUR_CONSUMER_KEY';
    $consumerSecret = 'YOUR_CONSUMER_SECRET';
    $token = get_option('cfTwitterToken');
  
    // get follower count from cache
    $numberOfFollowers = get_transient('cfTwitterFollowers');
  
    // cache version does not exist or expired
    if (false === $numberOfFollowers) {
        // getting new auth bearer only if we don't have one
        if(!$token) {
            // preparing credentials
            $credentials = $consumerKey . ':' . $consumerSecret;
            $toSend = base64_encode($credentials);
  
            // http post arguments
            $args = array(
                'method' => 'POST',
                'httpversion' => '1.1',
                'blocking' => true,
                'headers' => array(
                    'Authorization' => 'Basic ' . $toSend,
                    'Content-Type' => 'application/x-www-form-urlencoded;charset=UTF-8'
                ),
                'body' => array( 'grant_type' => 'client_credentials' )
            );
  
            add_filter('https_ssl_verify', '__return_false');
            $response = wp_remote_post('https://api.twitter.com/oauth2/token', $args);
  
            $keys = json_decode(wp_remote_retrieve_body($response));
  
            if($keys) {
                // saving token to wp_options table
                update_option('cfTwitterToken', $keys->access_token);
                $token = $keys->access_token;
            }
        }
        // we have bearer token wether we obtained it from API or from options
        $args = array(
            'httpversion' => '1.1',
            'blocking' => true,
            'headers' => array(
                'Authorization' => "Bearer $token"
            )
        );
  
        add_filter('https_ssl_verify', '__return_false');
        $api_url = "https://api.twitter.com/1.1/users/show.json?screen_name=$screenName";
        $response = wp_remote_get($api_url, $args);
  
        if (!is_wp_error($response)) {
            $followers = json_decode(wp_remote_retrieve_body($response));
            $numberOfFollowers = $followers->followers_count;
        } else {
            // get old value and break
            $numberOfFollowers = get_option('cfNumberOfFollowers');
            // uncomment below to debug
            //die($response->get_error_message());
        }
  
        // cache for an hour
        set_transient('cfTwitterFollowers', $numberOfFollowers, 1*60*60);
        update_option('cfNumberOfFollowers', $numberOfFollowers);
    }
  
    return $numberOfFollowers;
}

echo getTwitterFollowers(); ?>

In the code above, make sure you replace the following placeholders with your own API key and API secret:

    $consumerKey = 'YOUR_CONSUMER_KEY';
    $consumerSecret = 'YOUR_CONSUMER_SECRET';

You will also need to replace ‘wpbeginner’ with the Twitter account that you want to use. This can be any Twitter account, including accounts that you don’t own:

function getTwitterFollowers($screenName = 'wpbeginner')

To get the Twitter username, simply open the Twitter profile in a new tab. You will find the username in the URL and in the profile header:

Getting a Twitter username

With that done, switch back to the WordPress dashboard. Here, simply click on the ‘Inactive’ toggle so that it changes to ‘Active.’

You can then go ahead and click on the ‘Save snippet’ button.

Displaying the Twitter follower count using WPCode

With that done, scroll to the ‘Insertion’ section.

WPCode can automatically add your code to different locations, such as after every post, front end only, or admin only. To get the shortcode, simply click on the ‘Shortcode’ button.

Adding a Twitter follower count to WordPress using a custom shortcode

You can now use the shortcode to add social proof to any page or post.

In the block editor, simply click on the ‘+’ button and type in ‘Shortcode.’ When it appears, select the Shortcode block to add it to the page or post.

How to add a shortcode block to WordPress

You can now add the shortcode to the block.

Just be aware that the shortcode simply shows the total follower count, so you will typically want to add some text explaining what the number means.

Adding a Twitter follower count to WordPress using a custom shortcode

For more information on how to place the shortcode, please see our guide on how to add a shortcode in WordPress.

When you are happy with how the page is set up, you can make the follower count live by clicking on either the ‘Update’ or ‘Publish’ button.

Now if you visit your WordPress website, you will see the follower count live.

An example of a Twitter follower count, created using WPCode

We hope this tutorial helped you learn how to display your Twitter followers count as text in WordPress. You may also want to learn how to create a custom Instagram photo feed in WordPress or check out our expert picks for the best Twitter plugins for WordPress.

If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.

The post How to Display Twitter Followers Count as Text in WordPress first appeared on WPBeginner.

How to Add Click to Tweet Boxes in Your WordPress Posts

Do you want to add a ‘click to tweet’ box in your WordPress posts?

These simple boxes allow readers to share quotes from your posts with a single click. This makes them a great way to get more engagement on social media and drive extra traffic to your website.

In this article, we will show you how to add click to tweet boxes in your WordPress posts.

How to add click to tweet boxes in your WordPress posts

Why Add Click to Tweet Boxes in Your WordPress Posts?

A ‘click to tweet’ button makes it easy for readers to share quotes from your posts and pages.

Visitors can simply click a button to create a tweet that contains the quote, plus a link to the page or post where the quote is featured.

An example of a click to tweet box in WordPress

Depending on how the box is set up, the tweet may even tag your Twitter account.

When social media users see lots of people posting your content, they’re more likely to engage with you.

How to add a 'click to tweet' box to a WordPress website

In this way, click to tweet boxes can increase your blog traffic, get you more followers, and create a buzz around your brand on social media.

All of this can translate to more sales on your online store, new subscribers for your email newsletter, and much more.

With that being said, let’s see how you can easily add click to tweet boxes in your WordPress blog posts.

How to Add Click to Tweet Boxes in Your WordPress Posts

The easiest way to create a click to tweet box is by using Better Click To Tweet. This plugin allows you to add a quote box to any page or post using either a shortcode or a block.

The first thing you need to do is install and activate the Better Click To Tweet plugin. For more details, see our step-by-step guide on how to install a WordPress plugin.

Upon activation, head over to Settings » Better Click To Tweet to configure the plugin’s settings. In the ‘Your Twitter Handle’ field, type the account you want to tag in tweets that get shared.

Configuring the Better Click to Tweet WordPress plugin

There’s no authentication process, so you can add any Twitter account to the plugin’s settings, including an account that you don’t own.

You can also override this setting for individual click to tweet boxes, so it’s easy to tag lots of different accounts across your WordPress blog.

If you use custom short URLs, then make sure to check the box next to ‘Use short URL.’ This will force the plugin to show the WordPress shortlink instead of the full URL, which is important if you use tools to track link clicks in WordPress. Again, you can override this setting for individual click to tweet boxes.

With that done, click on ‘Save Changes.’

How to Add a Click to Tweet Box Using the WordPress Block

You can add a click to tweet box to any page or post using shortcode or a block. Since it’s the easiest method, let’s start with the block.

Simply open the page or post where you want to create a box and then click on the ‘+’ button.

In the popup that appears, start typing in ‘Better Click to Tweet.’ When the right block shows up, click to add it to the page.

Adding a Better Click to Tweet button to WordPress

You can now type in the quote you want to use.

By default, the plugin shows a ‘Click to Tweet’ prompt, but you can replace this with your own messaging. For example, if you’re running a giveaway or contest in WordPress then you might encourage readers to quote the tweet, in order to enter the competition.

An example of a Twitter giveaway

To do this, simply click to select the block.

Then, type your custom messaging into the ‘Prompt’ field.

Customizing the quote tweet block

By default, the plugin will tag the account you added in its settings, but you can override this and tag a different account instead.

To make this change, simply type a different username into the ‘Twitter Username’ field.

Changing the linked Twitter account

Tagging your Twitter account is a great way to get more followers and engagement. However, if you simply want to get more visitors to your website then you can remove this tag, so the quoted tweet simply contains a link.

To do this, click to disable the ‘Include the username in Tweet?’ toggle.

By default, the plugin includes a link to the page or post where the quote box is featured. If you prefer, then you can use a different link instead. This can be useful if you want to get more visitors to a specific page, such as the landing page for a product or service that’s mentioned in the blog post.

To do this, simply type the URL into the ‘Custom URL’ field.

You can also mark the link as nofollow, which is useful if you’re linking to a third-party website such as a client or affiliate marketing partner.

Adding a custom link to a social media block

Another option is removing the link, so the tweet just has the tagged account. This is a good option if you simply want to get more engagement on Twitter, rather than drive people to your website.

To do this, click to disable the ‘Include URL in Tweet’ toggle.

Removing the URL from a click to tweet social media block

When you’re happy with how the quote box is set up, click on the ‘Publish’ or ‘Update’ button to make it live. Now if you visit your WordPress website, you’ll see the quote box in action.

How to Add a Click to Tweet Box Using a Shortcode

If you want to show the same quote on multiple pages, then adding and configuring each box separately can take a lot of time and effort. Instead, it may be easier to paste the same shortcode into multiple locations.

You can also add a box to your WordPress theme’s sidebar or similar section, using a shortcode. For more information on how to place the shortcode, please see our guide on how to add a shortcode in WordPress.

To start, you may want to use the following shortcode:[bctt tweet="Quotable Tweet"]

This will create a tweet that tags the account linked in the plugin’s settings and includes a URL to the current page or post. Be sure to change the words “quotable tweet” in the shortcode to whatever message you want users to share.

If you don’t want to tag an account, then you can use the following instead:[bctt tweet="Quotable Tweet" via="no"]

Want to include a different URL in the tweet? Here’s the shortcode:[bctt tweet="Quotable Tweet." url="http://example.com"]

To remove the link completely, just set it to url="no.” You can also mark the link as nofollow by adding the following to the shortcode: nofollow="yes.”

Bonus: How to Add a Twitter Feed in WordPress

A click to tweet box is a quick and easy way to get engagement on Twitter. However, there are other ways to promote your social media accounts including adding a feed that shows your recent tweets and updates automatically as you make new posts.

The easiest way to do this is by using Smash Balloon Twitter Feed, which is the best Twitter plugin for WordPress.

A Twitter feed, created using Smash Balloon

This plugin allows you to embed actual tweets in WordPress blog posts, so readers can easily comment, like, and retweet the original post.

You can quote your own tweets, or even tweets from a third party. For example, you might embed posts from an industry influencer, an advertising partner, or a happy customer.

For more information, please see our guide on how to add social media feeds to WordPress.

We hope this tutorial helped you learn how to add click to tweet boxes in your WordPress posts. You may also want to learn how to create a contact form in WordPress, or see our expert picks for the best WordPress social media plugins for WordPress.

If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.

The post How to Add Click to Tweet Boxes in Your WordPress Posts first appeared on WPBeginner.

How to Display Instagram Photos in WordPress Sidebar Widget

Do you want to display your Instagram photos in the WordPress sidebar?

Your Instagram posts make great content for your website. By creating an Instagram feed, you can keep your site fresh and interesting while also promoting your Instagram account.

In this article, we’ll show you how to display your Instagram photos and videos in the WordPress sidebar widget.

How to display Instagram photos in WordPress sidebar widget

Why Add an Instagram Feed to Your WordPress Site?

With more than a billion monthly active users, Instagram is a great place to promote your products, services, and blog posts.

Depending on your industry, Instagram may even be the most important part of your social media strategy. For example, Instagram is particularly popular among top fashion blogs, cooking, lifestyle, and photography websites.

However, people won’t see your Instagram posts if they only visit your website. This can make it difficult to grow your Instagram following and get engagement on your photos and videos.

With that being said, it’s a good idea to add an Instagram feed to your WordPress website. By showing your latest posts, you can promote your Instagram account in an engaging and eye-catching way.

This will get more traffic to your Instagram page and encourage visitors to interact with your posts by leaving comments, clicking on the ‘Share’ button, and more.

The feed will also update automatically every time you make a new Instagram post, so it’s a great way to keep your website fresh.

That being said, let’s take a look at how to easily display Instagram photos in the WordPress sidebar widget.

How to Install an Instagram Photos Plugin

The best way to display Instagram photos in a WordPress sidebar or similar widget is by using Smash Balloon Social Photo Feed. This free plugin lets you show photos from one or more Instagram accounts in a fully customizable feed.

After creating a feed, you can add it to the sidebar using either a shortcode or block.

Embedded Instagram feed example

In this guide, we’ll be using the free version of Smash Balloon, as it has everything you need to embed an Instagram feed. However, there’s also a Pro version that allows you to display hashtag feeds, add Instagram shoppable images in WordPress, and more.

Before getting started, you’ll need to connect your Instagram account to a Facebook page. If you have a personal Instagram account, then you may also want to turn it into a business account, as this allows Smash Balloon to show your Instagram bio and header automatically.

For step-by-step instructions on how to do both of these things, check out our FAQ section at the end of the post.

When you’re ready, go ahead and install and activate the Smash Balloon Social Photo Feed plugin. For more details, see our guide on how to install a WordPress plugin.

How to Connect an Instagram Account to WordPress

After activating the plugin, it’s time to connect your Instagram account to WordPress. Simply go to Instagram Feed » Settings and then click on ‘Add New.’

How to create a new social media feed using Smash Balloon

With Smash Balloon Pro, you can create feeds from tagged posts and hashtags, or even create a social wall with content from lots of different websites, including YouTube, Facebook, and Twitter.

Since we’re using the free version, simply select ‘User Timeline’ and then click on ‘Next.’

Smash Balloon's Instagram settings

After that, you’ll need to choose the Instagram account where you’ll get the photos from.

To get started, click on ‘Add Source.’

Connecting Instagram to your WordPress website

On the next screen, choose whether you want to display photos from a personal or business Instagram account.

If you check the box next to ‘Personal,’ then Smash Balloon won’t include the Instagram avatar and bio in your header by default. However, you can always add the avatar and bio manually in the plugin’s settings.

Connecting a personal or business Instagram account to WordPress

After choosing ‘Personal’ or ‘Business,’ go ahead and click on ‘Login with Facebook.’

You can now check the Instagram account that you want to use and click on ‘Next.’

How to display an Instagram feed on your WordPress website

After that, check the box next to the Facebook page that’s linked to your Instagram account.

With that done, go ahead and click on ‘Next.’

Choose a page to connect to WordPress

Smash Balloon will now show a popup listing all the information it will have access to and the actions it can perform.

To restrict Smash Balloon’s access to your Instagram account, click any of the switches to turn it from ‘Yes’ to ‘No.’ Just be aware that this may affect the photos and videos that you can embed on your WordPress blog or website.

With that being said, we recommend leaving all the switches enabled.

When you’re ready, click on ‘Done.’

Adding permissions to your Facebook app

You’ll now see a popup with the Instagram account you just linked to WordPress.

Simply check the box next to the account and then click on ‘Add.’

Selecting an Instagram account

Smash Balloon will now take you back to Instagram Feeds » All Feeds automatically.

To create a feed, simply check the box next to your Instagram account. Then, click on ‘Next.’

How to create an Instagram social media feed

The plugin will now create an Instagram photo feed for your website, and then open that feed in the Smash Balloon editor.

How to Customize Your Instagram Photo Feed

You can use the editor to fine-tune how Instagram photos look on your website.

On the right, you’ll see a preview of your Instagram photo feed. On the left-hand side are all the settings you can use to customize the photo feed.

Smash Balloon's Instagram feed editor

Most of these settings are self-explanatory, but we’ll quickly cover some key areas.

To start, you can change the feed layout and add padding by selecting ‘Feed Layout’ from the left-hand menu. As you make changes, the preview will update automatically, so you can try different settings to see what works best for your Instagram photo feed.

Smash Balloon's Instagram feed layout settings

By default, Smash Balloon shows the same number of posts on desktop computers and mobile devices.

You can preview how the Instagram feed will look on desktop computers, tablets, and smartphones using the row of buttons in the upper-right corner. By testing different layouts, you can create an Instagram feed that looks great, no matter what device the visitor is using.

Previewing your social media feed on mobile, tablets, and desktop

Smartphones and tablets typically have smaller screens and less processing power, so you may want to show fewer photos and videos on mobile devices.

To do this, simply type a different number into the ‘Mobile’ field under ‘Number of Posts.’

Showing a different number of photos on mobile and desktop

By default, the Facebook feed shows fewer columns on smartphones and tablets, compared to desktop computers. This helps your photos and videos fit comfortably on smaller screens.

After testing the mobile version of your WordPress website, you may be unhappy with how the columns look on smartphones and tablets. If this is the case, then you can show fewer columns by changing the numbers in the ‘Columns’ section.

Showing a different number of Instagram columns on different devices

When you’re happy with the changes you’ve made, click on the ‘Customize’ link.

This will take you back to the main Smash Balloon editor, where you can explore the next settings screen, which is ‘Color Scheme.’

Adding a different color scheme to an Instagram feed in WordPress

By default, Smash Balloon uses a color scheme inherited from your WordPress theme, but it also has ‘Light’ and ‘Dark’ themes that you can use.

Another option is creating your own color scheme by selecting ‘Custom’ and then using the controls to change the background color, edit the button color, change the text color, and more.

An Instagram feed with a custom color scheme

By default, Smash Balloon adds a header to your feed, which is your Instagram profile picture and the name of your page. To change how this section looks, click on ‘Header’ in the left-hand menu.

On this screen, you can change the size and color of the header, and show or hide your Instagram bio.

Adding a header to the Instagram feed on your WordPress website

Sometimes, you may want to show a different profile picture. For example, your Instagram avatar may clash with your WordPress theme.

To do this, simply click on ‘Add Image’ under ‘Show custom avatar.’

You can then either choose an image from the WordPress media library or upload a new photo from your computer.

Adding a custom Instagram avatar in WordPress

Similarly, you can show a different bio. For example, you may want to introduce your Instagram feed or encourage people to follow you for more great content.

To replace the Instagram bio, simply type into the ‘Add custom bio’ box.

Creating a custom social media bio for your WordPress website

Smash Balloon automatically analyzes your Instagram photos and displays them at the best resolution. While we recommend using these default settings, it is possible to make the images bigger or smaller.

To change the image size, click on ‘Posts’ from the left-hand menu. Then, select the ‘Images and Videos’ option.

Changing Smash Balloon's image and video resolution settings

You can now choose between thumbnail, medium, and full-size using the dropdown menu.

If you’re unhappy with the results, then you can return to this screen at any point and select ‘Auto-detect (Recommended)’ from the dropdown menu.

Smash Balloon's automatic resolution detection

By default, Smash Balloon adds a ‘Load More’ button to the bottom of your Instagram feed, which allows visitors to scroll through more of your photos and videos.

Since it’s such an important button, you may want to customize it by selecting the ‘Load More Button’ option from the left-hand menu.

Customizing the social media Load More button

Here, you can help ‘Load More stand out by changing its background color, text color, and hover state.

You can also change the button’s label by typing into the ‘Text’ field.

Adding your own messaging to the Instagram button

Another option is to remove the button completely by clicking the ‘Enable’ toggle. In this way, you can encourage people to visit your Instagram by limiting the number of posts they can see on your website.

If visitors like what they see, they may decide to follow you on Instagram using the ‘Follow on Instagram’ button that Smash Balloon adds automatically.

With that in mind, you may want to help the button stand out by selecting ‘Follow Button’ in the left-hand menu.

Here, you can change the button’s background color, hover state, and text color.

Customizing the social media follow button

By default, the button has a general ‘Follow on Instagram’ label.

You can replace this with your own messaging by typing into the ‘Text’ field.

How to create a custom Instagram photo feed for your WordPress website

When you’re happy with how the Instagram feed looks, don’t forget to click on ‘Save’ to store your changes. You’re now ready to add the Instagram feed to your WordPress sidebar widget.

How to Add Your Instagram Photos in WordPress Sidebar Widget

You can add your feed to the sidebar or similar section using the Instagram Feed block.

If you’ve created more than one feed using Smash Balloon, then you’ll need to know the feed’s code.

Simply go to Instagram » All Feeds and then copy the value in the ‘Shortcode’ column.

In the following image, we’ll need to use instagram-feed feed=1.

Adding Instagram photos and videos using a code

With that done, go to Appearance » Widgets in the WordPress dashboard.

Then click on the blue ‘+’ button.

The WordPress widget editor

In the search bar, type in ‘Instagram Feed’ and select the right widget when it appears.

WordPress has a built-in Instagram widget, so make sure you choose the one that shows the official Instagram logo.

The Instagram Feed block

After that, simply drag the widget onto the area where you want to show the Instagram feed, such as the sidebar or similar section.

The widget will automatically show one of the feeds you created using Smash Balloon.

To show a different feed instead, simply type the feed’s shortcode into the ‘Shortcode Settings’ box and then click on ‘Apply Changes.’

Adding an Instagram feed to WordPress using shortcode

You can now click on the ‘Update’ button to make the widget live. For more information, please see our step-by-step guide on how to add and use widgets in WordPress.

If you’re using a block-enabled theme, then you can add an Instagram feed to the sidebar using the full-site editor. To get started, simply go to Appearance » Editor.

Adding an Instagram feed using the full-site editor

In the editor, simply click to select the sidebar section and then click on the ‘+’ button.

You can then start typing in ‘Instagram Feed’ and select the right block when it appears.

Adding an Instagram feed to a block-enabled WordPress theme

By default, the full-site editor will show one of the Instagram feeds you created using Smash Balloon. To show a different feed, simply add the shortcode following the same process described above.

When you’re happy with how the Instagram feed looks, click on ‘Save’ to make your changes live.

How to Display a Specific Instagram Photo in WordPress

Sometimes you may want to show a specific Instagram post on your website. This might be your most popular photo, an evergreen post, or even a social media contest that you’re currently running.

A single Instagram post, embedded in WordPress

In the past, you could easily embed an Instagram post in WordPress using a protocol known as oEmbed. However, Facebook changed the way that oEmbed works, so you can no longer easily embed Instagram photos in WordPress.

The good news is that Smash Balloon can fix the Facebook and Instagram oEmbed issue. This allows you to easily embed a specific Instagram post in any page, post, or widget-ready area, such as the sidebar.

To enable this feature, simply go to Instagram Feed » oEmbeds. You can then click on the ‘Enable’ button.

Enabling the Facebook and Instagram oEmbed feature

After that, go to Appearance » Widgets and click on the blue ‘+’ button.

In the search bar, type in ‘Embed’ to find the right block.

The WordPress Embed block

When the ‘Embed’ block appears, drag it onto the area where you want to show the photo.

In the ‘Embed’ field, simply paste the URL of the Instagram post that you want to show on your website. Then, click on ‘Embed.’

Adding an embed block to your WordPress website

WordPress will now show the specific Instagram post.

If you’re happy with how it looks, then click on ‘Update’ to make it live.

Publishing an Instagram photo in a sidebar widget

Now, if you visit your website, you’ll see the Instagram post live.

If you’re using a block-enabled theme, then you’ll need to add specific Instagram posts using the full-site editor.

To do this, simply enable Smash Balloon’s oEmbed feature and get the Instagram post’s URL by following the same process described above.

After that, open the full-site editor by going to Appearance » Editor in the WordPress dashboard. Once you’re inside the full-site editor, click on the ‘+’ button in the sidebar section and then type in ‘Embed.’

Adding an Embed block using the full-site editor (FSE)

When the right block appears, click to add it to the sidebar.

You can then add the URL for the post you want to embed and click on the ‘Embed’ button.

Adding an Instagram feed using an Embed block

The full-site editor will now show the Instagram post.

If you’re happy with how it looks, then click on ‘Save’ to publish this photo or video to the block-enabled sidebar.

Adding a specific Instagram post to a block-enabled sidebar

FAQs About Displaying Instagram Posts in WordPress

Smash Balloon makes it easy to create a custom Instagram feed or even display specific Instagram posts on your WordPress website.

That being said, here are some of the most frequently asked questions about showing Instagram posts on WordPress.

How Do I Create an Instagram Business Account?

Smash Balloon can display photos from either a personal or business Instagram account.

However, Smash Balloon can’t automatically fetch the Instagram avatar and bio from a personal Instagram account. Instead, you’ll need to add the avatar and bio manually in the plugin’s settings.

With that being said, you may want to check whether you have a personal or business account, and then switch to a business account if necessary.

To do this, simply visit your Instagram account and click on the lined icon in the side menu.

Checking whether your Instagram page is a business or personal account

After that, click on ‘Settings.’

If you don’t have a business account, then this screen will show ‘Switch to professional account’ as the last option.

How to switch to a business Instagram account

If you currently have a personal account and want to switch to a business account, then simply click on this link.

How Do I Connect a Facebook Page to an Instagram Account?

Before you can display Instagram photos in WordPress, you’ll first need to connect your Instagram account to a Facebook page.

To do this, head over to the Facebook page that you want to use and then click on ‘Settings’ in the left-hand menu.

Once you’ve done that, click on ‘Linked Account.’ You can now select ‘Instagram’ and click on the ‘Connect’ button.

Linking an Instagram business account to a Facebook page

Facebook will now show all the actions it can perform, and the information it can access.

If you’re happy with this, then click on the ‘Connect’ button.

Linking Instagram and Facebook

Just be aware that the people who manage your Facebook page may be able to see your Instagram messages and respond to them. If you want to stop this and keep your messages private, then click to disable the slider.

When you’re ready to move to the next screen, click on ‘Confirm.’

Restricting access to your Instagram messages

This opens a popup where you can type in your Instagram username and password.

After that, click on the ‘Log in’ button.

Logging into your Instagram account

After a few moments, you’ll see a message saying that your Instagram and Facebook accounts are now connected.

We hope this article helped you learn how to display Instagram photos in a WordPress sidebar widget. You may also want to see our guide on how to create a custom Facebook feed in WordPress, or see our expert pick of social proof plugins for WordPress and WooCommerce.

If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.

The post How to Display Instagram Photos in WordPress Sidebar Widget first appeared on WPBeginner.

A Guide To Accessible Form Validation

When it comes to form validation, we can explore it from two perspectives: usability and accessibility. “What’s the difference between usability and accessibility?” you may ask. Let’s start from there.

Usability

Usability is about improving a given action until it’s as easy and delightful as possible. For example, making the process of fixing an invalid field easier or writing better descriptions so the user can fill the field without facing an error message.

To get a really good grasp of the challenges in this process, I highly recommend you to read the deep-dive “Designing better inline validations UX” from Vitaly. There, you’ll learn about the different approaches to validate a field and what are the caveats and trade-offs of each one.

Accessibility

Choosing the best UX approach is just half of the challenge. The other half is ensuring that any person knows the field is invalid and easily understands how to fix it. That’s what I’ll explore through this guide.

You can look at ‘Accessibility’ and ‘Usability’ as two equally important universes with their own responsibilities. Accessibility is about ensuring anyone can access the content. Usability is about how easy it is to use the website. Once overlapped will take ‘User Experience’ to its best.

With these two concepts clarified, we are now ready to dive into accessible validations.

Accessibility In Forms

Before we get into validation, let me recap the accessibility fundamentals in forms:

  • Navigation
    The form can be navigated using only the keyboard, so people who don’t use a mouse can still fill and submit the form. This is mostly about setting a compliant focus indicator to each form control.
  • Context
    Each form field must have an accessible name (label), so people who use assistive technologies can identify each field. For example, screen readers would read a field name to its user.

Screen Readers In Forms

Similar to browsers, screen readers (SR) behave slightly differently from each other: different shortcuts, different semantic announcements, and different features support. For example, NVDA works better with Firefox, while VoiceOver works best with Safari, and both have slightly different behaviors. However, this shouldn’t stop us from building the common solid foundations that are strongly supported by all.

A while ago, I asked on Twitter how screen reader users navigate forms. Most prefer to Tab or use special shortcuts to quickly jump through the fields but oftentimes can’t do it. The reason is that we, developers, forget to implement those fields with screen readers in mind most of the time.

Currently, many of the field validations can’t be solved with native HTML elements, so we are left with the last resource: ARIA attributes. By using them, Assistive Technologies like screen readers will better describe a given element to the user.

Through the article, I’m using VoiceOver in macOS Catalina for all the scenarios. Each one includes a Copeden demo and a video recording, which hopefully will give you a better idea of how screen readers behave in forms, field descriptions, and errors.

The Field Instructions

Field Description

The field label is the first visual instruction to know what to fill in, followed by a description when needed. The same way sighted users can see the description (assuming a color contrast that meets WCAG 1.4.3 Contrast Minimum), the SR users also need to be aware of it.

To do so, we can connect the description to the input by using the aria-describedby attribute, which accepts an id pointing to the description element. With it, SR will read the description automatically when the user focuses on the field input.

<!-- note: highlight the aria-describedby -->
<label for="address">Your address</label>
<input id="address" type="text" aria-describedby="addressHint"/>
<span id="addressHint">Remember to include the door and apartment.</span>

In this field, it would cause more harm than good to connect the entire description to the aria-describedby. Instead, I prefer to connect a short description that hints to the user about the full description so they can navigate to it on their own.

<input id="days" type="text" aria-describedby="daysHintShort"/>
<div class="field-hint">
  <span id="daysHintShort" hidden>
    <!-- This text is announced automatically when the input is focused
    and ignored when the screen reader users navigate to it. -->
    Below it's explained how these days influence your benefits.
  <span>
  <div>Depending on how many days....</div>
</div>

As this short description is exclusive to assistive technologies only, we need to hide it from sight users. A possibility could be using the .sr-only technique. However, a side-effect is that the screen reader user would bump into it again when moving to the next element, which is redundant. So, instead, let’s use the hidden attribute, which hides the short description from assistive technologies altogether, but still lets us use the node’s contents as the inputs’ description.

<input id="days" type="text" aria-describedby="daysHintShort"/>
<div class="field-hint">
  
<span id="daysHintShort" hidden>
    <!-- This text is announced automatically when the input is focused,
    and ignored when the screen reader users navigates to it. -->
    Below it's explained how these days influence your benefits.
  </span>
  <div>Depending on how many days....</div>
</div>

I find this pattern very useful for fields with long descriptions or even complex validation descriptions. The tip here is to hint to the users about the full instructions, so they won’t be left alone guessing about it.

Visually most people will recognize this pattern. However, people who use SR will get confused. For instance, Voice Over will announce “Address star, edit text.” Some screen readers might completely ignore it, depending on how strict the verbosity settings are.

This is a perfect scenario of an element that, although it’s visually useful, it’s far from ideal for SR users. There are a few ways to address this asterisk pattern. Personally, I prefer to “hide” the asterisk using aria-hidden="true", which tells all assistive technologies to ignore it. That way, Voice Over will just say “Address, edit text.”

<label for="address" class="field-label">
  Address <span class="field-star" aria-hidden="true">*</span>
</label> 

The Semantic Clue

With the visual clue removed from AT, we still need to semantically tell the input is required. To do so, we could add the required attribute to the element. With that, the SR will say, “Address, required, edit text.”

<input id="address" type="text" required />

Besides adding the necessary semantics, the required attribute also modifies the form behavior. On Chrome 107, when the submit fails, it shows a tooltip with a native error message and focuses the required empty field, like the following:

The Flaws In Default Validations

Probably your designer or client will complain about this default validation because it doesn’t match your website aesthetics. Or your users will complain the error is hard to understand or disappears too soon. As currently, it’s impossible to customize the styling and behavior, so we’ll see ourselves forced to avoid the default field validation and implement our own. And just like that, accessibility is compromised again. As web creators, it’s our duty to ensure the custom validation is accessible, so let’s do it.

The first step is to replace required with aria-required, which will keep the input required semantics without modifying its style or behavior. Then, we’ll implement the error message itself in a second.

<!-- note: this would be a diff -->
<input id="address" type="text" required="required" />
<input id="address" type="text" aria-required="true" />

Here’s a table comparing side by side the difference between required and aria-required:

Function required aria-required
Adds semantics Yes Yes
Prevents invalid submit Yes No
Shows custom error message Yes No
Auto-focus invalid field Yes No

Reminder: ARIA attributes never modify an element’s styles or behavior. It only enhances its semantics.

The Error Message

From a usability standpoint, there’s a lot to take into consideration about error messages. In short, the trick is to write a helpful message without technical jargon that states why the field is incorrect and, when possible, to explain how to fix it. For a deep dive, read how to design better error messages by Vitaly and how Wix rewrote all their error messages.

From an accessibility standpoint, we must ensure anyone not only knows that the field is invalid but also what’s the error message. To mark a field as invalid, we use the ARIA attribute aria-invalid="true", which will make the SR announce that the field is invalid when it’s focused. Then, to also announce the error, we use aria-describedby we learned about before, pointing to the error element:

<input
  id="address"
  type="text"
  required="required"
  aria-invalid="true"
  aria-describedby="addressError addressHint"
/>
<span>
  <p id="addressError">Address cannot be empty.</p>
  <p id="addressHint">Remember to include the door and apartment.</p>
</span>

Invalid Field With Description

A good thing about aria-describedby is that it accepts multiple ids, which is very useful for invalid fields with descriptions. We can pass the id of both elements, and the screen reader will announce both when the input is focused, respecting the order of the ids.

<input
  id="address"
  type="text"
  required="required"
  aria-invalid="true"
  aria-describedby="addressError addressHint"
/>
<span>
  <p id="addressError">Address cannot be empty.</p>
  <p id="addressHint">Remember to include the door and apartment.</p>
</span>

Open the Pen Field Validations — aria-invalid by Sandrina Pereira.

The Future Of ARIA Errors And Its Support

An ARIA attribute dedicated to errors already exists — aria-errormessage — but it’s not yet supported by most screen readers. So, for now, you are better off avoiding it and sticking with aria-describedby.

In the meantime, you could check A11Ysupport to know the support of a given ARIA attribute. You can look at this website as the “caniuse” but for screen readers. It contains detailed test cases for almost every attribute that influences HTML semantics. Just pay attention to the date of the test, as some tests might be too old.

Dynamic Content Is Not Announced By Default

Important to note that although aria-describedby supports multiple ids, if you change them (or the elements’ content) dynamically while the input is focused, the SR won’t re-announce its new content automatically. The same happens to the input label. It will only read the new content after you leave the input and focus it again.

In order for us to announce changes in content dynamically, we’ll need to learn about live regions. Let’s explore that in the next section.

Moments Of Validation

The examples shown so far demonstrate ARIA attributes in static fields. But in real fields, we need to apply them dynamically based on user interactions. Forms are one of the scenarios where JavaScript is fundamental to making our fields fully accessible without compromising modern interactive usability.

Regardless of which moment of validation (usability pattern) you use, any of them can be accomplished with accessibility in mind. We’ll explore three common validation patterns:

  • Instant validation
    The field gets validated on every value change.
  • Afterward validation
    The field gets validated on blur.
  • Submit validation
    The field gets validated on the form submit.

Instant Validation

In this pattern, the field gets validated every time the value changes, and we show the error message immediately after.

In the same way, as the error is shown dynamically, we also want the screen reader to announce it right away. To do so, we must turn the error element in a Live Region, by using aria-live="assertive". Without it, the SR won’t announce the error message, unless the user manually navigates to it.

Open the Pen Field Validations - instant validation by Sandrina Pereira.

Some nice to know about this example:

  • While the input is valid, the aria-invalid can be "false" or be completely absent from the DOM. Both ways work fine.
  • The aria-describedby can be dynamically modified to contain one or multiple ids. However, if modified while the input is focused, the screen reader won’t re-announce its new ids — only when the input gets re-focused again.
  • The aria-live attribute holds many gotchas that can cause more harm than good if used incorrectly. Read “Using aria-live” by Ire Aderinokun to better understand how Live Regions behave and when (not) to use it.
  • From a usability perspective, be mindful that this validation pattern can be annoying, the same way it’s annoying when the error shows up too early while we are still typing our answer.

Afterward Validation

In this pattern, the error message is only shown after the user leaves the field (on blur event). Similar to the ‘Instant Validation’, we need to use the aria-live so that the user knows about the error before start filling the next elements.

Usability tip: I personally prefer to show the on-blur error only if the input value changes. Why? Some screen reader users go through all the fields to know how many exist before starting to actually fill them. This can happen with keyboard users too. Even sight users might accidentally click on one of the fields while scrolling down. All these behaviors would trigger the on-blur error too soon when the intent was just to ‘read’ the field, not to fill it. This slightly different pattern avoids that error flow.

Open the Pen Field Validations - afterward validation by Sandrina Pereira.

Submit Validation

In this pattern, the validation happens when the user submits the form, showing the error message afterward. How and when exactly these errors are shown depends on your design preferences. I’ll go through two of the most common approaches:

In Long Forms

In this scenario, I personally like to show an error summary message, usually placed right before the submit button, so that the chances of being visible on the screen are bigger. This error message should be short, for example, “Failed to save because 3 fields are invalid.”

It’s also common to show the inline error messages of all invalid fields, but this time without aria-live so that the screen reader doesn’t announce all the errors, which can be annoying. Some screen readers only announce the first Live Region (error) in the DOM which can also be miss-leading.

Instead, I add the aria-live="assertive" only to the error summary.

Open the Pen Field Validations - on submit - error summary by Sandrina Pereira.

In the demo above, the error summary has two elements:

<p aria-live="assertive" class="sr-only">
  Failed to save because 2 fields are invalid.
</p>
<p aria-hidden="true">
  Failed to save because 2 fields are invalid.
</p>
  1. The semantic error summary contains a static error summary meant to be announced only on submit. So the aria-live is in this element, alongside the .sr-only to hide it visually.
  2. The visual error summary updates every time the number of invalid fields changes. Announcing that message to SR could be annoying, so it’s only meant for visual updates. It has the aria-hidden so that the screen readers users don’t bump into the error summary twice.

Check the screen reader demo below:

In Short Forms

In very short forms, such as logins, you might prefer not to show an error summary in favor of just the inline error messages. If so, there are two common approaches you can take here:

  1. Add an invisible error summary for screen readers by using the .sr-only we learned above.
  2. Or, when there’s just one invalid field, focus that invalid field automatically using HTMLElement.focus(). This helps keyboard users by not having to tab to it manually, and, thanks to aria-describedby, will make screen readers announce the field error immediately too. Note that here you don’t need aria-live to force the error announcement because the field getting focused is enough to trigger it.

Open the Pen Field Validations - on submit - auto-focus by Sandrina Pereira.

Accessibility Comes Before Usability

I must highlight that this is just one approach among others, such as:

  • Error text: It can be just a simple text or include the number of invalid fields or even add an anchor link to each invalid field.
  • Placement: Some sites show the error summary at the top of the form. If you do this, remember to scroll and focus it automatically so that everyone can see/hear it.
  • Focus: Some sites focus on the error summary, while others don’t. Some focus on the first invalid field and don’t show an error summary at all.

Any of these approaches can be considered accessible as long it’s implemented correctly so that anyone can perceive why the form is invalid. We can always argue that one approach is better than the other, but at this point, the benefits would be mostly around usability and no longer exclusively about accessibility.

Nevertheless, the form error summary is an excellent opportunity to gracefully recover from a low moment in a form journey. In an upcoming article, I will break down these form submit patterns in greater detail from both accessibility and usability perspectives.

Testing Field Validations

Automated accessibility tools catch only around 20-25% of A11Y issues; the more interactive your webpage is, the fewer the bugs it catches. For instance, those tools would not have caught any of the demos explored in this article.

You could write unit tests asserting that the ARIA attributes are used in the right place, but even that doesn’t guarantee that the form works as intended for everyone in every browser.

Accessibility is about personal experiences, which means it relies a lot on manual testing, similar to how pixel-perfect animations are better tested manually too. For now, the most effective accessibility testing is a combination of multiple practices such as automated tools, unit tests, manual tests, and user testing.

In the meantime, I challenge you to try out a screen reader by yourself, especially when you build a new custom interactive element from scratch. You’ll discover a new web dimension, and ultimately, it will make you a better web creator.

Things To Keep In Mind For Accessible Fields

Auto Focusing Invalid Inputs

Above, I mentioned one possible pattern of automatically focusing the first invalid field, so the user doesn’t need to manually navigate to it. Depending on the case, this pattern might be useful or not. In doubt, I prefer to keep things simple and not add auto-focus. If not obvious, let the user read the summary error message, understand it and then navigate to the field by themselves.

Wrapping Everything Inside <label>

It might be tempting to wrap everything about a field inside the <label> element. Well, yes, the assistive technologies would then announce everything inside automatically on input focus. But, depending on how ‘extensive’ the input is, it might sound more confusing than helpful:

  • It’s not clear for screen reader users what exactly the label is.
  • If you include interactive elements inside the label, clicking on them might conflict with the automatic input focus behavior.
  • In unit tests (e.g., Testing Library), you can’t target an input by its label.

Overall, keeping the label separate from everything else has more benefits, including having grainier control over how elements are announced and organized.

Disabling The Submit Button

Preventing the user from submitting an invalid form is the most common reason to disable a button. However, the user probably won’t understand why the button is disabled and won’t know how to fix the errors. That’s a big cognitive effort for such a simple task. Whenever possible, avoid disabled buttons. Let people click buttons at any time and show them the error message with instructions. In the last instance, if you really need a disabled button, consider making it an inclusive disabled button, where anyone can understand and interact with it.

Good UX Is Adaptable

Most physical buildings in the world have at least two ways to navigate them: stairs and lifts. Each one has its unique UX with pros and cons suited for different needs. On the web, don’t fall into the trap of forcing the same pattern on all kinds of users and preferences.

Whenever you find an A11Y issue in a given pattern, try to improve it, but also consider looking for an alternative pattern that can be used simultaneously or toggled.

Remember, every person deserves a good experience, but not every experience is good for everyone.

Wrapping Up

Field validations are one of those web concepts without dedicated HTML elements that suit modern web patterns, so we need ARIA to fill in the gaps. In short, this article covered the most common attributes for field validations that make a difference for many people in their web journey:

  • aria-required: To mark a field as required.
  • aria-invalid: To mark the field as invalid.
  • aria-describedby: To connect the description and error message to the input.
  • aria-live: To announce dynamic error messages.

Accessibility is about people, not about ARIA. Besides those attributes, remember to review your colors, icons, field instructions, and, equally important, the validations themselves. Your duty as a web creator is to ensure everyone can enjoy the web, even when a form fails to submit.

Last but not least, I’d like to appreciate the technical review from Ben Mayers, Kitty Giraudel, and Manuel Matuzović. Because sharing is what makes us better. <3

WCAG References

All the practices we explored in this article are covered by WCAG guideline “3.3 Input Assistance”:

The more I learn about web accessibility, the more I realize accessibility goes beyond complying with web standards. Remember, the WCAG are ‘guidelines’ and not ‘rules’ for a reason. They are there to support you, but if you suspect a guideline doesn’t make sense based on your diverse user research, don’t be afraid to question it and think outside the box. Write about it, and ultimately guidelines will evolve too.

How to Display Author’s Twitter and Facebook on the Profile Page

Want to display your author’s Twitter and Facebook links on their WordPress profile page?

By default, WordPress user profile pages don’t include fields for adding social media profiles such as Facebook or Twitter.

In this article, we will show you how to easily display your author’s Twitter and Facebook profile links in WordPress.

How to Display Author's Twitter and Facebook on the Profile Page

Why Display Author’s Twitter and Facebook Profiles on Your Site?

Social media platforms are an important source of traffic for your WordPress website. That’s why we put together a social media cheat sheet that will help you set up your social media profiles the right way.

Your authors will also have their own social profiles, and you can display them on your site to build credibility with your readers and strengthen your site’s authority.

Your visitors will be able to follow their favorite authors on social media and discover new articles on your site sooner. You can also add their social media profiles to your site’s schema, boosting your site’s trust score on Google and other search engines.

With that being said, let’s take a look at how to display an author’s Twitter and Facebook links on their user profile page.

Some of the best WordPress themes will display an author info box below each article. You can use this feature to display simple links to your author’s social profiles.

Simply go to Users » All Users in your WordPress admin panel and click the name of the author, or the ‘Edit’ link underneath to open the Edit User page.

Click on a User in the All Users List

Next, you should scroll down to the ‘About the user’ section and look for the ‘Biographical Info’ box.

If it is there, then your theme has built-in support for an author box.

Adding HTML Social Links to the User Bio

Here you can type a description of the author using text or HTML. You can manually add HTML links for the author’s Twitter and Facebook profile URLs, like this:

ADD BIO HERE. Follow them on <a href="https:/twitter.com/USERNAME">Twitter</a> and <a href="https://facebook.com/USERNAME">Facebook</a>.

Make sure you add a short biography about the author and change ‘USERNAME’ to their actual Twitter and Facebook usernames.

Once you’re finished, don’t forget to scroll to the bottom of the page and click the ‘Update User’ button to store your settings.

You will now see Twitter and Facebook links with the user’s bio on the posts that they write. Here’s how it looks on our demo website:

Preview of Author Bio with Twitter and Facebook Links

Method 2: Displaying Social Icons With an Author Bio Box Plugin

If your theme doesn’t display an author bio box, or if you want one that is more customizable and displays social icons instead of links, then you can use a plugin.

Simple Author Box is the best free author bio box plugin. It lets you customize nearly every aspect of your author bio box, including adding social media links for your authors.

First, you need to install and activate the Simple Author Box plugin. For more details, see our step-by-step guide on how to install a WordPress plugin.

If you want even more features, then there’s a pro version that lets you display an author box before or after content, add website links, get more social icon styles, include guest authors and co-authors, and more.

Upon activation, the plugin adds social media fields to each user profile. Simply navigate to the Users » All Users page in your WordPress admin area and click on the author’s name or the ‘Edit’ link below.

Click on a User in the All Users List

Tip: To quickly edit your own user profile, you can go to the Users » Profile page.

When you scroll to the bottom of the author profile, you will notice some new fields that have been added by the Author Bio Box plugin.

Scroll until you see the section labeled ‘Social Media Links (Simple Author Box).’ Now you need to select ‘Facebook’ from the drop-down menu, and then paste the URL to their Facebook profile into the next field.

Adding a Facebook Profile Using Author Bio Box

Now you can click the button labeled ‘+ Add new social platform.’

A new drop-down and field will be added where you can add their Twitter URL.

Adding Facebook and Twitter Links Using Simple Author Box

Once you’ve done that, make sure you click the ‘Update User’ button to store your settings.

Note: Don’t worry if the Facebook and Twitter URLs vanish after clicking the button. At the time of writing, there is a minor bug that hides the URLs, but the settings have been saved.

Now Facebook and Twitter icons will be displayed with the author’s profile at the bottom of their posts. Clicking these icons will take your visitors to their social profiles, but these links will open in the same window as your blog.

Preview of Simple Author Box with Social Icons

If you would prefer that the links open in a new tab, then you can navigate to the Appearance » Simple Author Box page and then click on the Elements tab. Once there, you need to find the option to ‘Open social icon links in a new tab’ and toggle it to the on position.

Open Simple Author Box Icons in a New Tab

Now the author’s social profiles will open in a new tab.

Method 3: Adding Social Profiles to Your Site’s Schema for SEO

All in One SEO (AIOSEO) is the original WordPress SEO plugin that’s used on over 3 million websites. It can also be used to add social profile fields on the author’s profile page.

Unlike the other methods, this method will improve your website’s SEO since AIOSEO adds these social profiles to your site’s schema markup.

The problem is that AIOSEO does not automatically display them in the author bio. But don’t worry, we will show you how to do that.

For this tutorial, we’ll use the free version of All in One SEO since it allows you to add social profiles for your website and each user. However, AIOSEO Pro offers even more features to help you rank better in search engine results pages.

The first thing you need to do is install the free All in One SEO Lite plugin. For more details, see our step-by-step guide on how to install a WordPress plugin.

Once you have the AIOSEO plugin set up, you need to head over to the Users » All Users page, and then click on the author’s name or the ‘Edit’ link just below.

Click on a User in the All Users List

This will open the Edit User page for that author.

Notice that AIOSEO has added a Social Profiles tab at the top of the page. You need to click on that tab now.

All in One SEO Social Profiles Tab

You can now enter the URL to the user’s social profiles in the boxes provided, such as:

https://facebook.com/johnsmith345
https://twitter.com/johnsmith345

Note that simply adding the username is not enough.

Alternatively, if the author uses the same username on multiple social networks, then you can click the box labeled ‘Use the same username for multiple social networks.’

Quickly Adding Multiple Social Networks With Same Username

You can then type in that username and check the social networks it is used on. For other social networks, you can simply type the full URL as before.

Once you are done, click on the ‘Update User’ button at the bottom of the page to store your changes.

Pro Tip: If you have Twitter and Facebook profiles for your business or website, then you can add these to your site’s schema in a similar way by visiting All in One SEO » Social Networks and adding the links on the Social Profiles tab.

The author’s social media profiles have now been added to your site’s schema, helping search engines understand your site better. But they are not yet being displayed on your website.

Displaying AIOSEO Author Twitter and Facebook Links in Your Theme

Now you need to display these fields as links in your theme.

If you are an advanced user, then you can display links from All in One SEO’s social profiles by editing your WordPress theme files. If you haven’t done this before, then check out our guide on how to copy and paste code in WordPress.

Note: If you’re not familiar with editing your theme’s core files and adding custom code, then we recommend you use AIOSEO to add the social profiles to your site’s schema, and then display them on your website using method 1 or method 2 above.

Advanced users can add the following code to your theme files where you want to display the author profile links.

<?php
$twitter = get_the_author_meta( 'aioseo_twitter', $post->post_author );
$facebook = get_the_author_meta( 'aioseo_facebook', $post->post_author );
echo '<a href="' . $twitter .'" rel="nofollow" target="_blank">Twitter</a> | <a href="'. $facebook .'" rel="nofollow" target="_blank">Facebook</a>';
?>

Save your changes and view a post on your website.

Here’s how it looks on our demo website. We added the code snippet to the biography.php file in the template-parts folder of the Twenty Sixteen theme.

Displaying AIOSEO Social Profiles in Your Theme Using Code

We hope this article helped you learn how to display the author’s Twitter and Facebook profile links in WordPress. You may also want to see our guide on how to display recent tweets or how to display your Facebook timeline in WordPress.

If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.

The post How to Display Author’s Twitter and Facebook on the Profile Page first appeared on WPBeginner.

Multichannel Contact Center Starter Guide: Learn the Basics

Set up your multichannel contact center with Nextiva, a cloud-based option that provides easy access to remote IT and customer support teams. Sign up now and get 30% off on all plans

Effective customer service involves multiple touchpoints, including voice, social media, SMS, and web. Case in point—customers will engage with three to five different channels to resolve a request. 

If your team isn’t responsive on these channels, your organization will likely collect bad customer reviews. 

The good news is that you can set up a multichannel contact center to keep up with the evolving demands of your customer’s communication preferences without investing in increased physical infrastructure. 

The 9 Best Call Center Software for a Multichannel Contact Center

Our team researched the best call center software and found nine affordable cloud-based solutions you can use to strengthen your customer relationships. Check out our in-depth reviews to find the best software to power your support.

  • Nextiva — Best overall 
  • RingCentral — Easiest deployment for SMBs
  • Cloudtalk — Best call center software for remote teams
  • 8×8 — Best contact center software for enterprise-grade security
  • Zendesk Talk — Best call center software for support and automated ticketing
  • Freshdesk Contact Center — Simple contact center software for teams of all sizes
  • Five9 — Best all-in-one contact center software
  • CrazyCall — Best call center software for outbound sales
  • Talkdesk — Best call center software for end-to-end customer experience

What Is a Multichannel Contact Center?

A multichannel contact center is a call center software that integrates multiple communication channels, such as voice, social media, SMS, email, interactive voice response (IVR), and web chat, to provide customers with seamless support. 

Customer support executives use this center to quickly connect with customers from one central software platform, regardless of where they contact you. It enables you to engage over digital channels outside a standard call center and custom call routing, thereby improving business efficiency and customer satisfaction.

How Does a Multichannel Contact Center Work?

Customer experience is subjective. A platform one customer enjoys may not necessarily be the preferred method of communication for another. 

With a multichannel contact center, you can give customers a choice to contact you in whichever way they feel most comfortable. Think of it as offering customers several options to interact with your brand.

Here’s a list of channels a multichannel contact center uses to offer efficient customer support across platforms:

Phone Support

Allowing customers to contact you via call facilitates quick and convenient problem-solving. Also, listening to another person’s voice can be reassuring for many, especially those trying to sort out urgent problems. 

Most millennials indeed prefer automated channels, but almost all boomers still prefer talking to an actual person. Therefore, it’s better to offer phone support as part of your customer service.

Email

Email is a super popular digital support channel because of its smooth and hassle-free experience. The fact that it’s relatively low effort is another advantage, where nobody has sent by phone or computer waiting for a reply from an available agent. 

Furthermore, customers communicating in a foreign language can take their time composing an email, making it ideal for exchanging complex or sensitive information.

Text Messaging

Text messaging or SMS is great for sending appointment reminders or providing customers with quick information at their fingertips. 

You can send both SMS and MMS messages from any business number you want, saving time that would have otherwise been wasted by making phone calls or holding video meetings.

Social Media

Customers are increasingly reaching out to companies through social media platforms like Facebook, Instagram, Twitter, LinkedIn, and others via public posts and direct messages.

Naturally, your business should also offer this communication channel to cater to this demographic. With customers expecting prompt and accurate answers, you need a support team to engage with them on social media within operating hours.

Knowledge Base

Use a multichannel contact center to provide users access to a library of information. 

Not everybody wants real-time support, so it’s best to offer other self-help communication channels. A comprehensive knowledge base filled with relevant articles and information is a great example here to help customers troubleshoot issues themselves.

Live Chat

Live chat has quickly become a hot favorite communication channel among customers because they provide instant answers, regardless of the location and device. 

This tool can also be used with a knowledge base, where your customer support agents forward customers in the live chat links to relevant articles stored in the knowledge base.

What Are the Benefits of a Multichannel Contact Center?

More and more companies are moving towards multichannel contact centers for their businesses. But before you hop onto the bandwagon, you should understand exactly what you stand to gain from this move.

Here are the key benefits of using this type of platform:

Centralized Customer Information

Although your company offers support across multiple channels, you enjoy access to all information from a single place. Even if a customer uses all the channels of communication, from self-help FAQs to social media platforms to live chat, you’ll have a single record of that customer and all the interactions between them and your team. 

Your customer agent will have access to all the information across communication channels, enabling them to provide the best possible support at every touch point. This single view of the customer also improves customer analytics results, giving you in-depth insights into customer preferences and behavior.

Improved Customer Engagement

It’s likely effective customer engagement is your #1 priority, and rightly so.

Setting up a multichannel contact center allows you to open up all communication channels with your customers and create and maintain a two-way dialogue, helping improve customer engagement, satisfaction, and loyalty.

Accelerated Customer Support 

In today’s highly dynamic landscape, customers have a low tolerance for slow service and need instant gratification. They’ll jump from one channel to another and expect businesses to keep up.

With a multichannel contact center, you can be available at all the customer touchpoints, enabling your customer support team to nip most customer issues and drastically cut down waiting time.

Deeper Customer Analytics and Contact Center Analytics

A multichannel contact center provides single-point access to customer information, a knowledge repository of customer behavior history, and customer preferences, resulting in better customer analytics.

Use the valuable insights to educate your team about your target customers and customer segments and accordingly tweak your services, products, messaging, and selling tactics to maximize impact. 

Higher Support Agent Productivity

In a multichannel contact center, all communication happens through a single application, which means there’s only one version of the customer data. This allows an agent to multi-task and swiftly move across channels as possible and actively answer customer queries.

Enhanced Brand Image

Gone are the days when contact centers only focused on answering inbound customer calls. 

Today, they allow you to proactively answer customer comments at all touch points and better respond to any changes in customer sentiment. This will help you create a positive brand match of a customer-friendly organization that’s genuinely interested in what customers have to say.

What Is the Difference Between Multichannel Contact Centers and Omnichannel Contact Centers?

An omnichannel contact center is a type of multichannel contact center that lets you support customers across different channels simultaneously.

Suppose a customer reaches out to you from your website’s online chat and then calls the helpline for an update. With an omnichannel contact center, your customer support agents will know all the customer’s information from the online chat, allowing them to take the conversation forward on the phone instead of asking the customer to repeat their issue from the beginning. 

While both multichannel and omnichannel contact centers offer you a choice of custom communication channels, they take different approaches.

The main difference is that while multichannel approaches keep each channel separate, forcing employees to use different tools when switching methods, omnichannel strategies integrate the different marketing channels, enabling employees to access each source from a single location.

This also means a single team can handle requests on all channels using an omnichannel contact center. But you’ll need more than one team to handle customer support requests efficiently across all channels if you have a multichannel call contact center.

Screenshot of Nextiva contact center webpage
Whether you opt for a multichannel or omnichannel solution, Nextiva can help.

Is a Multichannel Contact Center as Good as an Omnichannel Contact Center?

Honestly, no.

A multichannel contact center has several advantages, but it also has certain shortcomings. The biggest one is that while you can communicate with customers across multiple touchpoints, the channels aren’t integrated. 

On the other hand, agents can seamlessly shift a conversation from one channel to another at the click of a button in an omnichannel environment. 

Suppose your customer support agent wants to shift a customer from live chat to phone support for quicker issue resolution. With an omnichannel contact center, they can do this without extra hassle.

3 Multichannel Contact Center Best Practices

Below are some best practices to help you develop your company’s multichannel contact center. Let’s take a look.

Include Communication Channels Your Customers Prefer

A 2021 NTT report emphasized the importance of offering communication channels your customers actually frequent. According to it, “The number of channels offered isn’t as important as how effective they are in serving different customer segments, reducing customer effort and enabling consistent customer experience across all customer journeys.”

Currently, inbound voice remains the go-to channel for customer service contact centers. But you can also include other channels based on the activity, such as SMS texting and a website chatbot for scheduling an appointment or making routine orders.

The channels you feature in your multichannel contact center should be determined based on the age and demographic of your customer base. Case in point—audiences under 25 prefer social media platforms to resolve issues, while audiences over 25 prefer speaking to customer agents over the telephone.

Include a Self-Service Option for FAQs

When seeking answers or troubleshooting issues, customers don’t like to wait even a few minutes. 

It’s why you should consider incorporating IVR into your multichannel experience that allows customers to listen to and press a number on the dial pad to learn more information—or get connected to a customer agent. Instead of agents manually routing calls to the right department, your customers will be auto-routed to the information they need. 

Ensure Your Supports Agent are Well-Prepared to Handle Multiple Touchpoints

Your customer support agent should be well-equipped to handle direct customer requirements and queries to avoid frustrations and improve customer experience. 

While hiding and training multichannel contact center agents is a no-brainer, you can also include AI and cloud management tools along with CRM and knowledge bases to offer the best possible customer support.

Final Thoughts About Multichannel Contact Center

A multichannel contact center creates the ultimate win-win situation for the customers and the business. 

Engaging with your customers on multiple digital channels, from voice to email to social media, allows you to take your first steps toward improving your customer journey and strengthening your brand to generate more revenue.

Want to learn more about delivering the best possible customer support? Check out other guides from Quicksprout:

Mastodon vs. Twitter

I'm not understanding the recent obsession with companies switching their social presence from Twitter to Mastodon. Whatever you think of Elon Musk, how does that affect someone's day to day use of Twitter? Mastodon looks to me, at least at the surface, as just a Twitter clone. What am I missing?

How to Do a Twitch Giveaway in WordPress (Step-by-Step)

Do you want to do a Twitch giveaway in WordPress?

Giveaways can help you get more followers on your Twitch channel. They’re also a great way to engage with the people who already watch you on Twitch.

In this article, we’ll show you how to run a Twitch giveaway in WordPress.

How to do a Twitch giveaway in WordPress

Why Do a Twitch Giveaway in WordPress?

There are many reasons why you may want to do a Twitch giveaway.

Giveaways are popular because they can help you reach a wider audience and increase your followers. You can then ask people to follow you on Twitch, in order to enter your contest.

A Twitch giveaway

You can also use a contest to engage with the people who already watch your Twitch channel.

A giveaway with a valuable prize is much more engaging than other content, so watchers who typically don’t interact with you may decide to visit your WordPress website in order to enter the competition. This means you can increase your blog traffic and get more engagement from your Twitch audience.

You can also offer multiple ways to earn more giveaway entries by encouraging users to follow you on Instagram, YouTube, Twitter, join your email list, etc, so you can get your Twitch followers to follow you on other social channels.

With that being said, let’s see how you can do a Twitch giveaway on your WordPress website.

How to Do a Twitch Giveaway in WordPress (Step-by-Step)

The easiest way to create a Twitch giveaway is by using RafflePress. It’s the best WordPress giveaway plugin and lets you create all kinds of contests using a simple drag-and-drop editor.

There is a free version of RafflePress that makes it easy to run giveaways and competitions no matter what your budget. However, in this guide, we’ll be using RafflePress pro as it has ‘Follow us on Twitch’ as an entry method.

A Twitch giveaway, created using RafflePress and WordPress

First, you’ll need to install and activate the RafflePress plugin. If you need help, then please see our guide on how to install a WordPress plugin.

Upon activation, you’ll see the RafflePress welcome screen in the WordPress dashboard. You can now go ahead and enter your license key.

Adding the RafflePress license key

You’ll find this information in your account on the RafflePress website. Once you’ve done that, click on the ‘Verify Key’ button.

After that, go to RafflePress » Add New.

Creating a new giveaway in WordPress

On the next screen, you’ll need to give your Twitch giveaway a name.

This is just for your reference so you can use anything you want.

Adding a title to your Twitch giveaway

Next, choose the template that you want to use. RafflePress has ready-made templates for specific goals such as growing your YouTube channel or going viral.

For this guide, we’ll use the Classic Giveaway template as it lets us create a contest from scratch. Simply hover your mouse over the Classic Giveaway template and then click on the ‘Use this Template’ button when it appears.

Choosing a template for your Twitch giveaway

This opens the template in RafflePress’ drag and drop builder.

We’ll start by entering some information about the prize so simply click to select the headline area, which shows ‘My Awesome Prize’ by default.

The RafflePress WordPress giveaway plugin

You can now go ahead and type a title into the ‘Name’ field.

You’ll usually want to talk about your exciting prize, but you can use any title you want.

Adding a title to your Twitch giveaway

Once you’ve done that, type in a description, which will appear below the headline.

Here, you may want to add some more information about the competition, such as how much the prize is worth and what it has to offer users.

Adding a description to a Twitch giveaway

You might also add a photo of the prize, so visitors can see what’s at stake. Even simply adding the product’s logo can make the competition more eye-catching.

To do this, simply click on ‘Select Image.’

How to create a Twitch giveaway in WordPress

Then, either choose an image from the media library or upload a new file from your computer.

When you’ve finished making changes to this section, click on the ‘Done Editing’ button.

Adding an image to a Twitch giveaway

Now it’s time to set a start and end date for your giveaway. If you have lots of giveaways planned, then this allows you to schedule them in advance. It also guarantees that your contests will start and end on time, no matter how busy you get.

To schedule the contest, simply enter a date and time into the ‘Giveaway starts…’ and ‘Giveaway ends…’ sections.

Scheduling your Twitch contest

By default, RafflePress uses the UTC timezone, but you can change this using the ‘Timezone’ dropdown menu.

Your next task is choosing how visitors will enter the giveaway, by selecting ‘Actions.’

Adding actions to your Twitch giveaway

You will now see all the different entry methods. For example, if you want to create a Facebook giveaway to boost engagement, then you can select ‘Like our Page’ or ‘Visit us on Facebook’ as the entry method.

To get more followers on Twitch, just click on the ‘Follow us on Twitch’ action.

You can then type in the text that will appear to the people who visit your WordPress website. This is ‘Follow us on Twitch’ by default, but you can use anything you want.

Adding a Twitch action to a WordPress contest

Next, paste your Twitch link into the ‘Twitch Profile URL’ field.

Every time someone clicks on the link, they’ll be asked to follow you on Twitch and also type in their username, so you can verify that they’re following your account.

Adding your Twitch profile to RafflePress

You can add multiple entry methods to a single competition. By offering visitors a choice, you can often boost the number of entries you get. For example, some people may not have a Twitch account, but will happily enter the contest by subscribing to your podcast or completing a survey in WordPress.

Some people may even want to boost their chances of winning by using more than one entry method.

If you do offer visitors a choice, then you may want to make some methods more appealing than others. For example, if your main goal is to grow your Twitch followers, then you might make this method worth two entries.

By default, every action is worth one entry, but you can change this by selecting a new number in the ‘Value’ area.

Changing the value of a Twitch entry method

You could also make the Twitch action mandatory, while all other entry methods are optional. This means all participants must follow you on Twitch in order to enter the contest, but they can get additional entries by performing other tasks.

To do this, simply click the ‘Make Mandatory’ slider so that it turns from ‘No’ to ‘Yes.’

Making the Twitch method mandatory

To add more entry methods, simply click on the ‘Add Actions’ tab and then follow the same process described above.

Every time you add an action, RafflePress will show the settings you can use to configure that action. For example, if you add ‘Join an Email Newsletter’ as an entry method then you’ll need to select your email marketing service.

Adding an email marketing service to your RafflePress contest

By default, RafflePress will show the actions in the order you add them to your competition.

To change this, simply hover over the action in the editor and then grab the dotted button that appears to the left of the action.

Rearranging your giveaway entry methods

Then, move the entry method using drag and drop.

When you’re happy with how the giveaway is set up, you can change how it looks by clicking on the ‘Design’ tab.

Changing the design of your Twitch contest

Here, you can change the fonts, select a new button color, change the background color, add a background image, and more.

You can even customize the giveaway template using custom CSS.

Adding a background image to a Twitch giveaway

When you’re happy with how the contest looks, select the ‘Settings’ tab.

Here, you can edit the giveaway’s general settings including its name, URL, and whether it’ll show the total number of entries to visitors.

You can also join the RafflePress affiliate marketing program and make money from your Twitch giveaway.

Configuring the RafflePress contest

If you’re using the contest to grow your mailing list or generate leads, then you may want to verify each participant’s email address by selecting the ‘Email Verification’ tab.

Here, click on the ‘Contestant Must Confirm Their Email’ toggle to turn it from ‘No’ to ‘Yes.’

Requiring email verification for contest entries

If you’re using Google Analytics to track user engagement, then you can select the ‘Success Tracking’ tab.

This section has two text editors where you can add your tracking scripts.

Adding tracking scripts to a Twitch contest

When you’re happy with how your giveaway is setup, make sure you store your changes by clicking on the ‘Save’ button.

Then, it’s time to make your giveaway live by clicking on the ‘Publish’ tab.

How to publish a Twitch giveaway using WordPress

You can add the contest to your site using a shortcode, the RafflePress WordPress block, or by creating a landing page.

If you want to add the giveaway to a post or page, then the easiest option is using the RafflePress WordPress block.

However, if you want to get as many entities as possible, then we recommend choosing the ‘Giveaway Landing Page’ option as it creates a separate page that you can easily share on social media.

To get started, click on ‘Giveaway Landing Page’ and then select the ‘Click here’ link.

Creating a landing page for your giveaway

If you haven’t already, then type the URL that you want to use into the ‘Page Permalink’ field.

Finally, go ahead and click on ‘View.’

Setting the permalink for your giveaway landing page

RafflePress will now publish your giveaway as a landing page. If you visit the URL, then you’ll see the giveaway live.

How to Promote your Twitch Giveaway

After creating a giveaway, you’ll want to promote it so more people can enter. Wherever possible, it’s a good idea to promote a giveaway before publishing it, so you can get a ton of entries straight away.

To start, you’ll want to help visitors find your giveaway landing page by promoting it on your site’s most important pages.

One option is adding the giveaway to your navigation menu or sidebar. You can also create a floating bar with a link to the giveaway landing page using a plugin such as OptinMonster.

Creating a floating banner in OptinMonster

You might even create a sense of urgency by adding a countdown timer to the floating bar. In this way, you can use FOMO on your WordPress site to get more entries and Twitch followers.

Promoting the giveaway on your social media profiles is also a great way to get more participants. Since these people already follow you on social media, they may be interested in watching your Twitch, so this is a great way to grow your channel.

Sending web push notifications can also boost your participants. You can ask your push notification subscribers to follow you on Twitch if they haven’t already, or to refer any friends or family members who might want to enter the competition.

It’s also important to promote the giveaway to your Twitch audience. They may already be following you on Twitch, but contests are a great way to engage with your followers. For example, you might announce the competition on a stream, or add the giveaway to your Twitch stream panels.

How to Pick a Twitch Giveaway Winner

Once your giveaway closes, it’s time to choose a lucky winner.

To pick a winner at random, simply head over to RafflePress » Giveaways in your WordPress dashboard. If you didn’t set an end date, then you’ll need to hover over the giveaway and click on the ‘End Now’ link when it appears.

How to close a contest manually

When it shows up, click on ‘Needs Winners.’

On the following page, RafflePress will show all the people who entered your giveaway, along with how they entered, their total entries, and more.

Here, just type in the number of winners that you want to pick.

Picking a winner for your Twitch competition

When you’re ready, go ahead and click on the ‘Choose Winners Now’ button. RafflePress will then show the winner highlighted at the top of the list.

You’re now ready to contact the winner and let them know the good news, for example you might send them an email or even announce the winner on a live Twitch stream.

It’s also a good idea to thank everyone for taking part and encourage them to join your giveaways in the future.

Analyze Your Twitch Giveaway

After announcing the winner and thanking your audience, it’s smart to analyze your giveaway. You can use this information to fine-tune all the competitions you run in the future.

If you offered multiple entry methods, then we recommend using RafflePress’ Entries Report to see which method was the most popular.

To see this information, head over to RafflePress » Giveaways and then hover your mouse over the contest that you want to analyze. When the ‘Users’ link appears, give it a click.

Analyzing your Twitch giveaway

On the next screen, click on ‘Entries Report.’

You will now see a pie chart of all the different entry methods, along with the percentage for each method.

How to analyze a WordPress competition

Another easy way to analyze your giveaway is by using MonsterInsights.

MonsterInsights is the best WordPress Google Analytics plugin, and it allows you to track all your website activity right from your WordPress dashboard. For example, you can see how people arrived at your giveaway landing page, the actions they took on that page, and more.

The MonsterInsights Google Analytics plugin

By anazlying your website data with MonsterInsights, you can see which actions and promotions drove the most people to your giveaway and the traffic sources that got you the most entries. You can then use this insight to improve your next contest.

We hope this article helped you learn how to do a Twitch giveaway in WordPress. You can also go through our expert pick on the best social media plugins for WordPress, and our step by step guide on how to create an email newsletter.

If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.

The post How to Do a Twitch Giveaway in WordPress (Step-by-Step) first appeared on WPBeginner.

Delightful UI Animations With Shared Element Transitions API (Part 2)

In the first part of this article, we covered Shared Element Transitions API (SET API) and how we can use it to effortlessly create complex transitions for various UI elements, which would usually require a lot of JavaScript code or an animation library to achieve.

But what about smooth and delightful transition animations between individual pages? This is probably one of the most often requested features in the past few years because even with all the frameworks like React and Svelte and animation libraries like GSAP and Framer Motion, transitions between pages are still really difficult to do.

In this article, we’re going to showcase same-document page transitions commonly found in Single Page Applications and talk about the future of the Shared Element Transitions API for cross-document (Multi Page Application) transitions. I’ll also showcase some awesome React, Astro, and Svelte implementation examples from the dev community.

Note: Shared Element Transitions API is currently supported only in Chrome version 104+ and Canary with the document-transition flag enabled. Examples will be accompanied by a video, so you can easily follow along with the article if you don’t have the required browser installed.

In case you haven’t checked out my previous article on the topic, here is a quick rundown of this exciting new API so you can follow along with the article.

Shared Element Transitions API

With Shared Element Transitions API, the browser does a lot of heavy lifting when it comes to animations allowing us to create complex UI animations in a more streamlined way. The main part of the API is a JavaScript function that takes screenshots of the UI state before and after the DOM update and apples a crossfade animation:

const moveTransition = document.createDocumentTransition();
await moveTransition.start(() => {
  /* Take screenshot of an outgoing state */
  /* Update the DOM - move item from one container to another */
  targetContainer.append(activeItem);
  /* Take screenshot of an incoming state and crossfade the states */
});

Just by calling the start function, we get a neat and simple crossfade animation between the outgoing and incoming states.

As you can see, we can still navigate between the pages; DOM is updated with the new content, and the URL in the browser changes. We are intercepting the browser’s default navigation behavior and handling the page loading and DOM updates all by ourselves while we remain on the same page.

By just passing the DOM update function as a callback to the SET API start function, we get a neat crossfade transition between pages right out of the box!

With just a few lines of CSS and JavaScript, we’ve created this beautiful transition animation. All we had to do was to identify the shared element (item image) on a clicked link using a page-transition-tag and signal the browser to keep track of its dimension and position.

We get a crossfade animation on a shared element on backward navigation for free because the selector we used document.querySelector(a[href="${url.pathname}"] .card__image) runs on the current page, so when we navigate back to items list page the tag doesn’t get applied and browser cannot match the shared element.

If we want to have the same animation on the shared element when navigating back to the item list page, we have to apply the tag to the correct image element in the grid after we fetch the contents of a target page.

Customizing Page-Transition Animation With CSS

Let’s use CSS animation properties to fine-tune the crossfade and item image animation. We want the crossfade animation to be quick and more subtle, and the more elaborate image animation to be more noticeable and have a nice custom easing function:

/* Speed up crossfade animations */
::page-transition-outgoing-image(*),
::page-transition-incoming-image(*) {
    animation-timing-function: ease-in-out;
    animation-duration: 0.25s;
}

/* Fine-tune shared element position and dimension animation */
::page-transition-container(product-image) {
    animation-timing-function: cubic-bezier(0.22, 1, 0.36, 1);
    animation-duration: 0.5s;
}

We also need to keep in mind that some users might prefer browsing the site without the complex animations with a lot of movement, so we want to either turn them off or provide more appropriate animation:

@media (prefers-reduced-motion) {
  ::page-transition-container(*),
  ::page-transition-outgoing-image(*),
  ::page-transition-incoming-image(*) {
    /* Or add appropriate animation alternatives */
    animation: none !important; 
  }
}

Crossfade animations now run faster, and the sizing and position animation runs a bit slower and with a different timing function.

In this example, I’ve only showcased code snippets relevant to creating page transition and SET API. If you are curious about the complete source code or want to check the demo in detail, feel free to check out the project repository and inspect the demo page.

Upcoming Cross-document Transitions

Proper Shared Element Transitions API support for MPAs is still a work in progress, but we can get a general idea of how it’s supposed to work from a rough draft by WICG.

In same-document transitions, we would use pageTransition.start(/* … */) function to let the browser keep track of the DOM updates. As for the cross-document transitions, we need to run the transition request function on the outgoing page before it’s unloaded and run the transition on the incoming page once it’s ready.

The following code snippets are copied from the WICG draft:

// In the outgoing page
document.addEventListener("pagehide", (event) => {
  if (!event.isSameOriginDocumentSwap) return;
  if (looksRight(event.nextPageURL)) {
    // This signals that the outgoing elements should be captured.
    event.pleaseLetTheNextPageDoATransitionPlease();
  }
});
// In the incoming page
document.addEventListener("beforepageshow", (event) => {
  if (
    event.previousPageWantsToDoATransition &&
    looksRight(event.previousPageURL)
  ) {
    const transitionReadyPromise = event.yeahLetsDoAPageTransition();
  }
});

Shared Element Transitions API for cross-document transitions would also need to be heavily restricted for security reasons.

Framework Implementation Examples

During the past few weeks, I saw some jaw-dropping examples of using Shared Element Transitions API for page navigation, added with progressive enhancement to various frameworks like React and Svelte.

Adding page transitions with SET API in frameworks can be tricky. In this example, we’ve had control over the DOM update functions, but this is not usually the case with front-end frameworks. Hopefully, as this API gets proper browser support and traction in the dev community, frameworks and router libraries will follow suit and provide better ways to integrate Shared Element Transitions API in navigation.

So, I would like to highlight some awesome examples of framework implementations from the community, especially those that provide reusable functions and hooks.

React / Preact

Jake Archibald created a great video playlist example using Preact, TypeScript, and a custom page transition hook. This example uses a custom router implementation to apply class names to the html element to customize the animation and toggle different types of animation depending on the navigation direction.

Astro

Maxi Ferreira implemented page transitions similarly as in our example with Navigation API but with Astro and explained the process in great detail on top of building a stunning movie database app.

He also worked with Ben Myers on this awesome guitar shop example with cool animations on both the guitar image and item background, which expands into a full description background container. This is also a good example of how to create elaborate but seamless and tasteful animations that add to the user experience.

Svelte

Moving onto Svelte, Geoff Rich built this neat fruit nutritional data app and explained the whole process in great detail in his article. SvelteKit has a built-in navigating store, and Geoff created a handy util function for intercepting page transitions and applying the Shared Element Transitions API depending on its browser support.

Conclusion

Shared Element Transitions API allows us not only to implement complex UI animations on a component level but also on a page level. Same-document transitions in Single Page Applications can be implemented today with progressive enhancement, and we can achieve impressive app-like page transitions with just a few lines of JavaScript and CSS. And all that without a JavaScript animation library! More popular and more complex cross-document transitions for Multi Page Applications are still a work in progress, and I can see it being a massive game-changer once it’s released and gains wider browser support.

Judging from the impressive examples we’ve seen online, some of which are featured in this article, we can safely say that the community is more than excited about this API. If you’ve built something awesome using Shared Element Transitions API, feel free to reach out on Twitter or LinkedIn and share your work.

Many thanks to Nikola Vranesic for reviewing the article for technical accuracy.

References

How Does the Milvus Vector Database Ensure Data Security?

In full consideration of your data security, user authentication and transport layer security (TLS) connection are now officially available in Milvus 2.1. Without user authentication, anyone can access all data in your vector database with SDK. However, starting from Milvus 2.1, only those with a valid username and password can access the Milvus vector database. In addition, in Milvus 2.1 data security is further protected by TLS, which ensures secure communications in a computer network.

This article aims to analyze how Milvus, the vector database ensures data security with user authentication and TLS connection and explain how you can utilize these two features as a user who wants to ensure data security when using the vector database.

What Is Database Security and Why Is It Important?

Database security refers to the measures taken to ensure that all data in the database are safe and kept confidential. Recent data breach and data leak cases at Twitter, Marriott, and Texas Department of Insurance, etc, makes us all the more vigilant to the issue of data security. All these cases constantly remind us that companies and businesses can suffer from severe loss if the data are not well protected and the databases they use are secure.

How Does the Milvus Vector Database Ensure Data Security?

In the current release of 2.1, the Milvus vector database attempts to ensure database security via authentication and encryption. More specifically, on the access level, Milvus supports basic user authentication to control who can access the database. Meanwhile, on the database level, Milvus adopts the transport layer security (TLS) encryption protocol to protect data communication.

User Authentication

The basic user authentication feature in the Milvus vector database supports accessing the vector database using a username and password for the sake of data security. This means clients can only access the Milvus instance upon providing an authenticated username and password.

The Authentication Workflow in the Milvus Vector Database

All gRPC requests are handled by the Milvus proxy; hence authentication is completed by the proxy. The workflow of logging in with the credentials to connect to the Milvus instance is as follows.
  1. Create credentials for each Milvus instance, and the encrypted passwords are stored in etcd. Milvus uses bcrypt for encryption as it implements Provos and Mazières's adaptive hashing algorithm.
  2. On the client side, SDK sends ciphertext when connecting to the Milvus service. The base64 ciphertext (<username>:<password>) is attached to the metadata with the key authorization.
  3. The Milvus proxy intercepts the request and verifies the credentials.
  4. Credentials are cached locally in the proxy.
Authentication Workflow
Authentication Workflow


When the credentials are updated, the system workflow in the Milvus vector database is as follows
  1. ..Root coord is in charge of the credentials when insert, query, and delete APIs are called.
  2. When you update the credentials because you forget the password, for instance, the new password is persisted in, etcd. Then all the old credentials in the proxy's local cache are invalidated.
  3. The authentication interceptor looks for the records from local cache first. If the credentials in the cache is not correct, the RPC call to fetch the most updated record from root coord will be triggered. And the credentials in the local cache are updated accordingly. 

Credentials update workflow.

Compare the Best Social Media Scheduling Tools

Want to jump straight to the answer? The best social media scheduling tool for most people is SocialBee. It has a ton of features and a great price point, and it makes both posting and growing on social platforms effortless. Try for free now

One of the biggest drawbacks of using social media is the time it takes—especially if you are active on multiple platforms. Luckily, social media scheduling tools exist to help you plan content ahead of time, organize your posts, and coordinate across all your accounts. We’ve shortlisted the best ones out there to make it easy for you to choose the best scheduling tool for you. 

The Top 7 Best Social Media Scheduling Tools 

All social media scheduling tools are useful, but depending on your needs, some are better than others. Here’s a breakdown of the best out there, and who should be using them. 

SocialBee — Best Overall 

  • Feed Previews Included
  • Easy Automation Capacity
  • Helpful Category Labels Included
  • Large Template Library
Start Your 14-Day Free Trial

SocialBee is by far one of the best scheduling tools for social media. It’s intuitive, it has a good range of integrations, and it works for both individuals and those in a team. 

With a category system that helps you organize your posts by topic, source, or goals, and easy editing tools across different social media platforms, it solves most of the problems you’d need to solve with a social media tool.

SocialBee landing page for scheduling posts on Instagram

And it’s a great option for solopreneurs, small businesses, or even agencies. 

Top Features:

  • Posts can be categorized and labeled in the calendar 
  • Content and scheduling calendar for categories and posts 
  • Generated posts, republished content and 
  • Preview of your post on each platform before you publish it 
  • Collaboration and team sharing options 
  • Analytics that help you identify which posts, categories, and times work best 

 Pros:

  • You can categorize each post which makes it easier to rack what’s working and what isn’t and plan your posts so they don’t become repetitive 
  • There is an option to create your own schedule from scratch, or you can use one of their premade schedules and customize it
  • There are collaboration feature where you can work with your time and assign, approve or edit posts 
  • They are connected with canva so you can edit or create content directly in the app, which saves a lot of time 

Cons: 

  • There’s no free option 
  • You can’t post to Instagram directly through the website—it has to be done through the app 


SocialBee has a huge range of features, and focuses on helping you grow on social media as much as it helps save time when posting.

Plus, SocialBee is really affordable for what it is, with plans starting at just $19 a month for smaller accounts

Agorapulse – Best For Teams 

  • Extensive Collaboration Features
  • One Unified Inbox
  • Two Ways To Organize Posts
  • Easily Repurpose Old Content
Try Free for 30 Days

Agorapulse is a great scheduling tool for small businesses or social media managers who need to run things by other people before hitting publish.

It has a lot of the same features we see with the other tools (calendars, labels, analytics, inboxes), but what really makes them stand out is the range of collaborative features on offer.

Agorapulse home page

You can assign posts to different team members, design and edit together, or even set permissions to make sure that the right people okay the post. It’s a powerful tool and a great choice for anyone working within a team. 

Top Features: 

  • A unified inbox where you can manage all your comments and messages across platforms
  • Teams can collaborate on posts, approve them, or leave comments and suggestions
  • Posts can be organized by categories or with tracked with labels and tags 
  • You can set up alerts to track mentions or trigger responses when followers mention your account  
  • Easy to use calendar with team access features 
  • Optimization features for each post across different platforms 

Pros:

  • Team collaboration features that work great for both social media managers and businesses 
  • Teams can access a shared calendar and coordinate on campaigns or goals
  • Content can be repurposed, refreshed or reposted to keep things fresh 
  • Teams can collaborate on posts and work on the design or captions together 
  • Optimization features to help you post the bet content at the bes times per platform
  • A unified inbox that tracks all the comments across all of your different accounts 
  • You have analytics tools that enable social listening and competitor analytics 
  • There’s a free version 

Cons: 

  • There’s so much focus on collaborative features that it can get overwhelming and confusing to use at times

Agorapulse is a great tool for anyone who has to check in with a client or a team, And even the paid plans are well priced considering the range of features you get.

However, if you’re a creator or a solopreneur, you may not need to use that many features, and you’re better off going for a simpler tool that focuses more on analytics. 

Buffer – Best for Keeping Things Simple 

  • One Simple Dashboard
  • Clean, Simple Interface
  • Schedule Everything From One Dashboard
  • Drag-and-Drop Calendar Included
Try For Free

Buffer is a scheduling tool that makes things easy.

Not only does it have a clean interface and an easy signup process, but you can also manage everything—all your different platforms—directly from the dashboard.

Buffer landing page for building your audience and growing your brand on social media

You can schedule all your posts, including TikTok, Instagram, and Facebook posts, from one screen. For anyone easing into the world of social media, this clean, simple layout is great and makes the process of posting a lot faster. 

Top Features

  • A clean interface and minimalist dashboard 
  • An easy signup process 
  • A calendar for all your accounts across different platforms 
  • A big range of integrations available 
  • Automated responses and analytics with paid plans 

Pros: 

  • Easy to use, easy to set up, and easy to understand, even for people who are new to social media. 
  • Different pricing plans available for different needs – so if you just want to schedule a post for a few accounts, you can use the free version. 
  • You can access analytics, add more accounts or schedule more content by upgrading to a paid plan. 
  • Drag and drop features for adding content to the scheduling calendar, and a visual preview for posts and feeds. 
  • A huge range of integrations available, including WordPress, Google Chrome, and Zapier. 
  • Available on both Android and iPhone, making it easy to schedule things on the go. 

Cons: 

  • You only get three accounts to schedule with on the free plan. (And that only includes 10 posts)
  • Unlike a lot of the other tools mentioned on this list, you can only access analytics if you upgrade to a paid plan. 

If you’re just starting out and want something clean and easy, Buffer is a great place to start. It’s intuitive, there’s a free version and it has a high trust rating from users.

However, if you want to manage multiple accounts or you’re a social media manager, you might want to look at a tool with more features. 

Napoleon Cat  —  Best for Automation 

  • Automate Sales and Discounts
  • Great for Teams
  • Automatic Comment Moderation
  • Optimize Posts Across Multiple Platforms
Try Napoleon Cat for Free!

Napoleon Cat gives you more than an option to schedule posts—you can also automate and reply to reviews, comments, and DMs. It also offers analytics, insights, collaboration, and calendar features.

That’s the big difference between Napoleon Cat and others on our list—it pretty much lets you automate anything you want.  

NapoleonCat social media publishing tool landing page

Top Features: 

  • One unified inbox with all your messages, comments, and reviews from different platforms
  • Automation for posts, messages, DMs, comments, and even discount codes 
  • Post optimization across different platforms, all through the same editor, directly int he dashboard  
  • Analytics tracking across different platforms 
  • Automatic comment moderation across Facebook and Instagram 

Pros:

  • Napoleon Cat lets you automate everything on your social media, not just your posts. You can automate comments, DMs, sales, and even discount codes. This is a really powerful tool for anyone running an ecommerce business online. 
  • You save a lot of time by being able to access, edit and optimize the same post for different platforms.
  • You can see how other profiles in your industry are performing and use it to help you strategize your own content plan

Cons: 

  • There isn’t a free version, and even with both paid versions, you can only have one user and three social media accounts. 

Napoleon Cat is the best tool for you if you have a lot of customers, want to respond to all your  comments, or you have an ecommerce store. The features for scheduling ecommerce content really are unmatched. 

If you need to manage a lot of accounts, though, you’ll probably be too limited by Napoleon Cat, even with a paid plan. 

Sprout Social  — Best For Bigger Businesses

  • Multi-Platform Posting Included
  • Massive Media Library
  • Lots Of Collaboration Features
  • AI-Generated Responses
Get Started Now

Sprout Social is a social media management tool that includes scheduling as just one of its features.

However, the scheduling that they do offer is one of the best, with extremely powerful analytics, insights, and automations.

Sprout Social list of core features, including scheduling, optimal send times, asset library, content suggestions, message approval workflows, and message tagging

Sprout Social has a reputation for accessing some of the best metrics and data points out here—so if you’re looking for a tool with a good reputation and state-of-the-art data, this is it. 

Top Features: 

  • A multimedia and template library that makes posting easy for anyone in a few minutes 
  • The option to publish posts on all platforms at the same time
  • Collaboration and permission options for teams
  • Analytics, scheduling, and insights for paid content as well as organic posts 
  • AI-generated responses 
  • Intuitive and in-depth analytics features 
  • A social media scheduling calendar that features every platform at the same time

Pros:

  • The interface is clean, simple, and easy to use 
  • You can edit posts directly in the dashboard and optimize them for each platform 
  • When you schedule posts, it will suggest the best times for you to schedule them into the calendar 
  • Integrations with apps like Feedly to help you share content and repost 
  • High-quality data points and metrics about trends and audience insights 

Cons: 

  • Because of the huge range of features that are included with Sprout Social, the price point is a lot higher than the other tools on this list. 
  • You can’t edit Twitter captions directly in the dashboard, so you have to write separate content for Twitter posts 

With the powerful analytics and workflow features and the high pricing, this tool is definitely better suited for bigger businesses or companies. 

Sprout Social is a trusted and solid social media management tool, but it might be a little expensive for solopreneurs or small businesses who are only looking to save some time. 

MeetEdgar  — Best if You’re Short On Time 

  • Easy to Use
  • Fresh Content Created Daily
  • Auto-Repurpose Old Content
  • A/B Testing Included
Get Started for Free

MeetEdgar is a scheduling tool with a twist—the focus is to keep your feed fresh with updated versions of your old content. The platform uses a curated library of your old posts to pull from or repurpose to keep generating new ideas.

This makes it the ultimate tool for anyone wanting to save time—not only can you schedule your posts all at once, but you can also cut down on the amount of time you spend creating content. 

MeetEdgar social media management tool landing page

Top Features: 

  • A curated library of old posts to use as templates or repurpose as new content
  • Scheduling features and time slots to post new or repurposed posts 
  • A/B testing to measure what kind of content or repurposing works best 
  • Real time performance metrics across social media accounts 

Pros:

  • You can manage multiple accounts and analyze data from all to see what type of content works best 
  • You can create new posts or just let them keep creating content using the library they create from old posts 
  • You can stay consistent and focus on strategy instead of content creation 
  • You can generate new social media posts directly from your blogs posts 

Cons: 

  • There are fewer features than most of the other tools on the list 
  • There’s no free version, even though there are limited analytics features 


If you are busy, and actually creating content is the worst part of social media for you, MeetEdgar is the best tool for you.

However, if it’s just the scheduling that you need, there are other tools that can offer better analytics and better options for growth for a similar price point

Later — Best for Social Media Managers 

  • Post To All Your Accounts From Later
  • Optimal Posting Time Suggestions
  • Excellent Customer Support
  • Unlimited Scheduling Included
Create Your Free Account

Later is an “all-in-one” tool that lets you schedule and publish content for every single social media platform—all from the same dashboard.

Not only can you autopublish and schedule different types of content, including posts, reels, and carousels, you can create new posts directly in Later and then send them out across all your platforms. 

Later social media scheduler landing page

Top Features:

  • Create, edit and post content on every single social media platform from one calendar or dashboard 
  • Set a schedule based on suggested “best times” 
  • Automate different types of posts across all platforms 
  • Analytics and insights for each platform and account
  • Great support for users with troubleshooting and email support available 

Pros:

  • You can schedule different types of posts without limits, including reels, posts, videos and carousels 
  • Every plan includes accounts from every single social media platform 
  • You get analytics for each platform, and suggestions for the best times to post 
  • You can plan your feeds in preview and get suggestions on what will perform best 
  • Access to audience insights across all the different platforms 

Cons: 

  • On the free plan, you only get access to three months of analytics 
  • You can create a user friendly calendar but there’s a limited number of templates 
  • You can’t automate Instagram stories ahead of time 

If you just want to schedule your posts, this is the best tool for you. It might not have as many team features or as powerful analytics as some of the others on the list, but to be able to post to six platforms at once, and access analytics, at such an affordable rate, more than makes up for it.

When it comes to actually just scheduling posts and saving time, especially for social media managers or those with lots of accounts, Later is the best. If you want access to team features or more robust analytics, however, something like Social Bee might be better suited. 

How to Find The Best Social Media Scheduling Tool For You 

When you’re looking for a social media scheduling tool, your aim is probably to save some time. But – especially when it comes to paid plans – you also want to choose a tool that solves your problems and brings you closer to your goals.

Here are the three main things you should keep in mind when assessing which tool is right for you:

1. The number of accounts you have

2. The collaboration and team features available 

3. What problem the tool can help you solve 

Number of Accounts  

We’ve already established that the goal of social media scheduling tools is to save time. 

So if you have a social media account on every platform (Facebook, TikTok, Pinterest, LinkedIn), you want to find a scheduling tool that can accommodate all of your accounts.

You can see that some of the free plans on the list above only include a few accounts—and maybe that’s all you need. Or maybe you want something that covers ALL your accounts, like Later. Or, maybe you know you’ll be specifically sharing Tweets, so the functionality of Social Bee for editing your captions in the dashboard is something you need.

Remember to check how many accounts your plan covers, and whether the tool you choose has functionality for all of them.

Collaboration Features 

Some of the tools on our list are geared at solopreneurs and some are geared at teams.

If you’re using social media in a situation where getting approval is essential—say, as a social media manager, or in a corporation where brand voice and PR matter—you need to look for a tool that lets you collaborate in a team.

Some tools will let you edit directly together, while others assign permissions to different people on the plan.

Consider who else needs to access your social accounts and whether having a team plan will help make things easier for you. 

Social Media Goals

The scheduling tool you use will depend on your goals.

Do you literally just want to save a little time? In that case, maybe something as simple as Meet Edgar works perfectly. But if you want help growing on the platform, reaching new audiences, or you’re selling something online, you need to choose a more robust tool that helps you meet those goals.

Think about what you want to achieve and which tool will help you get there before you make your choice.

Summary 

Whether you’re just trying to save time, or actually trying to grow your followers and level up your social media game–one of the tools in this list will help. 

Whichever one you choose, start as soon as you can. Remember that most social media platforms reward consistency, and nothing is as consistent as having your calendar full of optimized, automated posts. 

Overcoming Imposter Syndrome By Developing Your Own Guiding Principles

Design is one of those disciplines that has a very low barrier to entry, and this is amazing! What isn’t so easy is acquiring the softer skills that you’ll need when entering this job market.

Working on designs is just so much fun! But to become better designers, it’s also crucial to understand what makes a great team member and how to present your work to colleagues. Unfortunately, not everyone has access to a mentor, guide, or whatever word you’d like to use to describe advice from a more senior person in the design industry, which is why we often have to rely on “working it out” by ourselves.

This may be intimidating at first, but I firmly believe that if we take a step back from the pixels on the screen and reflect on who we want to be and what our core principles are, we can walk into these design critique meetings with more confidence and really deliver the best possible representation of our ideas.

“Yes, I’d love to present my work at the next meeting!”

“Yes, I’d love to present my work at the next meeting!” This has probably been you at some point during the past few months. Your boss has praised your design work, and you’ve been asked to share your design with the wider team. The thing is, you’re really not sure if you even like your work. You can see the inconsistent padding between the labels and the icons, the misalignment of the chevron, the lack of canvas organization, a glaring omission of meaningful layer names, and more.

Unfortunately, we’re raised in a world where seniority demands respect regardless of whether that is justified, and we need to be seen to grow within an organization. This means that we need to be able to present for the job we want in most cases, which is a fair ask for progression and, ultimately, also… money.

You know what? What you’re experiencing is within us all. The unfortunate side effect of being a creative is that you will never be satisfied with what you’ve produced and you’re not alone.

“It’s not uncommon for me to love the direction a design is going at the start of a project, but by the time it’s complete, I’m cringing and wishing I’d done so many little things better. And it’s not just imposter syndrome, it’s also that you have a gap between your vision and your skills. You can picture something in your mind — or you see inspiration elsewhere that you know you can match — but when it comes down to executing that vision, your skills and experience fall short of what you were aiming for.”

— Benek Lisefski, “Why Good Designers Can Never Do Their Best Work
“I’ve been designing for almost two decades, and I can tell you that I feel like a total amateur at least once a day.”

Daryl Ginn

Unless, like I have tried to force myself to do, you’ve resigned to the fact that 80% done is more often than not good enough to convince those at the table you’ve been desperate to sit at that we can produce good work and, ultimately, sell our product.

Presenting your work is fundamental to career growth, at least on every career ladder I’ve seen. This means we need to either become excellent actors or learn some coping mechanisms to handle that pressure. Weirdly enough, presenting work to your team should — and is often — the least pressured environment we will find ourselves in at work. Still, because we know each other and are unfortunately in competition with one another, it can feel like the most daunting task of them all.

This is where I can try to offer some help! Over the past many years, I’ve landed on a formula that works for me, and I’m happy to share what I have learned. Creating your own goals, rituals, and methods will help you succeed, but sometimes it’s hard to know where to start.

The Experience Paradox

You may be looking at your more experienced colleagues in awe, wondering how they present so well and seemingly without a bead of sweat. The funny thing, though, is that as your experience level increases, so does your self-doubt.

This oxymoron keeps us all sprinting along in blind panic, not stopping for air, burning out, and wondering what went wrong. But as Car Seat Headrest’s lead singer Will Toledo sings, “It doesn’t have to be like this”.

A second side effect of being a creative is that we get kicks out of focusing on the wrongs in the world, rather than appreciating what we have or what’s going well. This means that as we progress, become more successful, earn more money, buy that new iPhone, or spend $500 on some digital art, we will always fall into a slump at the first sniff of negative feedback. It’s in this slump that we are the most vulnerable, and here is where we need to rely on our personal values to keep our chins up and our spirits high.

Personal Principles

This is where I should probably coin a catchy marketing phrase like “The 5 P’s of Personal Principles,” but this isn’t the movie Dodgeball or an overpriced email course that you paid for (but could’ve Googled for free). So, let’s just pretend it has a catchy hook.

Principles also have a bit of a woo-woo reputation thanks to the boom in personal reflection over the past few years. But essentially, it’s about knowing yourself and understanding what you’re in control of and what you’re not. Control is a strong word and probably elicits some negative feelings, but it basically means “what we have within our reach.”

Knowing what you can and cannot control is incredibly important. Once you’ve grasped this, you will understand where you can win, and — you’ve guessed it — where you cannot. Knowing where you can win will present you with an endless amount of marginal gains that, once properly planned for, may turn you into a superstar. (Of course, there’s no such thing as a “superstar designer” or a “front-end ninja.” Although you’d be surprised at the number of hits if you Google one of these terms!)

What Are “Principles”?

If you’re like me, your mind probably went straight to something spiritual or religious when reading the word “principles,” but I promise you it’s not that.

Believing in yourself is more powerful than you think, and if you can stay humble whilst knowing your worth, you will become the best kind of colleague.

I’m not encouraging you to write down a list of commandments or commit to an “every day I will do this or that” type of routine here because we all know forced routine often fails.

What I would like you to do is start considering whether there is anything you find yourself repeating. Do you have a “motto” or a phrase that resonates with you particularly well? I have a few:

  • Always be two steps ahead.
    I try to work extra hard at being one further step in front so that when I fail, I’m still in the pole position. This also encourages me to anticipate scenarios and tension to prepare my responses in advance and build solutions to address them. In Shane Parrish’s “Decision by Design” course, he teaches us to “make our best decisions in advance,” and I strongly agree with this philosophy.
  • Expectations lead to disappointment.
    If we constantly set either ourselves, our peers, or our colleagues to out-of-reach expectations, we will more often than not feel let down. It’s easy for our minds to get away with themselves, and the best way to avoid this is to accept that we can’t bank on people doing what we think they will. The easiest way to address this is to be comfortable with knowing that people are human, will make good and bad decisions, and that it’s not something we are in control of. Removing that tension will help us to be more relaxed and in command of our own results.

I’m also not encouraging you to read more books. Take one look around where you live and count how many books you’ve bought over the years and still didn’t read. I’m going to bet there are at least five or ten unread books there, or probably more. This isn’t about reading what someone else thinks you should be but relying on what you believe to be true. No one can write or describe how you want your outlook to be, so let’s leave the books aside for a moment. (Note: The irony of this message arriving via an article is not beyond me.)

Much like reading someone else’s opinion on how to live your life, I’m also not telling you to steal or borrow principles from somewhere else. I can’t tell you how to think, but I can help get you into a frame of mind to encourage that discovery.

So, let’s do it.

Thinking Through Your Principles

What would it be if you were to boil down what you love the most about your current work into one short statement? This is hard for some people because there are moments when it can feel like nothing is enjoyable about work — which is kind of the point! Maybe it’s about the moments when you are not working that you enjoy the most, and this could form a statement, too.

Let’s make it harder. Try and trim that down into a tweet-sized amount.

Harder again, remove all of the descriptive words and see if you can get it under ten words.

Got there? If yes, well done, you have a principle or at least the beginning of one. You might need to shape and mold it into something catchy that you can remember. Important! This isn’t a principle that needs to be “sold” to others — it’s something you’d be comfortable repeating often. So, if it’s something like “I love it when I’m the best in the room,” no, this won’t work. Let’s think about how this can be shaped into something a little more comfortable, meaningful, and practical. Perhaps it’s “I love educating others”? This flips the point on its head and allows you to focus on the part you find enjoyable from an outwardly perspective, rather than being insular.

If you haven’t found your principle yet, here are some other questions you can ask yourself:

  • When do I feel most comfortable at work?
  • When do I feel least comfortable?
  • When was the last time I received praise, and what was it for?
  • Do I know where I’d like to be in six months from now? A year? Two years?
    • If the answer is “No, I don’t know,” this could help you spot a gap and a growth opportunity.
  • How would someone else describe you?
    • Pick out the keywords and try to expand them into a phrase.
  • What makes you distinctly unique?
    • Again, if the instinct here is to be negative, let’s try and flip that on its head.
  • What is my working style?
    • Am I most happy in the morning or in the evening? When do I produce my best work?
  • How do I prefer to communicate?
    • In person, via messages, email, or social media?

Jot down these answers onto a piece of paper if it helps. Or maybe in a new note on your phone if that’s how you prefer to take notes. (Again, the way you write down things is also something to be aware of).

Did that work for you?

Working With The Team

If this is something you’d prefer to do visually, I’ve shared a resource in the Figma community with some prompts to hopefully get you into “the zone.” This is something you can do yourself, or better yet, as a team. Finding these things out together actually offers an opportunity to spot each other’s strengths and weaknesses, encouraging a more open communication style and collaborative atmosphere as a unit.

When running this exercise with your team, you should hopefully find each other’s working styles and spot points where you can improve efficiency together. This encourages ownership by those that want it, domain expertise by those that specialize, and an acknowledgment of difference (this is the most important one!).

Now What?

You’ve read quite a few words so far, and you’re maybe wondering what to do with them from the practical side of things. Hopefully, by now, you’ve spotted a few potential principles to align with, so the moment has come when you should try to put them to work!

Remember the imposter syndrome scenario, where you have to present your work to the team, and you are, simply put, frightened? Let’s think about the principles that we defined earlier.

  • Taking the example “I love educating others” from above, you can quickly see how the tension can be relieved. This is what you love doing! Even though “presenting” isn’t at the top of your list, the ability to talk through why you’ve made certain decisions, the research you did to get there, and what others can learn from your work, are all enabling you to become that educator that you love so much to see helping others.
  • If your principle is that you work best in the morning, maybe you should encourage the critique/presentation session when you’re at the top of your game at 10 am? You can see how once you settle on something to guide you, your stress can definitely be managed more effectively.
  • Let’s say you really don’t enjoy the presentation side of your job because you find it hard to concentrate or remember everything you want to share. So, maybe the principle can become “Take notes about everything!” And you can litter your desk (or room) with notes about what it is you want to cover throughout. Or, even better, you can provide everyone at the meeting with a handout explaining the core concepts you want to discuss; the presentation will practically explain itself at this point.

I’ve written about this before, and here are the most important things to keep in mind when presenting projects internally to stakeholders:

  • Agenda! Create and share in advance a concise (important!) agenda way ahead of the time of the meeting.
  • Prepare your guests. Depending on how far out you schedule the meeting, make sure to nudge people before it to remind them of what’s coming up and whether you require anything from them.
  • Frame it. Whether you have the luxury of presenting to your immediate team or the potential pain of external stakeholders, context is everything so work on your short list of actionable points.
  • Work backwards. If you’re presenting something completely new and for the first time, let’s not start from the ground up. Show the finished design first, then go through your early scoping and decision-making.

I find that we become stressed most when we are trying to become someone we think other people want and expect (remember my point about expectations?). By trying to understand who it is that we are as individuals and not trying to double-think untrue expectations set by others, it provides us with a platform to shine.

Conclusion

We did it! We went through the first pass at crafting personal principles that should (or so I hope) leave you feeling stronger and more confident in yourself as you think about progressing as a designer in the industry.

The core messages that I want you to take away here are, first, that you are great at what you do, second, that sometimes we have to take control of our own paths, grabbing opportunities when they arise, and third, that you probably had no idea that you were that confident about your own methodologies before reading this article. I promised that I wouldn’t try to trick you!

I’d love to hear what principles you did manage to create during this process. You know where to find me — either leave a comment here or message me on Twitter.

Further Reading

Beginner’s Guide to WordPress Image Sizes (+ Best Practices)

Do you want to learn about WordPress image sizes?

Often beginners ask us about what image sizes they should use on their WordPress site, and how WordPress handles images in different areas.

In this beginner’s guide, we’ll explain common WordPress image sizes, and share best practices on how to know which sizes to use on your website.

WordPress image sizes explained for beginners

What is an Image Size?

Image size usually refers to the width and height of an image measured in pixels. For instance, 1600×900 pixels means an image that is 1600 pixels wide and 900 pixels in height.

Image size in dimensions

These measurements also called image dimensions.

Basically, an image with larger dimensions has more pixels in it which will lead to an increase in image file size.

Image file size is the space an image file occupies on a computer, and it is measured in bytes. For instance, 100 KB (kilobytes).

If an image is larger in file size, then it will take longer to download for users and affect your website’s speed and performance. That’s why it’s important to keep the image file size as small as possible, while keeping the image at the right dimensions.

Which brings us to image file formats.

Image file formats are the compression technologies to save your image files. The most common ones used on the web are JPEG and PNG.

Images like photographs that contain more colors can be better compressed by using JPEG file format.

On the other hand, images like illustrations with fewer color details can use PNG for the best results.

For more details on image file formats, check out our article on how to optimize images in WordPress.

That being said, let’s take a look at what image sizes to use in WordPress for different areas of your website.

What Size Should My Images Be for My WordPress Site?

For an average WordPress website, you’ll be using images in several areas of your website. You’ll need images for your blog posts, thumbnails, page headers, cover images, and more.

WordPress automatically handles some of the image file sizes by default. Whenever you upload an image, WordPress will automatically make several copies of it in different sizes.

Automatic copies of images in different sizes

You can view and even adjust the default WordPress image sizes by visiting Settings » Media page in the WordPress admin area.

You’ll see three sizes for Medium, Thumbnail, and Large.

Default image sizes in WordPress

However, your WordPress theme may create its own additional image sizes and use those for different sections of your site.

These sizes will not be visible on the Media screen, and the only way to view those additional sizes is by going to the File Manager on your WordPress hosting account.

Then navigate to /wp-content/uploads/ folder and select any year folder there to browse. This will help you see all the various image sizes your WordPress site is generating.

With that said, let’s take a look at different areas of your website, and what image sizes you should use in those areas.

What Image Sizes to Use in Blog Posts

You need to choose image size for your blog posts based on your WordPress theme.

For instance, some WordPress themes come with a single column layout which allows you to use wider images.

Image in a single column layout

On the other hand, some WordPress themes use multi column layouts (content + sidebar) which means you need to adjust the image width accordingly.

Two column layout

For most blogs you can use the following image sizes:

  • Single column layout: 1200×675
  • Two-column layout: 680×382

Now, you might notice that many popular WordPress websites use the same image width for all their images inside an article. However, this is not a strict rule.

For instance, if you need to add ‘Media and Text’ block, then you can adjust the image size accordingly. In the example below, we are using an image in portrait size next to some text.

A blog post showing image in portrait size next to some text

Similarly, you may want to use square images for some situations.

For instance, here is an example of square images used in a multi-column layout.

Square images in columns

When using square images, you simply need to make sure that the image dimensions have the same width and height such as 300 x 300 pixels.

What Image Sizes to Use for Featured Images

Featured images, also called post thumbnails, are a WordPress theme feature. That means that your theme will determine what size images to display.

For instance, some WordPress themes may use standard 16:9 aspect ratio for featured image sizes (for example, 680×382 pixels).

Some WordPress themes may also use the featured image as a larger header image. To do that, they may need larger images (like 1200×675).

Feaatured image used in cover

Featured images are important since your WordPress theme may use them in different areas of your website. They’re often the first thing your visitors see, so you’ll want to make a good first impression.

We recommend using larger images, so they still look beautiful whether they’re scaled down or used in wider modes.

Featured image inside container

Similarly, if your WordPress theme uses square images for featured image, then we would recommend using images that are at least 600×600 pixels.

  • For themes that use rectangular featured images: 1200×687 pixels
  • For themes that use square featured images: 600×600 pixels

Your WordPress theme will generate additional sizes for featured images to use in different area such as homepage, blog page, or archive pages.

Featured images on homepage

What Image Sizes to Use for Social Media

Now if your WordPress theme is using featured images that are 16:9 in aspect ratio, then you can also use them as social media images for Twitter and Facebook.

However, you’ll need to explicitly tell those platforms which image you want to display when someone shares an article from your website.

To do that, you’ll need the All in One SEO plugin for WordPress. It is the best WordPress SEO plugin on the market used by over 3 million websites. It helps you optimize your website for search engines and social media platforms.

Note: There is also a limited free version of All in One SEO that you can try.

First, you need to install and activate the plugin. For more details, see our step by step guide on how to install a WordPress plugin.

Upon activation, the plugin will launch the setup wizard. Follow the on-screen instructions to complete the wizard. You can also see our guide on how to set up All in One SEO for step-by-step instructions.

After that, you need to visit All in One SEO » Social Networks page and switch to the Facebook tab. From here you can set ‘Featured Image’ as your default Open Graph image source.

Default image for Facebook Open Graph

You can then switch to Twitter tab and do the same.

Don’t forget to click on the Save Changes button to store your settings.

Now, if your WordPress theme used images in a different size, then Facebook and Twitter may not be able to display those images properly.

In that case, you can provide social media platforms with a custom image.

Simply create an image with 16:9 aspect ratio (1200×675 pixels or 680×382 pixels). Then edit the post or page and scroll down to AIOSEO Settings section below the editor.

From here, you need to switch to the Social tab and scroll down to Image source section. From the drop down menu, select Custom image and then upload your Facebook image.

Set custom image for Facebook

You’ll need to repeat the process on Twitter tab as well.

You will have to do this for all the articles you publish to ensure that social media use the image you want them to use.

For more social media image sizes, see our WordPress social media cheat sheet for beginners.

What Image Size to Use for Website Logo in WordPress

Many WordPress themes will let you know what image size you should use for your website logo.

For instance, our demo theme shows this message when we tried to upload a logo.

Logo image size recommendation

However, if you are using a newer WordPress theme with full site editing feature, then you may not get a recommendation for logo image size.

In that case, we recommend uploading different styles and sizes to see what looks best for your brand. A logo image size of 300×200 pixels can be a good starting point.

Site logo block editor

Editing Images for Your WordPress Website

Most WordPress users are not graphic designers by profession. However, you’ll need to use image editing software to create image sizes for your WordPress website.

WordPress itself comes with some basic image editing tools. To use them, simply go to the Media » Library page and click on an image.

This will open the image in a popup where you’ll see a button to edit image.

Edit image in WordPress

This will open the editing options.

The tools include basic image resizing, cropping, rotate, and flipping.

Image editing options in WordPress

This basic image editing comes in handy if you quickly need to fix an image. However, it is not the best way to edit your images day to day.

Luckily, there are several free and inexpensive options that you can use.

  • Canva – free web based image editing software. It also includes ready made templates for website images, logos, social media images, and more.
  • Pixlr – A freemium web based image editing software. Can be used to easily resize images for your blog posts.
  • Gimp – Free and open source image editing software. It works as a native desktop app on Windows, Mac, and Linux. Can be used to resize images, add layers of text, edit photos, and more.

We hope this article helped you learn more about WordPress image sizes and what image sizes to use on your website. You may also want to see our guide on how to choose the best website builder or our expert pick of best WordPress plugins for small business sites.

If you liked this article, then please subscribe to our YouTube Channel for WordPress video tutorials. You can also find us on Twitter and Facebook.

The post Beginner’s Guide to WordPress Image Sizes (+ Best Practices) first appeared on WPBeginner.

Multilingual Readability – Yes, We Know It’s All Greek To You, But It Also Reads Well Now Thanks To SmartCrawl!

SmartCrawl’s newest version release comes with an impressive new feature—support for Multilingual Readability.

Up to this point, the readability test in SmartCrawl could be used solely to calculate a score for posts or pages written in the English language.

Now, depending on what language you have set up in WordPress settings, SmartCrawl will use a different formula to calculate the readability score for a number of languages.

Our SEO analysis engine currently supports the following:

  • Czech
  • Dutch
  • French
  • German
  • Italian
  • Russian
  • Spanish

In this article, we’re going to take a look at this helpful new feature, and touch on a few related ones as well.

Continue reading, or jump ahead using these links:

Along with Multilingual Readability support, Post SEO Analysis will also support the above languages.

The Post SEO Analysis feature reads the page content and how it’s displayed in the frontend, then provides SEO recommendations based on the content added.

Having support for 7 languages will provide more accurate recommendations, as it uses different formulas for each one.

Let’s take a look at these settings in SmartCrawl.

Multilingual Readability

The key to learning is understanding. It’s not just about speaking in a language your audience comprehends; it’s presenting your words in a manner that is easily understood.

Since 1847, scholars have been measuring difficulty level in reading copy. Many indexes exist that measure readability of the English text— SMOG, Gunning fog, Automated, Coleman-Liau, and more.

All of these indexes convert readability to a mathematical formula, indicating how well your readers can comprehend the text. Although the formulas differ, they consistently place heavy emphasis on these two factors: sentence length and word length.

SmartCrawl uses the Flesch-Kincaid Test. What is that exactly? Read on…

The Flesch-Kincaid Test

Lawyer, author, and writing consultant Rudolph Flesch advocated the use of phonics rather than sight reading to enable students to sound-out unfamiliar words, a method often called “look-say”.

Flesch penned many books, the most famous probably being “Why Johnny Can’t Read, and What You Can Do About It”.

In 1943, Flesch published a readability formula in his dissertation, “Marks of a Readable Style.” That formula, the Flesch Reading Ease index, was the original Flesch test.

Flesch’s work with the Associated Press helped bring the reading level of front-page newspaper stories down by five grade levels. Implementing this formula increased Publishers readership by 40% to 60%.

In 1976, the U.S. Navy commissioned J. Peter Kincaid and his team to recalculate the Flesch Reading Ease to help sailors absorb Navy training manuals faster and understand them better.

The resulting formula was the Flesch-Kincaid Test, which is now a standard for the U.S. Department of Defense, the Internal Revenue Service, and the Social Services Administration. In fact, many states now require insurance policies and other legal documents to weigh in at no higher than a 9th grade reading level on the Flesch Kincaid scale.

SmartCrawl’s Language Support

Now that we understand a bit more about readability and the test we use to evaluate it, let’s look at these features in SmartCrawl.

Once you install & activate (or update) SmartCrawl, you’ll be greeted by the splash screen, heralding the new Language Support features.

SmartCrawl splash screen
SmartCrawl Splash screen.

Navigate to your Posts or Pages content list, and you’ll see a new SEO Meta [+] link, above the classic WordPress actions menu.

SEO Meta in pages-posts list menu
SEO Meta in pages-posts list menu.

Click on the [+] to see some basic information about the post’s current SEO-optimized Title and Description. This includes colored indicators showing the character count for each.

Green highlights represent counts within the recommended range, while yellow highlights represent counts that fall outside of that.

SEO meta in Pages-Posts list menu expanded
SEO meta in Pages-Posts list menu expanded.

There are also a few new columns in the Post/Page list, as follows:

  • SEO – enable Page Analysis in SmartCrawl > Settings
  • Readability – enable Readability Analysis in SmartCrawl > Settings
  • Robots Meta – shows the index settings you have enabled for crawler instructions

Hover your mouse over the number indicator in the SEO column to reveal a quick overview of the recommendations SmartCrawl has for that page or post.

Readability SEO details
Readability SEO details.

If you prefer these columns don’t show on your screen, they can be toggled On/Off by clicking the Screen Options tab at the top of the WordPress dashboard. Simpy tick/untick the coordinating checkboxes. (Don’t forget to hit the Apply button to save your changes.)

Screen options menu
WordPress screen options menu.

Additional SmartCrawl Settings

While we’re here, let’s look at a few more key features in SmartCrawl’s SEO toolbox.

In the editor screen (for any Post or Page), scroll to the bottom to access the SmartCrawl metabox.

There are four tabs available here. What you see depends on what you have enabled in SmartCrawl’s settings.These are:

  • SEO – customize the SEO Title and Description (that appear in search engine result pages), and run a full SEO analysis of your post.
  • Readability – the level of readability your content is for the average reader (determined by the Flesch-Kincaid test).
  • Social – customize a post’s OpenGraph elements for social network sharing.
  • Advanced – indexing, sitemap and automatic linking options for the post are found here.

We’ll look at each of these tabs a bit more in depth.

SEO Section

Under the SEO section, you’ll see a preview of how Google sees your post meta, with the Title at the top, followed by the post Permalink, then your post Description.

Click the EDIT META button to customize the title and description. Once again, the green underline means you’re within the desired length, while the yellow underline means you’re outside the ideal range.

Click the plus + icon to the right of either field to add dynamic data using the built-in macros from the dropdown menu. You can add as many as you like to mold the ideal structure and length for your title and description, including adding plain text to either field.

SEO meta data details
SEO meta data details.

SEO Analysis is at the bottom of the SEO section. (If it’s not showing, go into SmartCrawl settings and enable the option.)

Enter any focus keyword(s) in the text field, then click the REFRESH button to analyze the post for keywords.

SEO analysis keywords
SEO analysis of keywords.

You can repeat this process for as many keywords as you like, and adjust your post content accordingly to get the best keyword optimization results.

Keyword recommendations
Keyword recommendations.

Click the arrow to the right of any Recommendation to see details for making improvements.

Keyword recommendation details
Keyword recommendation details.

There is even an option to stop getting a popup every time you run an analysis on something you know you’re not going to change. Simply click the IGNORE button on that suggestion.

Readability Section

This section allows you to manually run the Flesch-Kincaid Test.

Click the REFRESH button to see how well your post fairs for the average reader in the supported language. The ideal or target range is 70 and above.

Readability score
Readability score from the Flesch-Kincaid test.

In this case, I’ve been given a 60. I should attempt to improve by clicking the arrow to the right of the Flesch-Kincaid Test, and adjusting according to the recommendations.

Readability how to fix or ignore
How to fix or ignore the Readability.

Note, you can also mute this by using the IGNORE button.

Social Section

Want your post Title, Description, or Featured Image(s) to be different when shared to social media?

No problem! Enable OpenGraph support for the post in the Social section, and configure the specifics you need for Title, Description, and Featured Images.

There is one for social networks in general (like Facebook), and one specific to Twitter.

Social section
Social section, with OpenGraph and Twitter options.

Advanced Section

In the Advanced section, you can adjust the indexing options for the post, should they differ from what you have set as the post type’s defaults (in SmartCrawl > Title & Meta).

These are the options:

  • Index – instruct search engines whether this post should appear/not appear in results.
  • Follow – tell search engines to follow/not follow the links on your page (applies to crawling them as well).
  • Archive – instruct search engines to store/not store a cached version of this page.
  • Snippet – allow search engines to show a snippet of this page in search results, and prevent them from caching the page.
Advanced section, indexing
Indexing, in the Advanced section.

In this sections, you can also manage Canonical page versions, 301 Redirects, set Sitemap Priority, and enable/disable Automatic Linking in a post (if you don’t see this option, you can enable it in SmartCrawl > Advanced Tools).

Advanced section, additional options
Additional options in the advanced section.

Linguistically Speaking

A readability score is not inherently good or bad. Simply put, it is the level you aspire to in any given piece of content based on the audience you are writing it for.

SEO readability checks analyze user posts or pages, and indicate what can be done to make them more readable. The ability to test that within a number of different languages is huge.

Try the SmartCrawl plugin today and get the simple but powerful Multilingual Language Support features, along with a stellar suite of SEO optimizations. You can take our full membership for a spin with a free trial, which includes all 11 of our Pro Plugins, Free Migration Assistance, 24/7 Expert Live Support (for ALL things WordPress), plus a lot more.

Knowing readability level helps users publish content that is more SEO-friendly, engaging, and accessible to a wider audience—therefore potentially performing better and ranking higher.

That’s a win, vítězství, overwinning, victoire, sieg, vittoria, победа, victoria!