{"id":20012,"date":"2023-02-22T11:48:55","date_gmt":"2023-02-22T11:48:55","guid":{"rendered":"https:\/\/10web.io\/blog\/?p=20012"},"modified":"2026-02-25T18:56:10","modified_gmt":"2026-02-25T18:56:10","slug":"wordpress-seo-without-plugin","status":"publish","type":"post","link":"https:\/\/10web.io\/blog\/wordpress-seo-without-plugin\/","title":{"rendered":"WordPress SEO Without Plugins: The 11 Essential Tasks You Can Do Manually"},"content":{"rendered":"<p><span style=\"font-weight: 400;\">The SEO friendliness of a website determines its ranking on search engines. Considering how complex optimizing WordPress websites can be and how important it is, most people don\u2019t think of SEO optimization in WordPress without a plugin. Understandably so. However, <\/span><span style=\"font-weight: 400;\">plugins can add weight to your code and conflict with other plugins. That&#8217;s why some people prefer using as few plugins as possible.<\/span><span style=\"font-weight: 400;\">\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Before considering the \u2018how\u2019, it is crucial to know and understand the tasks that WordPress SEO plugins help with and their benefits. In this article, you will learn about the things WordPress SEO plugins help with, the actions that can and cannot be replaced with manual alternatives, the benefits of optimizing WordPress SEO without plugins, and how to optimize SEO in WordPress without a plugin.<\/span><\/p>\n<div class=\"links-list-block\">\n    <p class=\"links-list-block__title\">In This Article<\/p>\n    <div class=\"links-list-block__content\">\n<ul>\n<li><a href=\"#tasks\">What Tasks Do WordPress SEO Plugins Usually Help With?<\/a><\/li>\n<li><a href=\"#only\">What Tasks Do WordPress SEO Plugins Handle That Can\u2019t Be Done Manually?<\/a><\/li>\n<li><a href=\"#benefits\">What Are the Benefits of Not Using WordPress SEO Plugins?<\/a><\/li>\n<li><a href=\"#without\">11 Essential WordPress SEO Tasks Done Without Any Plugins<\/a>\n<ul>\n<li><a href=\"#1\">1. How to Optimize WordPress Website Speed Without a Plugin?<\/a><\/li>\n<li><a href=\"#2\">2. How to Add Meta Tags in WordPress Without a Plugin?<\/a><\/li>\n<li><a href=\"#3\">3. How to Add Open Graph Tags in WordPress Without a Plugin?<\/a><\/li>\n<li><a href=\"#4\">4. How to Create a WordPress XML Sitemap Without a Plugin?<\/a><\/li>\n<li><a href=\"#5\">5. How to Noindex a Page in WordPress Without a Plugin?<\/a><\/li>\n<li><a href=\"#6\">6. How to Add a Canonical Tag in WordPress Without a Plugin?<\/a><\/li>\n<li><a href=\"#7\">7. How to Edit robots.txt in WordPress Without a Plugin?<\/a><\/li>\n<li><a href=\"#8\">8. How to Add Schema Markup to WordPress Without a Plugin?<\/a><\/li>\n<li><a href=\"#9\">9. How to Redirect a Page in WordPress Without a Plugin?<\/a><\/li>\n<li><a href=\"#10\">10. How to Display Breadcrumbs in WordPress Without a Plugin?<\/a><\/li>\n<li><a href=\"#11\">11. How to Optimize WordPress Images Without a Plugin?<\/a><\/li>\n<\/ul>\n<\/li>\n<li><a href=\"#bonus\">[Bonus Tip] Mix These Plugins With Manual Efforts for the Best Results<\/a><\/li>\n<li><a href=\"#conclusion\">Conclusion<\/a><\/li>\n<li><a href=\"#faq\">FAQ<\/a><\/li>\n<\/ul>\n<p><\/div>\n<\/div>\n<br \/>\n<span id=\"tasks\"><\/span><\/p>\n<h2><span style=\"font-weight: 400;\">What Tasks Do WordPress SEO Plugins Usually Help With?<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">WordPress SEO plugins abstract the operations that cause nightmares for non-technical personnel. These tasks are originally tedious, delicate to implement, and sometimes involve coding knowledge. For that reason, SEO plugins leverage technology to ease the burden. These tasks include writing and editing PHP code, configuring <code>.htaccess<\/code> files, setting up robots.txt files, and optimizing webpages to meet SEO standards.<\/span><\/p>\n<p><span id=\"only\"><\/span><span style=\"font-weight: 400;\">Most of these tasks require technical knowledge. For example, adding meta tags, creating XML sitemaps, adding canonical tags, adding schema markups, redirecting pages, displaying breadcrumbs, optimizing multimedia content, etc. But they can be addressed without plugins. Yes, <a href=\"https:\/\/10web.io\/blog\/wp-content\/uploads\/sites\/2\/2020\/06\/WordPress-SEO.png\" target=\"_blank\" rel=\"noopener\">WordPress SEO without plugins<\/a> is possible. The fourth section of this article will elaborate on the \u2018how\u2019.<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><div class=\"colored-block blue\">\n    <img decoding=\"async\" src=\"https:\/\/10web.io\/blog\/wp-content\/themes\/10web-blog\/images\/shortcodes\/\/blue_block_icon.png\" class=\"colored-block-note\" alt=\"Note\">\n            <h4>Related Article<\/h4>\n\t        <div class=\"colored-block__content\"> <\/span><a href=\"https:\/\/10web.io\/blog\/wordpress-seo-audit-checklist\/\">WordPress SEO Audit Checklist: 11 Vital Areas to Inspect<\/a>\u00a0<\/div>\n    <\/div>\n<\/p>\n<h2><span style=\"font-weight: 400;\">What Tasks Do WordPress SEO Plugins Handle That Can\u2019t Be Done Manually?<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">There are a bulk of things that make WordPress SEO plugins indispensable. Apart from abstracting technical complexities, they handle SEO-specific tasks seamlessly. These tasks include:<\/span><span id=\"benefits\"><\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Bulk internal link analysis and insertion (<a href=\"https:\/\/linkwhisper.com\/\">Link Whisper<\/a>).<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Calculating optimization scores. There are several reasons why this is impossible manually.<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Automatic redirections. Setting up redirects is technical, as you will find out.<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Automatic image optimization.\u00a0<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">No doubt, WordPress SEO without plugins is not the best decision sometimes. The tasks mentioned above are tedious to implement manually without flaws. It is best to delegate them to SEO plugins as you find necessary. Moreover, with the rise of <a href=\"https:\/\/10web.io\/blog\/ai-in-seo\/\">AI tools for SEO<\/a>, competing those tasks can be much easier.\u00a0<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">What Are the Benefits of Not Using WordPress SEO Plugins?<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">SEO plugins try to be comprehensive. Because of that, they tend to have bloated features that some WordPress users don\u2019t need, adding <strong>extra complexity<\/strong> to their workflow. However, not using WordPress SEO plugins can help you beyond avoiding excessive features.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The absence of bloated features on your website means less weight on the source code of your website and less load on your server. The resulting benefit is less inter-plugin conflict, helping you gain more predictability over what happens on your website and consequently, <strong>more independence and control<\/strong>.\u00a0<\/span><\/p>\n<p><span id=\"without\"><\/span><span style=\"font-weight: 400;\">The ultimate benefit of saying no to SEO plugins on WordPress is <strong>reduced cost<\/strong>. The less money you spend on managing these plugins and the secondary effects of having them, the better.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">So, how can you optimize for SEO in WordPress without plugins?<\/span><br \/>\n<span id=\"1\"><\/span><\/p>\n<h2><span style=\"font-weight: 400;\">11 Essential WordPress SEO Tasks Done Without Any Plugins<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Note that the tips discussed in this section require edits to the <\/span><span style=\"font-weight: 400;\">functions.php<\/span><span style=\"font-weight: 400;\"> file located in <code>wp-content\/themes\/&lt;current-theme&gt;<\/code> folder in the source code of your website. You can access this file from the <\/span><i><span style=\"font-weight: 400;\">\u2018theme editor<\/span><\/i><span style=\"font-weight: 400;\">\u2019 in your WordPress admin or hosting server. Please note, that at least a basic level of coding knowledge is required to implement these tasks correctly without damaging your website.\u00a0<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">1. How to Optimize WordPress Website Speed Without a Plugin?\u00a0<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Truthfully, it is complicated to optimize WordPress website speed without a plugin. The reason for this is the different factors contributing to site speed and how technical they can get. An example of this is caching.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">WordPress caching involves intelligently selecting the right data type to cache and when to invalidate the cache at the surface level. Manually implementing these features is painful and, in most cases, counterproductive. Interestingly, <a href=\"https:\/\/10web.io\/blog\/what-is-the-best-cache-plugin-for-wordpress\/\">caching is strongly recommended to speed up WordPress websites.<\/a><\/span><\/p>\n<p><span style=\"font-weight: 400;\">Other factors include automatic image optimization, lazy loading of multimedia content, delaying and deferring critical JS, inlining critical CSS, etc. Therefore, optimizing website speed without a plugin is like moving with a crutch &#8211; you can\u2019t go very far.<\/span><\/p>\n<p><span id=\"2\"><\/span><span style=\"font-weight: 400;\">Here at 10Web, we recommend <\/span><a href=\"https:\/\/10web.io\/page-speed-booster\/\"><span style=\"font-weight: 400;\">10Web Booster<\/span><\/a><span style=\"font-weight: 400;\"> for speed-related optimization on your WordPress website. More on that later.<\/span><\/p>\n\r\n<style>\r\n  #ctablocks_inline_70{\r\n          background-color: #000000;\r\n        color: #ffffff;\r\n    border-radius: 6px;\r\n  }\r\n\r\n  #ctablocks_inline_70 p{\r\n    color: #ffffff;\r\n  }\r\n  #ctablocks_inline_70 .button{\r\n        background-color: rgb(51,57,241);\r\n      color: #ffffff;\r\n    border-color: #3339f1 !important;\r\n  }\r\n  #ctablocks_inline_70 .button:hover{\r\n    background: rgba(51,57,241,0.8);\r\n    color: #ffffff;\r\n    opacity: 1;\r\n  }\r\n        #ctablocks_inline_70 .ctablocks_content_info p {\r\n        padding-left: 36px;\r\n      }\r\n      #ctablocks_inline_70 .ctablocks_content_button {\r\n          margin-left: 37px;\r\n      }\r\n  @media screen and (min-width: 768px) and (max-width: 1260px) {\r\n      #ctablocks_inline_70 .ctablocks_content_button {\r\n          margin-left: 37px !important;\r\n      }\r\n  }\r\n  ;\r\n<\/style>\r\n<div id=\"ctablocks_inline_70\" class=\"ctablocks_container inline_type\r\n        \">\r\n\r\n  <div class=\"ctablocks_content clear\">\r\n    <div class=\"ctablocks_content_info\">\r\n      \r\n            <div class=\"title-wrap\">\r\n\t\t\t\t\t                  <img decoding=\"async\" src=\"https:\/\/10web.io\/blog\/wp-content\/uploads\/sites\/2\/2024\/04\/info-icon-cta.png\" alt=\"Want to speed up your website instantly?\" title=\"Want to speed up your website instantly?\">\r\n\t\t\t\t\t            <h4>Want to speed up your website instantly?<\/h4>\r\n        <\/div>\r\n              <p>Get 90+ PageSpeed Score automatically with 10Web Booster \u26a1 <br class=\"desktop\"> On any hosting!<\/p>\r\n          <\/div>\r\n    <div class=\"ctablocks_content_button\">\r\n              <a href=\"https:\/\/10web.io\/page-speed-booster\/\" class=\"button\"  data-gtag=\"cta-70\" data-buttontype=\"cta-inline\"\r\n\t        >Try for Free<\/a>\r\n            \r\n    <\/div>\r\n  <\/div>\r\n    <\/div>\r\n\n<h3 style=\"margin-top: 100px;\"><span style=\"font-weight: 400;\">2. How to Add Meta Tags in WordPress Without a Plugin?<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Meta tags are crucial details about a website that appear in web searches. This section of a website&#8217;s content is used by webmasters to optimize a site for Google searches. A meta description is a typical example of these meta tags.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/10web.io\/blog\/wp-content\/uploads\/sites\/2\/2023\/02\/Screenshot-of-Google-Search-Results.jpg\" alt=\"Screenshot of Google Search Results\" width=\"738\" height=\"147\" class=\"alignnone size-full wp-image-20018\" style=\"width: 744px;\" srcset=\"https:\/\/10web.io\/blog\/wp-content\/uploads\/sites\/2\/2023\/02\/Screenshot-of-Google-Search-Results.jpg 738w, https:\/\/10web.io\/blog\/wp-content\/uploads\/sites\/2\/2023\/02\/Screenshot-of-Google-Search-Results-150x30.jpg 150w, https:\/\/10web.io\/blog\/wp-content\/uploads\/sites\/2\/2023\/02\/Screenshot-of-Google-Search-Results-600x120.jpg 600w\" sizes=\"auto, (max-width: 738px) 100vw, 738px\" \/><span style=\"font-weight: 400;\"><\/span><\/p>\n<p><span style=\"font-weight: 400;\">The meta<\/span>\u00a0description on the blog post above gives a potential reader more context about what to expect from the article. Other meta tags include canonical meta tags, robots meta tags, alternative meta tags, open graph meta tags, etc.<\/p>\n<p><span style=\"font-weight: 400;\">SEO plugins add thes<\/span>e meta tags automatically. They also support customization for meta tags with easy-to-use interfaces. To add meta tags on WordPress without a plugin:<\/p>\n<ol>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Open the <code>functions.php<\/code> file in the <code>wp-content\/themes<\/code> folder.<\/span><\/li>\n<li><span style=\"font-weight: 400;\">Copy the code below.<\/span><\/li>\n<\/ol>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n  \r\nif ( ! function_exists( 'tenweb_meta_description' ) ) {\r\n\tfunction tenweb_meta_description() { \r\n\t\tglobal $post; \r\n\r\n\t\tif ( is_singular() ) \r\n\t\t{ \r\n\t\t\t$des_post = strip_tags( $post-&amp;gt;post_content ); \r\n\t\t\t$des_post = strip_shortcodes( $des_post ); \r\n\t\t\t$des_post = str_replace( array(&amp;quot;\\n&amp;quot;, &amp;quot;\\r&amp;quot;, &amp;quot;\\t&amp;quot;), ' ', $des_post ); \r\n\t\t\t$des_post = mb_substr( $des_post, 0, 300, 'utf8' ); \r\n\t\t\techo '&amp;lt;meta name=&amp;quot;description&amp;quot; content=&amp;quot;' . $des_post . '&amp;quot; \/&amp;gt;'. &amp;quot;\\n&amp;quot;; \r\n\t\t} \r\n\r\n\t\tif ( is_home() ) \r\n\t\t{ \r\n\t\t\techo '&amp;lt;meta name=&amp;quot;description&amp;quot; content=&amp;quot;' . get_bloginfo( &amp;quot;description&amp;quot; ) . '&amp;quot; \/&amp;gt;' . &amp;quot;\\n&amp;quot;; \r\n\t\t} \r\n\r\n\t\tif ( is_category() ) {\r\n\t\t\t$des_cat = strip_tags(category_description());\r\n\t\t\techo '&amp;lt;meta name=&amp;quot;description&amp;quot; content=&amp;quot;' . $des_cat . '&amp;quot; \/&amp;gt;'. &amp;quot;\\n&amp;quot;;\r\n\t\t} \r\n\t} \r\n}\r\nadd_action( 'wp_head', 'tenweb_meta_description');\r\n\r\n\r\n<\/pre>\n<ol start=\"3\" style=\"margin-top: 100px;\">\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Paste the code in the <code>functions.php<\/code> file.<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Save and close the file.<\/span><\/li>\n<\/ol>\n<p><span id=\"3\"><\/span><span style=\"font-weight: 400;\">In simpler terms, the code you copied fetches the category and the first 160 characters of every page and uses it as the meta description. The \u2018<code>wp_head<\/code>\u2019 function is a WordPress hook triggered in the <code>&lt;head&gt;<\/code> section of the themes <code>header.php<\/code> file. Therefore, adding the <code>\u2018tenweb_meta_description\u2019<\/code> function to the <code>add_action<\/code> hook executes it in the <code>&lt;head&gt;<\/code> section of the webpage.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">On the downside, you would need to add this code block to your <code>functions.php<\/code> file each time you changed themes. The same goes for every other implementation that requires an edit to the source code of WordPress themes.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">3. How to Add Open Graph Tags in WordPress Without a Plugin?<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Open graph tags, or OG tags for short, control how your website links appear on social media pages when shared. They\u2019re also meta tags &#8211; they belong in the &lt;head&gt; section of a website. Like meta description, OG description tells people more about your content at a glance when shared on social media feeds. If properly optimized, they make content more compelling on social media sites and improve site visibility.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/10web.io\/blog\/wp-content\/uploads\/sites\/2\/2023\/02\/Example-of-OG-Tag-742x581.jpg\" alt=\"Example of OG Tag\" width=\"742\" height=\"581\" class=\"alignnone size-medium wp-image-20036\" srcset=\"https:\/\/10web.io\/blog\/wp-content\/uploads\/sites\/2\/2023\/02\/Example-of-OG-Tag-742x581.jpg 742w, https:\/\/10web.io\/blog\/wp-content\/uploads\/sites\/2\/2023\/02\/Example-of-OG-Tag-150x117.jpg 150w, https:\/\/10web.io\/blog\/wp-content\/uploads\/sites\/2\/2023\/02\/Example-of-OG-Tag-768x602.jpg 768w, https:\/\/10web.io\/blog\/wp-content\/uploads\/sites\/2\/2023\/02\/Example-of-OG-Tag-600x470.jpg 600w, https:\/\/10web.io\/blog\/wp-content\/uploads\/sites\/2\/2023\/02\/Example-of-OG-Tag.jpg 798w\" sizes=\"auto, (max-width: 742px) 100vw, 742px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">However, adding Open Graph tags without plugins for different sites requires some duplication. Regardless, the process is as straightforward as with meta descriptions.<\/span><span id=\"4\"><\/span><\/p>\n<ol>\n<li><span style=\"font-weight: 400;\">Open the <code>header.php<\/code> file in the <code>wp-content\/themes\/&lt;current-theme&gt;<\/code> folder.<\/span><\/li>\n<li><span style=\"font-weight: 400;\">Copy the code below.<\/span><\/li>\n<\/ol>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\nif ( ! function_exists( 'tenweb_og_meta_tags' ) ) {\r\n    function tenweb_og_meta_tags() {\r\n    $title = get_the_title(get_the_ID());\r\n    $site_name = get_bloginfo('name');\r\n    $url = get_the_permalink(get_the_ID());\r\n    $description = get_bloginfo('description');\r\n    $type = (is_home())? 'website':'article';\r\n    $image = get_the_post_thumbnail_url(get_the_ID());\r\n       ?&amp;gt;\r\n        &amp;lt;meta property=&amp;quot;og:title&amp;quot; content=&amp;quot;&amp;lt;?php echo esc_attr($title); ?&amp;gt;&amp;quot;&amp;gt;\r\n&amp;lt;meta property=&amp;quot;og:site_name&amp;quot; content=&amp;quot;&amp;lt;?php echo esc_attr($site_name); ?&amp;gt;&amp;quot;&amp;gt;\r\n&amp;lt;meta property=&amp;quot;og:url&amp;quot; content=&amp;quot;&amp;lt;?php echo esc_url($url); ?&amp;gt;&amp;quot;&amp;gt;\r\n&amp;lt;meta property=&amp;quot;og:description&amp;quot; content=&amp;quot;&amp;lt;?php echo esc_attr($description); ?&amp;gt;&amp;quot;&amp;gt;\r\n&amp;lt;meta property=&amp;quot;og:type&amp;quot; content=&amp;quot;&amp;lt;?php echo esc_attr($type); ?&amp;gt;&amp;quot;&amp;gt;\r\n&amp;lt;meta property=&amp;quot;og:image&amp;quot; content=&amp;quot;&amp;lt;?php echo esc_url($image) ?&amp;gt;&amp;quot;&amp;gt;\r\n       &amp;lt;?php\r\n    }\r\n}\r\n\r\nadd_action( 'wp_head', 'tenweb_og_meta_tags');\r\n\r\n<\/pre>\n<h3 style=\"margin-top: 100px;\"><span style=\"font-weight: 400;\">4. How to Create a WordPress XML Sitemap Without a Plugin?<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">A sitemap is a method of classifying information on a website&#8217;s various sections and identifying their URLs on the internet. An XML sitemap is a file containing a website&#8217;s sitemap for search engines to crawl in XML format.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Before delving into creating a sitemap manually on WordPress, it is crucial to understand that WordPress plugins handle sitemaps better and with an advanced feature set.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The custom code to create a sitemap creates a <code>sitemap.xml <\/code>file in the root folder of your website. Copy the code below and add it to the <code>functions.php <\/code>file in your WordPress website.<\/span><\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nadd_action(&amp;quot;publish_post&amp;quot;, &amp;quot;tenweb_create_sitemap&amp;quot;); \r\nadd_action(&amp;quot;publish_page&amp;quot;, &amp;quot;tenweb_create_sitemap&amp;quot;); \r\nadd_action( &amp;quot;save_post&amp;quot;, &amp;quot;tenweb_create_sitemap&amp;quot; ); \r\n\r\nfunction tenweb_create_sitemap() { \r\n\tif ( str_replace( '-', '', get_option( 'gmt_offset' ) ) &amp;lt; 10 ) { \r\n\t\t$tempo = '-0' . str_replace( '-', '', get_option( 'gmt_offset' ) ); \r\n\t} else { \r\n\t\t$tempo = get_option( 'gmt_offset' ); \r\n\t} \r\n\r\n\tif( strlen( $tempo ) == 3 ) { \r\n\t\t$tempo = $tempo . ':00'; \r\n\t} \r\n\r\n\t$postsForSitemap = get_posts( \r\n\tarray( \r\n\t'numberposts' =&amp;gt; -1, \r\n\t'orderby'  =&amp;gt; 'modified', \r\n\t'post_type'   =&amp;gt; array( 'post', 'page' ), \r\n\t'order'       =&amp;gt; 'DESC' \r\n\t) );\r\n\r\n\t$sitemap .= '&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;' . '&amp;lt;?xml-stylesheet type=&amp;quot;text\/xsl&amp;quot; href=&amp;quot;' . esc_url( home_url( '\/' ) ) . 'sitemap.xsl&amp;quot;?&amp;gt;'; $sitemap .= &amp;quot;\\n&amp;quot; . '&amp;lt;urlset xmlns:xsi=&amp;quot;http:\/\/www.w3.org\/2001\/XMLSchema-instance&amp;quot; xsi:schemaLocation=&amp;quot;http:\/\/www.sitemaps.org\/schemas\/sitemap\/0.9 http:\/\/www.sitemaps.org\/schemas\/sitemap\/0.9\/sitemap.xsd&amp;quot; xmlns=&amp;quot;http:\/\/www.sitemaps.org\/schemas\/sitemap\/0.9&amp;quot;&amp;gt;' . &amp;quot;\\n&amp;quot;;\r\n\r\n\t$sitemap .= &amp;quot;\\t&amp;quot; . '&amp;lt;url&amp;gt;' . &amp;quot;\\n&amp;quot; . &amp;quot;\\t\\t&amp;quot; . '&amp;lt;loc&amp;gt;' . esc_url( home_url( '\/' ) ) . '&amp;lt;\/loc&amp;gt;' . &amp;quot;\\n\\t\\t&amp;quot; . '&amp;lt;lastmod&amp;gt;' . date( &amp;quot;Y-m-d\\TH:i:s&amp;quot;, current_time( 'timestamp', 0 ) ) . $tempo . '&amp;lt;\/lastmod&amp;gt;' . &amp;quot;\\n\\t\\t&amp;quot; . '&amp;lt;changefreq&amp;gt;daily&amp;lt;\/changefreq&amp;gt;' . &amp;quot;\\n\\t\\t&amp;quot; . '&amp;lt;priority&amp;gt;1.0&amp;lt;\/priority&amp;gt;' . &amp;quot;\\n\\t&amp;quot; . '&amp;lt;\/url&amp;gt;' . &amp;quot;\\n&amp;quot;; \r\n\r\n\tforeach( $postsForSitemap as $post ) { \r\n\t\tsetup_postdata( $post); \r\n\t\t$postdate = explode( &amp;quot; &amp;quot;, $post-&amp;gt;post_modified ); \r\n\t\t$sitemap .= &amp;quot;\\t&amp;quot; . '&amp;lt;url&amp;gt;' . &amp;quot;\\n&amp;quot; . &amp;quot;\\t\\t&amp;quot; . '&amp;lt;loc&amp;gt;' . get_permalink( $post-&amp;gt;ID ) . '&amp;lt;\/loc&amp;gt;' . &amp;quot;\\n\\t\\t&amp;quot; . '&amp;lt;lastmod&amp;gt;' . $postdate&#x5B;0] . 'T' . $postdate&#x5B;1] . $tempo . '&amp;lt;\/lastmod&amp;gt;' . &amp;quot;\\n\\t\\t&amp;quot; . '&amp;lt;changefreq&amp;gt;Weekly&amp;lt;\/changefreq&amp;gt;' . &amp;quot;\\n\\t\\t&amp;quot; . '&amp;lt;priority&amp;gt;0.5&amp;lt;\/priority&amp;gt;' . &amp;quot;\\n\\t&amp;quot; . '&amp;lt;\/url&amp;gt;' . &amp;quot;\\n&amp;quot;; \r\n\t} \r\n\r\n\t$sitemap .= '&amp;lt;\/urlset&amp;gt;'; \r\n\t$fp = fopen( ABSPATH . &amp;quot;sitemap.xml&amp;quot;, 'w' ); \r\n\tfwrite( $fp, $sitemap ); fclose( $fp ); \r\n}\r\n\r\n<\/pre>\n<p><span style=\"font-weight: 400;\">The sample sitemap created with the code snippet above will be updated when the actions <code>\u2018publish_post\u2019<\/code>, <code>\u2018save_post\u2019<\/code>, and <code>\u2018publish_page\u2019<\/code> take effect(thanks to the <code>add_action<\/code> hook). However, it doesn\u2019t include updates to other types of content like video attachments.<\/span><span id=\"5\"><\/span><\/p>\n<p><span style=\"font-weight: 400;\">Next, you must submit your website sitemap for the search engines to crawl your website. To do that, upload the created sitemap to <\/span><a href=\"https:\/\/search.google.com\/search-console\/about\"><span style=\"font-weight: 400;\">Google Search Console<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">5. How to Noindex a Page in WordPress Without a Plugin?<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Sitemap allows search engines to crawl your website for visible page links. When uploading search results, the pages that are properly optimized for the search keyword will appear. However, under specific scenarios, you might want to leave out some pages by not allowing search engines to index them in search results &#8211; this is where the <code>noindex<\/code> feature comes in.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">You have no control over what search engines crawl over, but you can specify what shouldn\u2019t be indexed. By adding the <code>noindex<\/code> meta content in the &lt;head&gt; section of our webpage, search engines will not index the web page in search results. To do this without a plugin, add the function below to the <code>header.php<\/code> file.<\/span><\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\nadd_action('wp_head', 'tenweb_noindex_multiple_page'); \r\nadd_action('wp_head', 'tenweb_noindex_multiple_page'); \r\n\r\nfunction tenweb_noindex_multiple_page(){ \r\n if ( is_page( array( page_id_1, page_id_2, page_id_n) ) ) {\r\n  ?&amp;gt; &amp;lt;meta name=&amp;quot;robots&amp;quot; content=&amp;quot;noindex&amp;quot; \/&amp;gt; &amp;lt;?PHP\r\n } \r\n}\r\n\r\n<\/pre>\n<p><span id=\"6\"><\/span><span style=\"font-weight: 400;\">Where page_id_n is the id of the pages to exclude for indexing on search results. Other selection conditions like <code>is_page() <\/code>include <code>is_single()<\/code>, <code>is_category()<\/code>, <code>is_tag()<\/code>, and <code>is_paged()<\/code>.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">6. How to Add a Canonical Tag in WordPress Without a Plugin?<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Canonical URLs can and should exist on every page, this is because Google can only index canonical URLs, hence their importance. A typical case where you might need a canonical URL is if you have duplicate content. A canonical tells Google which of the pages to index.<\/span><\/p>\n<p><span id=\"7\"><\/span><span style=\"font-weight: 400;\">To add canonical tags to your WordPress website, add the following code to the <code>header.php<\/code> file in the <code>wp-content\/themes <\/code>just before the &lt;head&gt; tag.<\/span><\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\n&amp;lt;?php \r\nif ( is_singular() ) { \r\n\t?&amp;gt; \r\n\t&amp;lt;link rel=&amp;quot;canonical&amp;quot; href=&amp;quot;&amp;lt;?php the_permalink(); ?&amp;gt;&amp;quot; \/&amp;gt; \r\n\t&amp;lt;?php } ?&amp;gt;\r\n<\/pre>\n<h3 style=\"margin-top: 100px;\"><span style=\"font-weight: 400;\">7. How to Edit robots.txt in WordPress Without a Plugin?<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">The robots.txt file on every website tells web crawlers and other web robots which pages of the website they\u2019re allowed to visit. It is similar to adding the <code>noindex<\/code> meta tag to a page but with more nuances.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The robots.txt file instructs a search engine crawler <code>not to crawl<\/code> a page, but a noindex meta allows the search engine to crawl but <code>not to index<\/code> it in search results. A typical use for robots.txt is disallowing crawling in the <code>cgi-bin<\/code> file because there\u2019s nothing useful for search engines there.<\/span><span id=\"8\"><\/span><\/p>\n<p><span style=\"font-weight: 400;\">You can add a URL to robots.txt, by leveraging the add_filters hook in WordPress. To do that, include the following code in your <code>functions.php<\/code> file.<\/span><\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\nfunction add_to_robotstxt($output, $public) { \r\n\t$my_rules = &amp;quot; \r\n# Added by robots_txt filter in functions \r\n# Add your rules below, \r\nDisallow: &amp;lt;URL&amp;gt;; e.g https:\/\/10web.io\/sitemap.xml\r\n\u201c;\r\nreturn $output . $my_rules; \r\n} \r\n\r\nadd_filter('robots_txt', 'add_to_robotstxt');\r\n\r\n<\/pre>\n<h3 style=\"margin-top: 100px;\"><span style=\"font-weight: 400;\">8. How to Add Schema Markup to WordPress Without a Plugin?<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Schema markup tells search engines more about your website content. Depending on the page type, for example, product review, blog post, e.t.c, google will display relevant <\/span><a href=\"https:\/\/search.google.com\/test\/rich-results\"><span style=\"font-weight: 400;\">rich results<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Like with robots.txt and <code>noindex<\/code>, there\u2019s a slight difference between rich results and schema markups. Schema markup is a unique type of HTML code that generates rich results for humans in search engine results. Schema markup is for search engines while rich results are for humans.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">To add a schema markup manually to WordPress:<\/span><\/p>\n<ol>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Go to <\/span><a href=\"https:\/\/www.google.com\/webmasters\/markup-helper\/\"><span style=\"font-weight: 400;\">Google\u2019s Structured Data Markup Helper<\/span><\/a><span style=\"font-weight: 400;\">.\u00a0<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Select the content type and input the URL to the page with the content.<\/span><\/li>\n<\/ol>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/10web.io\/blog\/wp-content\/uploads\/sites\/2\/2023\/02\/Adding-Schema-Markup-Manually-Google-Structured-Data-Markup-Helper-742x303.jpg\" alt=\"Adding Schema Markup Manually - Google Structured Data Markup Helper\" width=\"742\" height=\"303\" class=\"alignnone size-medium wp-image-20025\" \/><\/p>\n<ol start=\"3\">\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Click <\/span><b>Start Tagging<\/b><span style=\"font-weight: 400;\">.\u00a0<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Highlight text or images to tag data.<\/span><\/li>\n<\/ol>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/10web.io\/blog\/wp-content\/uploads\/sites\/2\/2023\/02\/Adding-Missing-Tags-in-Google-Structured-Data-Markup-Helper-742x410.png\" alt=\"Adding Missing Tags in Google Structured Data Markup Helper\" width=\"742\" height=\"410\" class=\"alignnone size-medium wp-image-20027\" \/><\/p>\n<p><span id=\"9\"><\/span><\/p>\n<ol start=\"5\">\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Click <\/span><b>CREATE HTML<\/b><span style=\"font-weight: 400;\"> in the top-right area of the page.<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Copy the generated JSON code.<\/span><\/li>\n<\/ol>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/10web.io\/blog\/wp-content\/uploads\/sites\/2\/2023\/02\/Viewing-HTML-in-Google-Structured-Data-Markup-Helper-742x352.jpg\" alt=\"Viewing HTML in Google Structured Data Markup Helper\" width=\"742\" height=\"352\" class=\"alignnone size-medium wp-image-20028\" \/><\/p>\n<ol start=\"7\">\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Click \u2018<\/span><b>Enter New<\/b><span style=\"font-weight: 400;\">\u2019 in the custom field area for the WordPress post you generated a schema markup for.<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Name your markup.<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Paste the generated JSON code into the value field.<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Click the \u2018<\/span><b>Add custom field<\/b><span style=\"font-weight: 400;\">\u2019.<\/span><\/li>\n<li style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Scroll to the top and click \u2018Update\u2019.<\/span><\/li>\n<\/ol>\n<h3 style=\"margin-top: 100px;\"><span style=\"font-weight: 400;\">9. How to Redirect a Page in WordPress Without a Plugin?<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">There are several ways to set up page redirects manually on WordPress. The level of technicality to achieve this can sometimes be overwhelming. For that reason, we picked the <code>.htaccess<\/code> file to implement page redirection.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">When required, 301-redirects can handle page redirects using the <code>.htaccess<\/code> file located in the root of your website&#8217;s folder. To do this, add the following code to the .htaccess file.<\/span><\/p>\n<p><code>Redirect 301 \/&lt;OLD-URL&gt; \/&lt;NEW-URL&gt;<\/code><\/p>\n<p><span id=\"10\"><\/span><span style=\"font-weight: 400;\">If a user visits the <code>\/&lt;OLD-URL&gt;<\/code>, they will be redirected to the <code>\/&lt;NEW-URL&gt;<\/code> page.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">The SEO reason for redirects is for deleted pages that are indexed. It makes more sense to redirect a user instantly than to show a \u2018page not found\u2019 error.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">10. How to Display Breadcrumbs in WordPress Without a Plugin?<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Breadcrumbs indicate the location of a page in the site hierarchy. It helps website visitors to navigate a site, and it also helps search engines understand the hierarchy of a web page. It is not an outright ranking factor by Google, but it constitutes the host of factors that help webpages rank.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">To generate breadcrumbs in WordPress without a plugin, add the code snippet below to your <code>functions.php<\/code> file:<\/span><\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nfunction get_breadcrumb() {\r\n\techo '\ud83c\udfda &amp;lt;a href=&amp;quot;'.home_url().'&amp;quot; rel=&amp;quot;nofollow&amp;quot;&amp;gt; Home &amp;lt;\/a&amp;gt;';\r\n\tif (is_category() || is_single()) {\r\n\t\techo &amp;quot;&amp;amp;nbsp;&amp;amp;nbsp;\u00bb&amp;amp;nbsp;&amp;amp;nbsp;&amp;quot;;\r\n\t\tthe_category(' \u00bb ');\r\n\t\tif (is_single()) {\r\n\t\t\techo &amp;quot; &amp;amp;nbsp;&amp;amp;nbsp;\u00bb&amp;amp;nbsp;&amp;amp;nbsp; &amp;quot;;\r\n\t\t\tthe_title();\r\n\t\t}\r\n\t} elseif (is_page()) {\r\n\t\techo &amp;quot;&amp;amp;nbsp;&amp;amp;nbsp;\u00bb&amp;amp;nbsp;&amp;amp;nbsp;&amp;quot;;\r\n\t\techo the_title();\r\n\t} elseif (is_search()) {\r\n\t\techo &amp;quot;&amp;amp;nbsp;&amp;amp;nbsp;\u00bb&amp;amp;nbsp;&amp;amp;nbsp;Search Results for... &amp;quot;;\r\n\t\techo '&amp;quot;&amp;lt;em&amp;gt;'; echo the_search_query();\r\n\t\techo '&amp;lt;\/em&amp;gt;&amp;quot;';\r\n\t}\r\n}\r\n<\/pre>\n<p><span style=\"font-weight: 400;\">Unlike the other functions added in the <code>functions.php<\/code> file in this article, this function wouldn&#8217;t be added to the \u2018<code>wp_head<\/code>\u2019 hook. This is because it would be called manually in the <code>header.php<\/code> file.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">To display a breadcrumb in the header of every page on your website,\u00a0 the \u2018<code>get_breadcrumb<\/code>\u2019 function in the <code>functions.php<\/code> file needs to be called. To do that, add the code block below in the <code>header.php<\/code> file<\/span> <span style=\"font-weight: 400;\">in the <code>wp-content\/themes\/&lt;current-theme&gt;<\/code> folder<\/span><span style=\"font-weight: 400;\">.<\/span><span id=\"11\"><\/span><\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\n&amp;lt;?php \r\nif (!is_home()): ?&amp;gt; \r\n&amp;lt;div class=&amp;quot;breadcrumb&amp;quot;&amp;gt; \r\n&amp;lt;?php get_breadcrumb(); ?&amp;gt; \r\n&amp;lt;\/div&amp;gt; \r\n&amp;lt;?php endif; ?&amp;gt;\r\n<\/pre>\n<p><span style=\"font-weight: 400;\">With the code block setup, you would have a breadcrumb with a page title, category, and the active search query.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">11. How to Optimize WordPress Images Without a Plugin?<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Technically, manually optimizing images without a plugin is possible. Two tips to follow are converting images to WebP before uploading to WordPress for the best quality and size and compressing images. However, for websites with high graphic content density, this approach is tedious and time-consuming.<\/span><span style=\"font-weight: 400;\"><\/span><span id=\"bonus\"><\/span><\/p>\n<p><a href=\"https:\/\/10web.io\/page-speed-booster\/\"><span style=\"font-weight: 400;\">10Web Booster<\/span><\/a><span style=\"font-weight: 400;\"> provides automatic image optimization, conversion to WebP, container-specific image resizing, and image lazy loading for the best experience. With 10Web Booster, you don\u2019t have to worry about optimizing all your existing images, it automatically manages them without loss in quality while also intelligently implementing best practices for rendering images on web pages.<\/span><\/p>\n\r\n<style>\r\n  #ctablocks_inline_70{\r\n          background-color: #000000;\r\n        color: #ffffff;\r\n    border-radius: 6px;\r\n  }\r\n\r\n  #ctablocks_inline_70 p{\r\n    color: #ffffff;\r\n  }\r\n  #ctablocks_inline_70 .button{\r\n        background-color: rgb(51,57,241);\r\n      color: #ffffff;\r\n    border-color: #3339f1 !important;\r\n  }\r\n  #ctablocks_inline_70 .button:hover{\r\n    background: rgba(51,57,241,0.8);\r\n    color: #ffffff;\r\n    opacity: 1;\r\n  }\r\n        #ctablocks_inline_70 .ctablocks_content_info p {\r\n        padding-left: 36px;\r\n      }\r\n      #ctablocks_inline_70 .ctablocks_content_button {\r\n          margin-left: 37px;\r\n      }\r\n  @media screen and (min-width: 768px) and (max-width: 1260px) {\r\n      #ctablocks_inline_70 .ctablocks_content_button {\r\n          margin-left: 37px !important;\r\n      }\r\n  }\r\n  ;\r\n<\/style>\r\n<div id=\"ctablocks_inline_70\" class=\"ctablocks_container inline_type\r\n        \">\r\n\r\n  <div class=\"ctablocks_content clear\">\r\n    <div class=\"ctablocks_content_info\">\r\n      \r\n            <div class=\"title-wrap\">\r\n\t\t\t\t\t                  <img decoding=\"async\" src=\"https:\/\/10web.io\/blog\/wp-content\/uploads\/sites\/2\/2024\/04\/info-icon-cta.png\" alt=\"Want to speed up your website instantly?\" title=\"Want to speed up your website instantly?\">\r\n\t\t\t\t\t            <h4>Want to speed up your website instantly?<\/h4>\r\n        <\/div>\r\n              <p>Get 90+ PageSpeed Score automatically with 10Web Booster \u26a1 <br class=\"desktop\"> On any hosting!<\/p>\r\n          <\/div>\r\n    <div class=\"ctablocks_content_button\">\r\n              <a href=\"https:\/\/10web.io\/page-speed-booster\/\" class=\"button\"  data-gtag=\"cta-70\" data-buttontype=\"cta-inline\"\r\n\t        >Try for Free<\/a>\r\n            \r\n    <\/div>\r\n  <\/div>\r\n    <\/div>\r\n\n<h2 style=\"margin-top: 100px;\"><span style=\"font-weight: 400;\">[Bonus Tip] Mix These Plugins With Manual Efforts for the Best Results<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">The plugins in this section are our recommendations to ease the burden of manual WordPress SEO without plugins. No doubt, following the tips above is time-consuming and sometimes nerve-racking. With specific plugins to help with some complexities like speed, you\u2019re well on the right track to optimizing SEO in WordPress without plugins.<\/span><\/p>\n<p>1. <a href=\"https:\/\/10web.io\/page-speed-booster\/\"><span style=\"font-weight: 400;\">10Web Booster\u00a0<\/span><\/a><\/p>\n<p><span style=\"font-weight: 400;\">10Web Booster is our go-to guy for all speed-related tasks. It is an all-in-one WordPress speed optimization plugin that goes beyond optimizing images. With intelligent caching and cache invalidation, 10Web\u00a0 Booster uses full-page caching for static web pages to load directly from the cache improving server response time and increasing site speed. It also implements automated optimization of images based on device and network connection types for each visitor to deliver a quality experience regardless of location.<\/span><\/p>\n<div class=\"youtube_embed without_rel\" data-id=\"oX1FEYIA5xQ\">\n<div id=\"video1\"><\/div>\n<\/div>\n<p><span style=\"font-weight: 400;\">One more reason why 10Web Booster is strongly recommended is its guarantee of a 90+ PageSpeed score for <\/span><i><span style=\"font-weight: 400;\">free<\/span><\/i><span style=\"font-weight: 400;\">. Learn more about 10Web Booster <\/span><a href=\"https:\/\/10web.io\/page-speed-booster\/\"><span style=\"font-weight: 400;\">here<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p>2. <a href=\"https:\/\/yoast.com\/\"><span style=\"font-weight: 400;\">Yoast SEO<\/span><\/a><\/p>\n<p><span id=\"conclusion\"><\/span><span style=\"font-weight: 400;\">Yoast SEO is an all-in-one management solution for beginner to more experienced WordPress users. It handles page redirection and adding meta tags to web pages and posts for SEO inclusivity. The free version comes with useful out-of-the-box features for WordPress and works excellently when combined with a speed optimization tool like 10Web Booster.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">Conclusion<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">WordPress SEO without plugins can be difficult, but it doesn\u2019t have to be. If you find yourself switching between plugins to serve your needs or trying to cut costs, review the tips discussed in this article and implement the ones that you\u2019re comfortable with.<\/span><\/p>\n<p><span id=\"faq\"><\/span><span style=\"font-weight: 400;\">Truthfully, editing the PHP files might be daunting if you\u2019re a non-technical personnel, but remember that the plugins that handle SEO perform these edits on your behalf, with an extra load on your server. If you\u2019re looking to streamline your WordPress workflow and deal with less plugin hassle for WordPress optimization, think <\/span><a href=\"https:\/\/10web.io\/\"><span style=\"font-weight: 400;\">10Web<\/span><\/a><span style=\"font-weight: 400;\">!<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">FAQ<\/span><\/h2>\n<div class=\"faq-shortcode\">\n    <p class=\"faq_title\">Why do I need SEO plugins?<\/p>\n    <div class=\"faq_content\"> SEO plugins help with abstracting the complexity that comes with optimizing web pages and websites for search engines. They also provide extra out-of-the-box features like keyword research, content quality suggestions, and link optimizations. <\/div>\n<\/div>\n\n<div class=\"faq-shortcode\">\n    <p class=\"faq_title\">Is it possible to get good results with WordPress SEO without using a plugin?<\/p>\n    <div class=\"faq_content\"> Possible? Yes. Easy? No. It is relatively challenging to squeeze out excellent results on WordPress without a plugin. However, it is possible to handle some SEO tasks manually without a plugin and get good results. <\/div>\n<\/div>\n\n<p><div class=\"faq-shortcode\">\n    <p class=\"faq_title\">Are there any common mistakes to avoid when optimizing a WordPress site without using a plugin?<\/p>\n    <div class=\"faq_content\"> The most common mistake to avoid with WordPress optimization without plugins is not submitting XML sitemap to Google Search Console after creation and not optimizing permalinks. Without an XML sitemap for your website, Google cannot crawl the webpages on your website, and without properly optimized permalinks, the chances of ranking in search results are reduced.<\/div>\n<\/div>\n<br \/>\n\r\n<style>\r\n  #ctablocks_scrollbox-with-icon_91{\r\n            color: #ffffff;\r\n    border-radius: 6px;\r\n  }\r\n\r\n  #ctablocks_scrollbox-with-icon_91 p{\r\n    color: #ffffff;\r\n  }\r\n  #ctablocks_scrollbox-with-icon_91 .button{\r\n          background-color: rgb(51,57,241);\r\n        color: #ffffff;\r\n    border-color: #3339f1 !important;\r\n  }\r\n  #ctablocks_scrollbox-with-icon_91 .button:hover{\r\n    background: rgba(51,57,241,0.8);\r\n    color: #ffffff;\r\n    opacity: 1;\r\n  }\r\n  #ctablocks_scrollbox-with-icon_91.ctablocks_container {\r\n    left: 100%;\r\n  }\r\n  @media screen and (max-width: 1300px) {\r\n      #ctablocks_scrollbox-with-icon_91.ctablocks_container {\r\n          left: 0;\r\n          margin: 0 auto;\r\n      }\r\n  }\r\n  #ctablocks_scrollbox-with-icon_91 .ctablocks_content {\r\n      background-color: #000000;\r\n  }\r\n<\/style>\r\n<div id=\"ctablocks_scrollbox-with-icon_91\" class=\"ctablocks_container scrollbox-with-icon_type\r\n      \">\r\n\r\n  <div class=\"ctablocks_content clear\">\r\n    <div class=\"ctablocks_content_info\">\r\n              <h4>Simplify WordPress with 10Web<\/h4>\r\n        <h4 class=\"mobile-title\">Simplify WordPress with 10Web<\/h4>\r\n              <p>Skip and automate manual work with 10Web Managed WordPress Hosting and the 10Web AI Website Builder.<\/p>\r\n          <\/div>\r\n    <div class=\"ctablocks_content_button\">\r\n              <a href=\"https:\/\/10web.io\/ai-website-builder\/\" class=\"button\" data-gtag=\"sign-up-blog\" data-buttontype=\"sign-up\" data-gtag=\"cta-91\" data-buttontype=\"cta-scrollbox-with-icon\"\r\n\t        >Learn How<\/a>\r\n            \r\n    <\/div>\r\n  <\/div>\r\n    <span class=\"close_ctablocks\">\r\n      <img decoding=\"async\" class=\"close-icon\" src=\"https:\/\/10web.io\/blog\/wp-content\/plugins\/cta-blocks\/assets\/images\/close_w.svg\" class=\"close\">\r\n      <img decoding=\"async\" class=\"floating-icon\" src=\"https:\/\/10web.io\/blog\/wp-content\/uploads\/sites\/2\/2024\/04\/Info-icon_Blog.png\" alt=\"Simplify WordPress with 10Web\" title=\"Simplify WordPress with 10Web\">\r\n<!--      <img decoding=\"async\" class=\"arrow-icon white\" src=\"\/cta-blocks\/assets\/images\/arrow-icon.svg\" class=\"close\">\r\n-->      <img decoding=\"async\" class=\"arrow-icon purple\" src=\"https:\/\/10web.io\/blog\/wp-content\/plugins\/cta-blocks\/assets\/images\/arrow-icon-purple.svg\" class=\"close\">\r\n  <\/span>\r\n<\/div>\r\n<br \/>\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The SEO friendliness of a website determines its ranking on search engines. Considering how complex optimizing WordPress websites can be and how important it is, most people don\u2019t think of SEO optimization in WordPress without a plugin. Understandably so. However, plugins can add weight to your code and conflict with other plugins. That&#8217;s why some people prefer using as few&#8230;<\/p>\n","protected":false},"author":109,"featured_media":20013,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"two_page_speed":[],"footnotes":"","tenweb_blog_toc":"<ul><li><a href=\"#what-tasks-do-wordpress-seo-plugins-usually-help-with\">What Tasks Do WordPress SEO Plugins Usually Help With?<\/a><li><a href=\"#what-tasks-do-wordpress-seo-plugins-handle-that-cant-be-done-manually\">What Tasks Do WordPress SEO Plugins Handle That Can\u2019t Be Done Manually?<\/a><li><a href=\"#what-are-the-benefits-of-not-using-wordpress-seo-plugins\">What Are the Benefits of Not Using WordPress SEO Plugins?<\/a><li><a href=\"#11-essential-wordpress-seo-tasks-done-without-any-plugins\">11 Essential WordPress SEO Tasks Done Without Any Plugins<\/a><ul><li><a href=\"#1-how-to-optimize-wordpress-website-speed-without-a-plugin\">1. How to Optimize WordPress Website Speed Without a Plugin?\u00a0<\/a><li><a href=\"#2-how-to-add-meta-tags-in-wordpress-without-a-plugin\">2. How to Add Meta Tags in WordPress Without a Plugin?<\/a><li><a href=\"#3-how-to-add-open-graph-tags-in-wordpress-without-a-plugin\">3. How to Add Open Graph Tags in WordPress Without a Plugin?<\/a><li><a href=\"#4-how-to-create-a-wordpress-xml-sitemap-without-a-plugin\">4. How to Create a WordPress XML Sitemap Without a Plugin?<\/a><li><a href=\"#5-how-to-noindex-a-page-in-wordpress-without-a-plugin\">5. How to Noindex a Page in WordPress Without a Plugin?<\/a><li><a href=\"#6-how-to-add-a-canonical-tag-in-wordpress-without-a-plugin\">6. How to Add a Canonical Tag in WordPress Without a Plugin?<\/a><li><a href=\"#7-how-to-edit-robots-txt-in-wordpress-without-a-plugin\">7. How to Edit robots.txt in WordPress Without a Plugin?<\/a><li><a href=\"#8-how-to-add-schema-markup-to-wordpress-without-a-plugin\">8. How to Add Schema Markup to WordPress Without a Plugin?<\/a><li><a href=\"#9-how-to-redirect-a-page-in-wordpress-without-a-plugin\">9. How to Redirect a Page in WordPress Without a Plugin?<\/a><li><a href=\"#10-how-to-display-breadcrumbs-in-wordpress-without-a-plugin\">10. How to Display Breadcrumbs in WordPress Without a Plugin?<\/a><li><a href=\"#11-how-to-optimize-wordpress-images-without-a-plugin\">11. How to Optimize WordPress Images Without a Plugin?<\/a><\/li><\/ul><li><a href=\"#bonus-tip-mix-these-plugins-with-manual-efforts-for-the-best-results\">[Bonus Tip] Mix These Plugins With Manual Efforts for the Best Results<\/a><li><a href=\"#conclusion\">Conclusion<\/a><li><a href=\"#faq\">FAQ<\/a><\/li><\/ul>","tenweb_blog_competitor_type":"","tenweb_blog_competitor_names":"","tenweb_blog_twb_version":0,"tenweb_blog_type":"on"},"categories":[463],"tags":[103,439],"class_list":["post-20012","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-guides","tag-seo","tag-wordpress"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v23.0 (Yoast SEO v23.0) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>11 Essential Wordpress SEO Tasks You Can Do Without Plugins - 10Web<\/title>\n<meta name=\"description\" content=\"Can you improv your WordPress SEO without plugins? Read the article to find the answer and learn some tips to do so.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/10web.io\/blog\/wordpress-seo-without-plugin\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"WordPress SEO Without Plugins: The 11 Essential Tasks You Can Do Manually\" \/>\n<meta property=\"og:description\" content=\"Can you improv your WordPress SEO without plugins? Read the article to find the answer and learn some tips to do so.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/10web.io\/blog\/wordpress-seo-without-plugin\/\" \/>\n<meta property=\"og:site_name\" content=\"10Web - Build &amp; Host Your WordPress Website\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/10Web.io\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-02-22T11:48:55+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-02-25T18:56:10+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/10web.io\/blog\/wp-content\/uploads\/sites\/2\/2023\/02\/WP-SEO-without-plugins.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1484\" \/>\n\t<meta property=\"og:image:height\" content=\"832\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Teniola Fatunmbi\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@10Web_io\" \/>\n<meta name=\"twitter:site\" content=\"@10Web_io\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Teniola Fatunmbi\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"14 minutes\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"11 Essential Wordpress SEO Tasks You Can Do Without Plugins - 10Web","description":"Can you improv your WordPress SEO without plugins? Read the article to find the answer and learn some tips to do so.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/10web.io\/blog\/wordpress-seo-without-plugin\/","og_locale":"en_US","og_type":"article","og_title":"WordPress SEO Without Plugins: The 11 Essential Tasks You Can Do Manually","og_description":"Can you improv your WordPress SEO without plugins? Read the article to find the answer and learn some tips to do so.","og_url":"https:\/\/10web.io\/blog\/wordpress-seo-without-plugin\/","og_site_name":"10Web - Build &amp; Host Your WordPress Website","article_publisher":"https:\/\/www.facebook.com\/10Web.io\/","article_published_time":"2023-02-22T11:48:55+00:00","article_modified_time":"2026-02-25T18:56:10+00:00","og_image":[{"width":1484,"height":832,"url":"https:\/\/10web.io\/blog\/wp-content\/uploads\/sites\/2\/2023\/02\/WP-SEO-without-plugins.png","type":"image\/png"}],"author":"Teniola Fatunmbi","twitter_card":"summary_large_image","twitter_creator":"@10Web_io","twitter_site":"@10Web_io","twitter_misc":{"Written by":"Teniola Fatunmbi","Est. reading time":"14 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/10web.io\/blog\/wordpress-seo-without-plugin\/#article","isPartOf":{"@id":"https:\/\/10web.io\/blog\/wordpress-seo-without-plugin\/"},"author":{"name":"Teniola Fatunmbi","@id":"https:\/\/10web.io\/blog\/#\/schema\/person\/29277bc584ed93fa688b6724943698a9"},"headline":"WordPress SEO Without Plugins: The 11 Essential Tasks You Can Do Manually","datePublished":"2023-02-22T11:48:55+00:00","dateModified":"2026-02-25T18:56:10+00:00","mainEntityOfPage":{"@id":"https:\/\/10web.io\/blog\/wordpress-seo-without-plugin\/"},"wordCount":4122,"commentCount":0,"publisher":{"@id":"https:\/\/10web.io\/blog\/#organization"},"image":{"@id":"https:\/\/10web.io\/blog\/wordpress-seo-without-plugin\/#primaryimage"},"thumbnailUrl":"https:\/\/10web.io\/blog\/wp-content\/uploads\/sites\/2\/2023\/02\/WP-SEO-without-plugins.png","keywords":["seo","wordpress"],"articleSection":["Guides"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/10web.io\/blog\/wordpress-seo-without-plugin\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/10web.io\/blog\/wordpress-seo-without-plugin\/","url":"https:\/\/10web.io\/blog\/wordpress-seo-without-plugin\/","name":"11 Essential Wordpress SEO Tasks You Can Do Without Plugins - 10Web","isPartOf":{"@id":"https:\/\/10web.io\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/10web.io\/blog\/wordpress-seo-without-plugin\/#primaryimage"},"image":{"@id":"https:\/\/10web.io\/blog\/wordpress-seo-without-plugin\/#primaryimage"},"thumbnailUrl":"https:\/\/10web.io\/blog\/wp-content\/uploads\/sites\/2\/2023\/02\/WP-SEO-without-plugins.png","datePublished":"2023-02-22T11:48:55+00:00","dateModified":"2026-02-25T18:56:10+00:00","description":"Can you improv your WordPress SEO without plugins? Read the article to find the answer and learn some tips to do so.","breadcrumb":{"@id":"https:\/\/10web.io\/blog\/wordpress-seo-without-plugin\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/10web.io\/blog\/wordpress-seo-without-plugin\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/10web.io\/blog\/wordpress-seo-without-plugin\/#primaryimage","url":"https:\/\/10web.io\/blog\/wp-content\/uploads\/sites\/2\/2023\/02\/WP-SEO-without-plugins.png","contentUrl":"https:\/\/10web.io\/blog\/wp-content\/uploads\/sites\/2\/2023\/02\/WP-SEO-without-plugins.png","width":1484,"height":832,"caption":"WordPress SEO Without Plugins"},{"@type":"BreadcrumbList","@id":"https:\/\/10web.io\/blog\/wordpress-seo-without-plugin\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/10web.io\/blog\/"},{"@type":"ListItem","position":2,"name":"WordPress SEO Without Plugins: The 11 Essential Tasks You Can Do Manually"}]},{"@type":"WebSite","@id":"https:\/\/10web.io\/blog\/#website","url":"https:\/\/10web.io\/blog\/","name":"10Web Blog - Build & Host Your WordPress Website","description":"10Web is an All-in-One Website Building Platform, offering Managed WordPress Hosting on Google Cloud, Beautiful Templates, Premium Plugins and Services.","publisher":{"@id":"https:\/\/10web.io\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/10web.io\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/10web.io\/blog\/#organization","name":"10Web","url":"https:\/\/10web.io\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/10web.io\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/10web.io\/blog\/wp-content\/uploads\/sites\/2\/2025\/04\/Logo-768x686-1.png","contentUrl":"https:\/\/10web.io\/blog\/wp-content\/uploads\/sites\/2\/2025\/04\/Logo-768x686-1.png","width":768,"height":686,"caption":"10Web"},"image":{"@id":"https:\/\/10web.io\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/10Web.io\/","https:\/\/x.com\/10Web_io","https:\/\/www.instagram.com\/10web.io\/","https:\/\/www.linkedin.com\/company\/10web\/mycompany\/","https:\/\/www.youtube.com\/c\/10Web"]},{"@type":"Person","@id":"https:\/\/10web.io\/blog\/#\/schema\/person\/29277bc584ed93fa688b6724943698a9","name":"Teniola Fatunmbi","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/10web.io\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/46d1c4a1765df4bfc7421b6d2886ba6e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/46d1c4a1765df4bfc7421b6d2886ba6e?s=96&d=mm&r=g","caption":"Teniola Fatunmbi"},"description":"Teniola is a full stack software engineer building consumer-focused products at this point in his career. As a writer, his content writing ability cuts across low-code tech, software engineering, and everything in-between.","url":"https:\/\/10web.io\/blog\/author\/fatunmbiteniola\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/10web.io\/blog\/wp-json\/wp\/v2\/posts\/20012","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/10web.io\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/10web.io\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/10web.io\/blog\/wp-json\/wp\/v2\/users\/109"}],"replies":[{"embeddable":true,"href":"https:\/\/10web.io\/blog\/wp-json\/wp\/v2\/comments?post=20012"}],"version-history":[{"count":0,"href":"https:\/\/10web.io\/blog\/wp-json\/wp\/v2\/posts\/20012\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/10web.io\/blog\/wp-json\/wp\/v2\/media\/20013"}],"wp:attachment":[{"href":"https:\/\/10web.io\/blog\/wp-json\/wp\/v2\/media?parent=20012"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/10web.io\/blog\/wp-json\/wp\/v2\/categories?post=20012"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/10web.io\/blog\/wp-json\/wp\/v2\/tags?post=20012"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}