<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Guides Archives - wpjoli</title>
	<atom:link href="https://wpjoli.com/blog/category/guides/feed/" rel="self" type="application/rss+xml" />
	<link>https://wpjoli.com/blog/category/guides/</link>
	<description>Sleek Wordpress Plugins</description>
	<lastBuildDate>Fri, 10 Oct 2025 07:51:33 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://wpjoli.com/wp-content/uploads/2023/01/wpjoli-favicon-2023-40x40.png</url>
	<title>Guides Archives - wpjoli</title>
	<link>https://wpjoli.com/blog/category/guides/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>How to Watermark Your Featured Images with a Logo</title>
		<link>https://wpjoli.com/blog/watermark-featured-images-with-logo/</link>
					<comments>https://wpjoli.com/blog/watermark-featured-images-with-logo/#respond</comments>
		
		<dc:creator><![CDATA[Michael]]></dc:creator>
		<pubDate>Mon, 04 Nov 2024 04:10:48 +0000</pubDate>
				<category><![CDATA[Guides]]></category>
		<category><![CDATA[Smart Auto Featured Image]]></category>
		<category><![CDATA[watermark featured image]]></category>
		<category><![CDATA[watermark image wordpress]]></category>
		<guid isPermaLink="false">https://wpjoli.com/?p=2528</guid>

					<description><![CDATA[<p>Watermarking images is a powerful way to brand your content, protect your visuals, and maintain a professional look. Whether you’re promoting a blog, a business, or building your brand identity, watermarking each featured image with your logo makes your content recognizable and helps prevent unauthorized use. In this guide, we’ll explore some popular methods for &#8230; <a href="https://wpjoli.com/blog/watermark-featured-images-with-logo/">Continued</a></p>
<p>The post <a href="https://wpjoli.com/blog/watermark-featured-images-with-logo/">How to Watermark Your Featured Images with a Logo</a> appeared first on <a href="https://wpjoli.com">wpjoli</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Watermarking images is a powerful way to brand your content, protect your visuals, and maintain a professional look. Whether you’re promoting a blog, a business, or building your brand identity, watermarking each featured image with your logo makes your content recognizable and helps prevent unauthorized use.</p>


<p>In this guide, we’ll explore some popular methods for watermarking images with a logo and show you how much easier it can be with the <strong><a href="https://wpjoli.com/smart-auto-featured-image/">Smart Auto Featured Image</a></strong> plugin for WordPress.</p>


<h2 class="wp-block-heading">Why Watermark Your Featured Images?</h2>


<ul class="wp-block-list">
 
 <li><strong>Protect Your Content:</strong> Watermarks deter others from copying and reusing your visuals without permission.</li>
 
 
 <li><strong>Brand Recognition:</strong> A logo watermark keeps your brand visible, no matter where the image appears online.</li>
 
 
 <li><strong>Professional Appeal:</strong> A uniform watermark gives your content a polished, consistent look.</li>
 
</ul>


<h2 class="wp-block-heading">Different Ways to Watermark an Image with a Logo</h2>


<p>Watermarking your featured images can be achieved using different ways. The most obvious one is to use an image editing software, but this is not the only way to do.</p>


<h3 class="wp-block-heading">Using Image Editing Software (e.g., Photoshop, GIMP)</h3>


<ul class="wp-block-list">
 
 <li><strong>Steps</strong>: Import your image, add your logo as a new layer, adjust opacity, and place it strategically.</li>
 
 
 <li><strong>Pros</strong>: Offers full control over placement, size, and opacity of the watermark.</li>
 
 
 <li><strong>Cons</strong>: Time-consuming if you have many images to watermark and requires basic design software knowledge.</li>
 
</ul>


<h3 class="wp-block-heading">Online Watermarking Tools (e.g., Watermarkly, Canva)</h3>


<ul class="wp-block-list">
 
 <li><strong>Steps</strong>: Upload your image to an online tool, add and adjust your logo watermark.</li>
 
 
 <li><strong>Pros</strong>: Easy-to-use interface and accessible without software installation.</li>
 
 
 <li><strong>Cons</strong>: Can be tedious to use for each image and may require a premium version for batch processing or custom placements.</li>
 
</ul>


<h3 class="wp-block-heading">WordPress Plugins for Watermarking (e.g., Image Watermark)</h3>


<ul class="wp-block-list">
 
 <li><strong>Steps</strong>: Install and configure a plugin, set your logo, and customize watermark placement for images uploaded to the media library.</li>
 
 
 <li><strong>Pros</strong>: Automates the watermarking process for all images.</li>
 
 
 <li><strong>Cons</strong>: Limited control over specific image placements and can be resource-intensive.</li>
 
</ul>


<h2 class="wp-block-heading">How to Watermark with Smart Auto Featured Image</h2>


<p>If you’re looking for a simple, automated way to watermark your featured images, <strong>Smart Auto Featured Image</strong> makes it a breeze with its dynamic layer feature. Here’s how it works:</p>


<ul class="wp-block-list">
 
 <li><strong>Automatic Logo Insertion:</strong> Simply enable the logo layer within the plugin’s template editor. Smart Auto Featured Image pulls the logo directly from your website settings, so every image is watermarked consistently.</li>
 
 
 <li><strong>Customizable Placement</strong>: You can adjust the placement, opacity, and size of your watermark to fit your brand’s style, ensuring a professional look every time.</li>
 
 
 <li><strong>Dynamic Updates</strong>: With Smart Auto Featured Image, you can easily update your watermark settings across all images without editing each one individually. This keeps your brand fresh and saves time on re-edits.</li>
 
</ul>


<p><em>Example:</em> If you need to watermark each new blog post’s featured image with your logo, the plugin’s dynamic layer allows you to insert the logo at the click of a button—saving you from repetitive, manual work.</p>


<h2 class="wp-block-heading">Step-by-Step Guide: Watermarking with Smart Auto Featured Image</h2>


<p><strong>Set Up Your Logo Layer</strong>: Open Smart Auto Featured Image’s template editor, and draw a new Content-based image layer on the canvas.</p>


<figure data-wp-context="{&quot;imageId&quot;:&quot;6a8f066ecf65d&quot;}" data-wp-interactive="core/image" data-wp-key="6a8f066ecf65d" class="wp-block-image aligncenter size-large wp-lightbox-container"><img fetchpriority="high" decoding="async" width="1024" height="597" data-wp-class--hide="state.isContentHidden" data-wp-class--show="state.isContentVisible" data-wp-init="callbacks.setButtonStyles" data-wp-on--click="actions.showLightbox" data-wp-on--load="callbacks.setButtonStyles" data-wp-on-window--resize="callbacks.setButtonStyles" src="https://wpjoli.com/wp-content/uploads/2024/10/image-1-1024x597.png" alt="" class="wp-image-2529" srcset="https://wpjoli.com/wp-content/uploads/2024/10/image-1-1024x597.png 1024w, https://wpjoli.com/wp-content/uploads/2024/10/image-1-300x175.png 300w, https://wpjoli.com/wp-content/uploads/2024/10/image-1-768x448.png 768w, https://wpjoli.com/wp-content/uploads/2024/10/image-1-1536x895.png 1536w, https://wpjoli.com/wp-content/uploads/2024/10/image-1-2048x1194.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /><button
			class="lightbox-trigger"
			type="button"
			aria-haspopup="dialog"
			aria-label="Enlarge"
			data-wp-init="callbacks.initTriggerButton"
			data-wp-on--click="actions.showLightbox"
			data-wp-style--right="state.imageButtonRight"
			data-wp-style--top="state.imageButtonTop"
		>
			<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
				<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
			</svg>
		</button></figure>


<p><strong>Adjust Content-based settings</strong>: In the property panel on the right, use the dropdown to set the Image source to &#8220;Site logo&#8221;.</p>


<figure class="wp-block-image aligncenter size-medium"><img decoding="async" width="300" height="248" src="https://wpjoli.com/wp-content/uploads/2024/10/image-2-300x248.png" alt="" class="wp-image-2531" srcset="https://wpjoli.com/wp-content/uploads/2024/10/image-2-300x248.png 300w, https://wpjoli.com/wp-content/uploads/2024/10/image-2.png 561w" sizes="(max-width: 300px) 100vw, 300px" /></figure>


<p><strong>Adjust the image fit</strong>: Make sure to set the image fit to &#8220;Contain&#8221; if you don&#8217;t want your logo to be cropped.</p>


<p><strong>Adjust Position and Style</strong>: Place the logo where you want it, adjust opacity, and choose your desired size. You can use the layer alignment buttons to perfectly center the logo for example.</p>


<p><strong>Save the Template</strong>: Once your logo watermark is positioned, save the template so that you can use it later in your posts.</p>


<p><strong>Generate with Ease</strong>: Every time you publish a post, select the template, click the Preview button to show up the preview and check the render.</p>


<figure class="wp-block-image aligncenter size-full is-resized"><img decoding="async" width="658" height="928" src="https://wpjoli.com/wp-content/uploads/2024/10/image-3.png" alt="" class="wp-image-2532" style="width:378px;height:auto" srcset="https://wpjoli.com/wp-content/uploads/2024/10/image-3.png 658w, https://wpjoli.com/wp-content/uploads/2024/10/image-3-213x300.png 213w" sizes="(max-width: 658px) 100vw, 658px" /></figure>


<p><strong>Preview &amp; Generate</strong>: Every time you publish a post, select the template, click the Preview button to show up the preview and check the render. On the below image, you will see the site logo automatically pulled from the WordPress website and inserted. All is left to do is to click the &#8220;Generate featured image&#8221; button. The featured image will be automatically inserted to your post !</p>


<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="822" height="703" src="https://wpjoli.com/wp-content/uploads/2024/10/image-6.png" alt="" class="wp-image-2535" srcset="https://wpjoli.com/wp-content/uploads/2024/10/image-6.png 822w, https://wpjoli.com/wp-content/uploads/2024/10/image-6-300x257.png 300w, https://wpjoli.com/wp-content/uploads/2024/10/image-6-768x657.png 768w" sizes="auto, (max-width: 822px) 100vw, 822px" /></figure>


<h2 class="wp-block-heading">Final Thoughts</h2>


<p>Watermarking is an essential step to brand your images and maintain control over your content. Although several methods exist, <strong>Smart Auto Featured Image</strong> simplifies the process by automating watermarking directly in WordPress. With this plugin, you can apply your logo to every featured image consistently, efficiently, and with minimal effort—leaving you more time to focus on creating great content.</p>


<p><strong><a href="https://wpjoli.com/smart-auto-featured-image/">Get Started with Smart Auto Featured Image</a></strong> and bring uniform branding to your WordPress site’s visuals today!</p>
<p>The post <a href="https://wpjoli.com/blog/watermark-featured-images-with-logo/">How to Watermark Your Featured Images with a Logo</a> appeared first on <a href="https://wpjoli.com">wpjoli</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://wpjoli.com/blog/watermark-featured-images-with-logo/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How to Customize Joli Table of Contents: Beginner &#038; Advanced Tips</title>
		<link>https://wpjoli.com/blog/customize-joli-table-of-contents/</link>
					<comments>https://wpjoli.com/blog/customize-joli-table-of-contents/#respond</comments>
		
		<dc:creator><![CDATA[Michael]]></dc:creator>
		<pubDate>Fri, 15 Dec 2023 09:50:30 +0000</pubDate>
				<category><![CDATA[Guides]]></category>
		<category><![CDATA[Joli Table Of Contents]]></category>
		<guid isPermaLink="false">https://wpjoli.com/?p=1857</guid>

					<description><![CDATA[<p>Joli Table of Contents is a table of contents plugin for WordPress. It stands out by its high potential in customization. The default look of the table of contents is rather simple and will blend well with most themes. However, under the hood Joli Table of Contents has been designed to be fully customizable. In &#8230; <a href="https://wpjoli.com/blog/customize-joli-table-of-contents/">Continued</a></p>
<p>The post <a href="https://wpjoli.com/blog/customize-joli-table-of-contents/">How to Customize Joli Table of Contents: Beginner &#038; Advanced Tips</a> appeared first on <a href="https://wpjoli.com">wpjoli</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Joli Table of Contents is a table of contents plugin for WordPress. It stands out by its high potential in customization. </p>



<p>The default look of the table of contents is rather simple and will blend well with most themes. However, under the hood Joli Table of Contents has been designed to be fully customizable.</p>



<p>In this article, I will customize an exemple table of contents from scratch, by leveraging Joli Table of Contents&#8217; advanced customization features.</p>



<h2 class="wp-block-heading">The default table of contents</h2>



<p>In our example, we will use the default &#8220;Basic Light&#8221; theme. This is how it looks like with the default settings: </p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" src="https://wpjoli.com/wp-content/uploads/2023/12/joli-table-of-contents-advanced-customization-00.png" alt="" class="wp-image-1860" width="827" height="479" srcset="https://wpjoli.com/wp-content/uploads/2023/12/joli-table-of-contents-advanced-customization-00.png 827w, https://wpjoli.com/wp-content/uploads/2023/12/joli-table-of-contents-advanced-customization-00-300x174.png 300w, https://wpjoli.com/wp-content/uploads/2023/12/joli-table-of-contents-advanced-customization-00-768x445.png 768w" sizes="auto, (max-width: 827px) 100vw, 827px" /><figcaption class="wp-element-caption">Joli Table of Contents with Basic Light theme</figcaption></figure>



<h2 class="wp-block-heading">Basic styles: borders / rounded corners / colors</h2>



<p>The first we are going to do to get a more custom look using the plugin&#8217;s settings is the following: </p>



<ul class="wp-block-list">
<li>Add a border</li>



<li>Round the corners</li>



<li>Change some colors</li>
</ul>



<h3 class="wp-block-heading">Custom border</h3>



<p>To add a border, let&#8217;s go to the settings page. Under <strong><em>STYLES &gt; TABLE OF CONTENTS</em></strong>, let&#8217;s set the Border to 3px on each side.</p>



<p>Next, we are going to set the Border radius to 12px on each corner. This setting will make the corners rounded.</p>



<p>Now let&#8217;s give a custom color to the border, and this is how the settings look like so far:</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" src="https://wpjoli.com/wp-content/uploads/2023/12/image-4.png" alt="" class="wp-image-1865" width="495" height="365" srcset="https://wpjoli.com/wp-content/uploads/2023/12/image-4.png 989w, https://wpjoli.com/wp-content/uploads/2023/12/image-4-300x221.png 300w, https://wpjoli.com/wp-content/uploads/2023/12/image-4-768x567.png 768w" sizes="auto, (max-width: 495px) 100vw, 495px" /></figure>



<p>At this point, our table of contents looks like this:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="835" height="487" src="https://wpjoli.com/wp-content/uploads/2023/12/image-5.png" alt="" class="wp-image-1866" srcset="https://wpjoli.com/wp-content/uploads/2023/12/image-5.png 835w, https://wpjoli.com/wp-content/uploads/2023/12/image-5-300x175.png 300w, https://wpjoli.com/wp-content/uploads/2023/12/image-5-768x448.png 768w" sizes="auto, (max-width: 835px) 100vw, 835px" /></figure>



<h3 class="wp-block-heading">Table of contents colors</h3>



<p>For our style, we want to have a blue colored header with the table of contents title in white and a white background for the table of contents body (behind the headings).</p>



<p>Under <strong><em>STYLES &gt; TABLE OF CONTENTS</em></strong>, let&#8217;s set the table of contents <strong>Background color</strong> to our custom blue color (#5838e9). This will make the whole table of contents blue.</p>



<p>Under <strong><em>STYLES &gt; TABLE OF CONTENTS TITLE</em></strong>, let&#8217;s set the table of contents <strong>Title color</strong> to white (#ffffff).</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="839" height="487" src="https://wpjoli.com/wp-content/uploads/2023/12/image-6.png" alt="" class="wp-image-1868" srcset="https://wpjoli.com/wp-content/uploads/2023/12/image-6.png 839w, https://wpjoli.com/wp-content/uploads/2023/12/image-6-300x174.png 300w, https://wpjoli.com/wp-content/uploads/2023/12/image-6-768x446.png 768w" sizes="auto, (max-width: 839px) 100vw, 839px" /></figure>



<p>What we want to do now, is to set a different body color. Let&#8217;s make it white, and slightly transparent to bring out a tiny bit of a blue shade.</p>



<p>Under <strong><em>STYLES &gt; TABLE OF CONTENTS BODY</em></strong>, we are setting a white, with an opacity of 96%.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="858" src="https://wpjoli.com/wp-content/uploads/2023/12/image-7-1024x858.png" alt="" class="wp-image-1869" srcset="https://wpjoli.com/wp-content/uploads/2023/12/image-7-1024x858.png 1024w, https://wpjoli.com/wp-content/uploads/2023/12/image-7-300x251.png 300w, https://wpjoli.com/wp-content/uploads/2023/12/image-7-768x643.png 768w, https://wpjoli.com/wp-content/uploads/2023/12/image-7.png 1077w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>If you are wondering why I did not just change the Header background color, it&#8217;s because of the table of contents border that we set. In this particular case, the anti-aliasing from the rounded corners was creating a small, but noticeable hair thin white line near the corners. So by setting the blue background color at a deeper level (the TOC root), it prevents this visual defect from happening. </p>



<p>The table of contents now looks like this:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="839" height="487" src="https://wpjoli.com/wp-content/uploads/2023/12/image-8.png" alt="" class="wp-image-1870" srcset="https://wpjoli.com/wp-content/uploads/2023/12/image-8.png 839w, https://wpjoli.com/wp-content/uploads/2023/12/image-8-300x174.png 300w, https://wpjoli.com/wp-content/uploads/2023/12/image-8-768x446.png 768w" sizes="auto, (max-width: 839px) 100vw, 839px" /></figure>



<p>Because of the blue color around the heading area, the space between the TOC title and the headings looks narrower. Let&#8217;s fix this by setting a Margin bottom to the Header.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="356" src="https://wpjoli.com/wp-content/uploads/2023/12/image-9-1024x356.png" alt="" class="wp-image-1871" srcset="https://wpjoli.com/wp-content/uploads/2023/12/image-9-1024x356.png 1024w, https://wpjoli.com/wp-content/uploads/2023/12/image-9-300x104.png 300w, https://wpjoli.com/wp-content/uploads/2023/12/image-9-768x267.png 768w, https://wpjoli.com/wp-content/uploads/2023/12/image-9.png 1076w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Under <strong><em>STYLES &gt; TABLE OF CONTENTS HEADER</em></strong>, we are setting the bottom <strong>Margin </strong>to 14px.</p>



<p>Finally, let&#8217;s change the headings color to match our table of contents color.</p>



<p>Under <strong><em>STYLES &gt; HEADINGS TEXT LINK</em></strong>, we are setting the <strong>Color </strong>to our custom blue.</p>



<p>This is what the table of contents looks like at this point:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="839" height="508" src="https://wpjoli.com/wp-content/uploads/2023/12/image-10.png" alt="" class="wp-image-1872" srcset="https://wpjoli.com/wp-content/uploads/2023/12/image-10.png 839w, https://wpjoli.com/wp-content/uploads/2023/12/image-10-300x182.png 300w, https://wpjoli.com/wp-content/uploads/2023/12/image-10-768x465.png 768w" sizes="auto, (max-width: 839px) 100vw, 839px" /></figure>



<h2 class="wp-block-heading">Increase spacing between headings</h2>



<p>In order to make the table of contents look less packed, we are now going to increase the space between the headings.</p>



<p>Under <strong><em>STYLES &gt; HEADINGS TEXT LINK</em></strong>, we are setting the <strong>Padding </strong>top and bottom to 5px each, to keep it even. We are using padding instead margin in this case because it will provide more area to the heading to click on.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="402" src="https://wpjoli.com/wp-content/uploads/2023/12/image-11-1024x402.png" alt="" class="wp-image-1873" srcset="https://wpjoli.com/wp-content/uploads/2023/12/image-11-1024x402.png 1024w, https://wpjoli.com/wp-content/uploads/2023/12/image-11-300x118.png 300w, https://wpjoli.com/wp-content/uploads/2023/12/image-11-768x302.png 768w, https://wpjoli.com/wp-content/uploads/2023/12/image-11.png 1080w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>The table of content now looks like this:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="839" height="658" src="https://wpjoli.com/wp-content/uploads/2023/12/image-12.png" alt="" class="wp-image-1874" srcset="https://wpjoli.com/wp-content/uploads/2023/12/image-12.png 839w, https://wpjoli.com/wp-content/uploads/2023/12/image-12-300x235.png 300w, https://wpjoli.com/wp-content/uploads/2023/12/image-12-768x602.png 768w" sizes="auto, (max-width: 839px) 100vw, 839px" /></figure>



<h2 class="wp-block-heading">Custom background image</h2>



<p>Let&#8217;s push the customization a little further now by using some custom CSS. The goal here is to set a custom background pattern on top of our slightly transparent white body background.</p>



<p>To make things simple, we are going to use an SVG pattern generator like <a rel="noreferrer noopener" href="https://pattern.monster/flower-2/" data-type="URL" data-id="https://pattern.monster/flower-2/" target="_blank">Pattern Monster</a>, and all we have to do is to pick a pattern, customize colors (make sure to adjust transparency). </p>



<p>The website lets you copy the corresponding CSS code by a click of a button but because it is not possible to save HTML in the settings, we need to encode the SVG in base 64.</p>



<p>The website <a rel="noreferrer noopener" href="https://fffuel.co/eeencode/" target="_blank">fffuel.co</a> lets you do that easily. Just import or paste your SVG, and it will generate automatically the corresponding <strong>URL string</strong> that we can use for our CSS.</p>



<p>To make our table of contents body have this custom background, we need to target it with CSS using the <code>.wpj-jtoc--body</code> class. All we have to do now is to paste the base 64 encoded CSS code generated and here we have our CSS rule:</p>



<p>Under <strong><em>STYLES &gt; CUSTOM CSS</em></strong>, let&#8217;s just paste this custom CSS.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="css" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">.wpj-jtoc--body {
    background-image: url("data:image/svg+xml;base64,PHN2ZyBpZD0ncGF0dGVybklkJyB3aWR0aD0nMTAwJScgaGVpZ2h0PScxMDAlJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnPjxkZWZzPjxwYXR0ZXJuIGlkPSdhJyBwYXR0ZXJuVW5pdHM9J3VzZXJTcGFjZU9uVXNlJyB3aWR0aD0nMjAnIGhlaWdodD0nMjAnIHBhdHRlcm5UcmFuc2Zvcm09J3NjYWxlKDIpIHJvdGF0ZSgwKSc+PHJlY3QgeD0nMCcgeT0nMCcgd2lkdGg9JzEwMCUnIGhlaWdodD0nMTAwJScgZmlsbD0naHNsYSgwLCAwJSwgMTAwJSwgMCknLz48cGF0aCBkPSdNMC0xMEMtLjAxMS00LjQ5LTQuNDg1LjAzLTEwIC4wMy00LjQ4NS4wMy0uMDExIDQuNDkgMCAxMCAuMDExIDQuNDk4IDQuNDkzLjAwMSAxMC0uMDEgNC40OTMtLjAyLjAxMi00LjQ5OCAwLTEwem0wIDIwYy0uMDExIDUuNTEtNC40ODUgMTAuMDMtMTAgMTAuMDMgNS41MTUgMCA5Ljk4OSA0LjQ2IDEwIDkuOTcuMDExLTUuNTAyIDQuNDkzLTkuOTk5IDEwLTEwLjAxQzQuNDkzIDE5Ljk4LjAxMiAxNS41MDIgMCAxMHptMjAtMjBDMTkuOTg5LTQuNDkgMTUuNTE1LjAzIDEwIC4wM2M1LjUxNSAwIDkuOTg5IDQuNDYgMTAgOS45Ny4wMTEtNS41MDIgNC40OTMtOS45OTkgMTAtMTAuMDEtNS41MDctLjAxLTkuOTg4LTQuNDg4LTEwLTkuOTl6bTAgMjBjLS4wMTEgNS41MS00LjQ4NSAxMC4wMy0xMCAxMC4wMyA1LjUxNSAwIDkuOTg5IDQuNDYgMTAgOS45Ny4wMTEtNS41MDIgNC40OTMtOS45OTkgMTAtMTAuMDEtNS41MDctLjAxLTkuOTg4LTQuNDg4LTEwLTkuOTl6JyAgc3Ryb2tlLXdpZHRoPScxJyBzdHJva2U9J2hzbGEoMjU5LCA1OSUsIDU5JSwgMC4wNCknIGZpbGw9J25vbmUnLz48cGF0aCBkPSdNMTAgMEM5Ljk4OSA1LjUxIDUuNTE1IDEwLjAzIDAgMTAuMDNjNS41MTUgMCA5Ljk4OSA0LjQ2IDEwIDkuOTcuMDExLTUuNTAyIDQuNDkzLTkuOTk4IDEwLTEwLjAxLTUuNTA3LS4wMS05Ljk4OC00LjQ4OC0xMC05Ljk5eicgIHN0cm9rZS13aWR0aD0nMScgc3Ryb2tlPSdoc2xhKDI1OSwgNTklLCA1OSUsIDAuMDQpJyBmaWxsPSdub25lJy8+PC9wYXR0ZXJuPjwvZGVmcz48cmVjdCB3aWR0aD0nODAwJScgaGVpZ2h0PSc4MDAlJyB0cmFuc2Zvcm09J3RyYW5zbGF0ZSgwLDApJyBmaWxsPSd1cmwoI2EpJy8+PC9zdmc+");
}</pre>



<p>Here is our table of contents with a custom background:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="839" height="658" src="https://wpjoli.com/wp-content/uploads/2023/12/image-13.png" alt="" class="wp-image-1876" srcset="https://wpjoli.com/wp-content/uploads/2023/12/image-13.png 839w, https://wpjoli.com/wp-content/uploads/2023/12/image-13-300x235.png 300w, https://wpjoli.com/wp-content/uploads/2023/12/image-13-768x602.png 768w" sizes="auto, (max-width: 839px) 100vw, 839px" /></figure>



<h2 class="wp-block-heading">Custom styles for specific headings depth</h2>



<p>Let&#8217;s keep pushing our customization journey by leveraging another built-in capability of Joli Table of Contents.</p>



<p>For each generated heading, Joli Table of Contents automatically &#8220;tags&#8221; it with a specific depth class. This way, it is easy to target different depth for styling.</p>



<p>The way it works is the following: if the heading is of type H2, it will get the <code>.--jtoc-h2</code> CSS class. if the heading is of type H3, it will get the <code>.--jtoc-h3</code> CSS class, and so on until H6 depth.</p>



<p>From there, and because of the way Joli Table of Contents works, we need to create a specific CSS rule to target specific heading depth. We cannot just use the <code>.--jtoc-h2</code> class by itself or it will give an unwanted result.</p>



<p>Here is the rule that you need to follow: <code>.--jtoc-h2&gt;.wpj-jtoc--item-content a</code></p>



<p>This rule targets all headings of type H2, and all links contained within .<code>wpj-jtoc--item-content</code>, directly after the <code>.--jtoc-h2</code> element.</p>



<p>In the following example, we are going to style every heading of type H2, and make the font weight to be bold.</p>



<p>The custom CSS needs to be pasted in the Custom CSS section of the settings.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="css" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">.wpj-jtoc .--jtoc-h2>.wpj-jtoc--item-content a {
    font-weight: bold;
}</pre>



<p>This is what the Table of contents looks like now:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="839" height="658" src="https://wpjoli.com/wp-content/uploads/2023/12/image-14.png" alt="" class="wp-image-1877" srcset="https://wpjoli.com/wp-content/uploads/2023/12/image-14.png 839w, https://wpjoli.com/wp-content/uploads/2023/12/image-14-300x235.png 300w, https://wpjoli.com/wp-content/uploads/2023/12/image-14-768x602.png 768w" sizes="auto, (max-width: 839px) 100vw, 839px" /></figure>



<h2 class="wp-block-heading">Custom HTML after specific headings</h2>



<p>Now, to go even further, we are going to create a visual &#8220;separation&#8221; between each heading of type H2. For simplicity&#8217;s sake, we are going to create a simple horizontal line.</p>



<p>To achieve this, we are going to leverage the built-in <a href="https://wpjoli.com/docs/joli-table-of-contents/developer-hooks/actions/" data-type="docs" data-id="1134">action hooks</a> and insert custom HTML dynamically.</p>



<p>For this specific task, the most appropriate hook is <code>joli_toc_before_begin_item_content</code>. When the hook is triggered, it comes with a variable ($args) containing the current heading information while it&#8217;s being processed.</p>



<p>$args is an Array and contains the following offsets:</p>



<pre class="wp-block-code"><code>    $args&#91;'id']      // The heading id (its html anchor)
    $args&#91;'title']   // The heading title as it will show
    $args&#91;'counter'] // The heading counter (1, or 1.1, or 2.1.1, etc)
    $args&#91;'depth']   // The heading depth (from 2 to 6)
    $args&#91;'url']     // Optional url that would override the id</code></pre>



<p>We can the use this to have a fine control over the way our custom HTML will be inserted.</p>



<p>Our goal is to insert an horizontal line before each heading of type H2, except for the first one.</p>



<p>To do that, we are making sur that the counter must be different from &#8220;1&#8221; which corresponds to the very first heading. The second condition will be matched against the depth. We only want depth of level 2.</p>



<p>The following snippet must be placed in your theme&#8217;s functions.php.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">add_action('joli_toc_before_begin_item_content', function ($args) {
    //Skip first heading and only process H2 headings
    if ($args['counter'] != '1' &amp;&amp; $args['depth'] == 2){
        echo '&lt;hr>'; //Horizontal line
    }
}, 10, 1);
</pre>



<p>Here is our table of contents now with the horizontal lines:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="839" height="716" src="https://wpjoli.com/wp-content/uploads/2023/12/image-15.png" alt="" class="wp-image-1879" srcset="https://wpjoli.com/wp-content/uploads/2023/12/image-15.png 839w, https://wpjoli.com/wp-content/uploads/2023/12/image-15-300x256.png 300w, https://wpjoli.com/wp-content/uploads/2023/12/image-15-768x655.png 768w" sizes="auto, (max-width: 839px) 100vw, 839px" /></figure>



<h2 class="wp-block-heading">Custom bullet points instead of standard numeration</h2>



<p>To give a more unique look to our table of contents, we are going to get rid of the numeration, and instead, we want to have custom bullet points shaped as a pill.</p>



<p>First of all, we need to turn off the numeration in the settings:</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="218" src="https://wpjoli.com/wp-content/uploads/2023/12/image-16-1024x218.png" alt="" class="wp-image-1881" srcset="https://wpjoli.com/wp-content/uploads/2023/12/image-16-1024x218.png 1024w, https://wpjoli.com/wp-content/uploads/2023/12/image-16-300x64.png 300w, https://wpjoli.com/wp-content/uploads/2023/12/image-16-768x164.png 768w, https://wpjoli.com/wp-content/uploads/2023/12/image-16.png 1055w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>The next step is to use another action hook in order to inject custom HTML right before each heading.</p>



<p>The hook that we need for this is <code><a rel="noreferrer noopener" href="https://wpjoli.com/docs/joli-table-of-contents/developer-hooks/actions/joli_toc_after_begin_item_link/" data-type="docs" data-id="1167" target="_blank">joli_toc_after_begin_item_link</a></code>.</p>



<p>The following snippet must be placed in your theme&#8217;s functions.php.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">add_action('joli_toc_after_begin_item_link', function ($args) {
    echo '&lt;span class="pill-bullet">&lt;/span>'; // Custom HTML that will be inserted before each heading
}, 10, 1);</pre>



<p>The second step in this process is to give some styles to the <code>.pill-bullet</code> class so that our pill shaped bullet point actually show up.</p>



<p>In the Custom CSS section, we are going to add this rule that will render a &#8220;green pill&#8221; :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="css" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">.pill-bullet {
    display: inline-block;
    width: 20px;
    height: 8px;
    background: #34ddb4;
    margin-right: 10px;
    border-radius: 10px;
}</pre>



<p>We can see here that the numeration has been replaced by our custom HTML. If we wanted to, we could add more complexity and have different colors or shapes per heading depth.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="831" height="716" src="https://wpjoli.com/wp-content/uploads/2023/12/image-17.png" alt="" class="wp-image-1882" srcset="https://wpjoli.com/wp-content/uploads/2023/12/image-17.png 831w, https://wpjoli.com/wp-content/uploads/2023/12/image-17-300x258.png 300w, https://wpjoli.com/wp-content/uploads/2023/12/image-17-768x662.png 768w" sizes="auto, (max-width: 831px) 100vw, 831px" /></figure>



<h2 class="wp-block-heading">Add a custom link at the bottom of the Table Of Contents</h2>



<p>Still using action hooks, let&#8217;s see how we can add a custom link to the bottom of our TOC. This link will be present on every single TOC.</p>



<p>The hook that we need for this is <code><a href="https://wpjoli.com/docs/joli-table-of-contents/developer-hooks/actions/joli_toc_after_headings/" data-type="docs" data-id="1163" target="_blank" rel="noreferrer noopener">joli_toc_after_headings</a></code>.</p>



<p>In this example, out link will be wrapped in a div with some inline styles to make the link centered. The following snippet must be placed in your theme&#8217;s functions.php.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">add_action('joli_toc_after_headings', function ($args) {
    echo '&lt;div style="text-align:center;width:100%">&lt;a href="https://my-custom-link.com" class="ext-link">External link&lt;/a>&lt;/div>';
}, 10, 1);</pre>



<p>Still in the Custom CSS section, we are going to give some basic style to our text link :</p>



<pre class="EnlighterJSRAW" data-enlighter-language="css" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">a.ext-link {
    text-transform: uppercase;
    font-size: 10px;
    font-weight: 700;
    color: gray;
}</pre>



<p>And voilà ! Here is our table of contents with the link at the bottom:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="831" height="759" src="https://wpjoli.com/wp-content/uploads/2023/12/image-18.png" alt="" class="wp-image-1884" srcset="https://wpjoli.com/wp-content/uploads/2023/12/image-18.png 831w, https://wpjoli.com/wp-content/uploads/2023/12/image-18-300x274.png 300w, https://wpjoli.com/wp-content/uploads/2023/12/image-18-768x701.png 768w" sizes="auto, (max-width: 831px) 100vw, 831px" /></figure>



<h2 class="wp-block-heading">Altering headings</h2>



<p>This is another advanced feature that you can use to have full control over your headings.</p>



<p>Whether you want to target a specific keyword or add a random string, you can use the <a href="https://wpjoli.com/docs/joli-table-of-contents/developer-hooks/filters/joli_toc_headings/" data-type="docs" data-id="1140">joli_toc_headings</a> filter hook to alter the actual output.</p>



<p>In the following example, we are going to remove the vowels from every heading. It is not really useful, but it is just to demonstrate how it&#8217;s done and so you can use the same pattern for a more useful application.</p>



<p>The following snippet must be placed in your theme&#8217;s functions.php.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">add_filter('joli_toc_headings', 'filter_headings', 10, 2);

function filter_headings( $headings ){ 
    $headings = array_map(function($heading){
            //Remove vowels from titles
            $heading['title'] = preg_replace("/[aeiouAEIOU]/", "", $heading['title']);
        return $heading;
    }, $headings);

    return $headings;
}</pre>



<p>Here is the table of contents with the vowels removed from the headings !</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="566" height="759" src="https://wpjoli.com/wp-content/uploads/2023/12/image-19.png" alt="" class="wp-image-1885" srcset="https://wpjoli.com/wp-content/uploads/2023/12/image-19.png 566w, https://wpjoli.com/wp-content/uploads/2023/12/image-19-224x300.png 224w" sizes="auto, (max-width: 566px) 100vw, 566px" /></figure>



<p>Another similar example, but this time the function will remove any combination of a number and a dot at the start of a heading.</p>



<p>For instance, &#8220;2. Top 5 pets for a big backyard&#8221; would become &#8220;Top 5 pets for a big backyard&#8221;. This would give a cleaner look at the table of contents when there is already the numeration activated and you have some random headings in the page that contain numbers.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">add_filter('joli_toc_headings', 'filter_headings', 10, 2);

function filter_headings( $headings ){ 
    $headings = array_map(function($heading){
            //Remove first number and dot from titles
            $heading['title'] = preg_replace("/^\d+.\s+/", "", $heading['title']);
        return $heading;
    }, $headings);

    return $headings;
}</pre>



<h2 class="wp-block-heading">Conclusion</h2>



<p>As you can see, there are many ways to customize Joli Table of Contents. Some customizations require a little bit of code but there are already plenty of customizations available from the settings.</p>



<p>Joli Table of Contents bundle a <a rel="noreferrer noopener" href="https://wpjoli.com/docs/joli-table-of-contents/developer-hooks/" data-type="docs" data-id="1132" target="_blank">large array of hooks</a> that allow for extensive customization. Make sure to have a look at the <a rel="noreferrer noopener" href="https://wpjoli.com/docs/joli-table-of-contents/inserting-a-table-of-contents/" data-type="docs" data-id="1177" target="_blank">documentation</a> to have a good outlook of what&#8217;s possible to achieve.</p>



<p>Keep in mind that all the customizations shown in this article work for both the Free and the Pro version of Joli Table of Contents.</p>
<p>The post <a href="https://wpjoli.com/blog/customize-joli-table-of-contents/">How to Customize Joli Table of Contents: Beginner &#038; Advanced Tips</a> appeared first on <a href="https://wpjoli.com">wpjoli</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://wpjoli.com/blog/customize-joli-table-of-contents/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
