{"id":106381,"date":"2024-08-28T14:11:50","date_gmt":"2024-08-28T11:11:50","guid":{"rendered":"https:\/\/themeisle.com\/blog\/?p=106381"},"modified":"2024-08-28T17:30:38","modified_gmt":"2024-08-28T14:30:38","slug":"build-a-wordpress-plugin-with-chatgpt","status":"publish","type":"post","link":"https:\/\/themeisle.com\/blog\/build-a-wordpress-plugin-with-chatgpt\/","title":{"rendered":"My Journey to Creating a WordPress Plugin With ChatGPT: 120 Hours of Work, No Prior Experience"},"content":{"rendered":"\n<p>I&rsquo;ll be honest: I <em>actually<\/em> thought I could build a WordPress plugin with ChatGPT in just a couple of hours. Or, at least, that&rsquo;s what all the YouTube tutorials and Twitter threads led me to believe.<\/p>\n\n\n\n<p>But let me tell you, those stories left out a few crucial details &ndash; about 120 hours&rsquo; worth of details, to be exact. Yes, that&rsquo;s how long it <em>actually<\/em> took me to build the plugin from start to finish: 120 hours!<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>For context, I didn&rsquo;t have any prior experience with plugin or WordPress development, but I decided to dive in anyway. And while I loved the challenge, it was a lot harder than I expected. Every step of the way, I hit one roadblock after another, many of which I didn&rsquo;t even know existed. It was frustrating, but also a huge &ndash; huge(!) &ndash; learning experience.<\/p>\n\n\n\n<p>Assuming you plan on following in my footsteps, I strongly urge you to read this article in its entirety beforehand. I&rsquo;m not saying that as some sort of self-promotion. I&rsquo;m saying it because it will genuinely save you hours &ndash; even days &ndash; of extra work.<\/p>\n\n\n\n<p>There are so many things that I stumbled across in this process that I had no clue were important until after the fact. Unfortunately, that led to countless revisions of code (filled with lots of frustration) that could have been prevented. By reading this, you won&rsquo;t have that problem.<\/p>\n\n\n    \r\n    <style>\r\n        :root {\r\n        --jtoc-progress-bar-color: #4267cf;\n        }\r\n                    .wpj-jtoc.--jtoc-theme-none.--jtoc-has-custom-styles {\r\n        --jtoc-width: 100%;\n--jtoc-toc-padding: 24px;\n--jtoc-toc-border: 1px solid;\n--jtoc-toc-border-color: #dedede;\n--jtoc-background-color: #f6f7f9;\n--jtoc-header-height: 20px;\n--jtoc-header-margin: 0;\n--jtoc-header-padding: 0;\n--jtoc-title-color: #393939;\n--jtoc-title-font-size: 1.2em;\n--jtoc-title-label-font-weight: 400;\n--jtoc-body-margin: 16px 0 0 0;\n--jtoc-body-padding: 0;\n--jtoc-headings-margin: 10px 0 0 0;\n--jtoc-link-font-size: 1em;\n--jtoc-link-font-weight: 400;\n--jtoc-link-color: #848484;\n--jtoc-link-color-hover: #4a66c8;\n--jtoc-link-color-active: #4a66c8;\n        }\r\n        .--jtoc-the-content{\r\ndisplay:none;\r\n}\r\n.--jtoc-is-active>.wpj-jtoc--item-content>a:before{\r\nmargin-left:3px;\r\n}\r\n.wpj-jtoc--nav>.wpj-jtoc--items li a::before{\r\ncontent:'\\203A';\r\ndisplay:block;\r\nfloat:left;\r\nheight:100%;\r\nfont-weight:700;\r\ncolor:#4267CF;\r\nline-height: 20px;\r\nmargin-right: 3px;\r\n}\r\n.sidebar .wpj-jtoc--toc{\r\nborder:0;\r\npadding:0;\r\n}\r\n.sidebar .wpj-jtoc--header,\r\n.sidebar .wpj-jtoc--body{\r\nbackground:transparent;\r\n}\r\n\r\n.sidebar .--jtoc-is-active>.wpj-jtoc--item-content>a{\r\ntext-decoration:none;\r\n}\r\n.sidebar-left .widget-first{\r\nposition:sticky;\r\ntop:70px;\r\nmargin-bottom:1250px;\r\n}\r\n.sidebar-left{\r\ndisplay:none;\r\nmax-width:300px;\r\nposition:absolute;\r\nleft:-330px;\r\ntop:0;\r\nheight:100%;\r\n}\r\n@media only screen and (max-width: 1900px) {\r\n.single-post .sidebar-left{\r\ndisplay:none !important;\r\n}\r\n.--jtoc-the-content{\r\ndisplay:block;\r\n}\r\n@media only screen and (max-width: 400px) {\r\n.wpj-jtoc--item .wpj-jtoc--item-content{\r\nmargin-top:5px;\r\n}\r\n.wpj-jtoc--header-main .wpj-jtoc--title{\r\nfont-size:1.1em;\r\n}\r\n}    <\/style>\r\n\r\n\r\n    <!-- jtoc progress bar widget -->\r\n    <div class=\"wpj-jtoc--widget-progress --progress-top\">\r\n        <div class=\"wpj-jtoc--widget-progress-bar\"><\/div>\r\n    <\/div>\r\n\r\n<div id=\"wpj-jtoc\" class=\"wpj-jtoc wpj-jtoc--main --jtoc-the-content --jtoc-theme-none --jtoc-title-align-left --jtoc-toggle-icon --jtoc-toggle-position-right --jtoc-toggle-1 --jtoc-header-as-toggle --jtoc-headings-full-row-clickable --jtoc-floating-toc-top --jtoc-floating-has-shadow --jtoc-has-custom-styles --jtoc-is-unfolded\" >\r\n            \r\n    <!-- TOC -->\r\n    <div class=\"wpj-jtoc--toc \">\r\n                            <div class=\"wpj-jtoc--header\">\r\n                <div class=\"wpj-jtoc--header-main\">\r\n                                        <div class=\"wpj-jtoc--title\">\r\n                        <!-- <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-columns-3\"><rect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\"\/><path d=\"M9 3v18\"\/><path d=\"M15 3v18\"\/><\/svg> -->\r\n                        <span class=\"wpj-jtoc--title-label\">Table of contents<\/span>\r\n                    <\/div>\r\n                                                        <\/div>\r\n            <\/div>\r\n                                <div class=\"wpj-jtoc--body\">\r\n                        <nav class=\"wpj-jtoc--nav\">\r\n                <ol class=\"wpj-jtoc--items\"><li class=\"wpj-jtoc--item --jtoc-h2\">\r\n        <div class=\"wpj-jtoc--item-content\" data-depth=\"2\">\r\n                        <a href=\"#h-who-this-is-and-isn-t-for\" title=\"Who this is and isn\u2019t for \ud83d\ude4b\u200d\u2642\ufe0f\" data-numeration=\"1\" >Who this is and isn\u2019t for \ud83d\ude4b\u200d\u2642\ufe0f<\/a>\r\n                    <\/div> <\/li><li class=\"wpj-jtoc--item --jtoc-h2\">\r\n        <div class=\"wpj-jtoc--item-content\" data-depth=\"2\">\r\n                        <a href=\"#h-phase-one-map-out-your-plugin-in-detail\" title=\"Phase one: map out your plugin in detail \ud83d\udcdd\" data-numeration=\"2\" >Phase one: map out your plugin in detail \ud83d\udcdd<\/a>\r\n                    <\/div> <\/li><li class=\"wpj-jtoc--item --jtoc-h2\">\r\n        <div class=\"wpj-jtoc--item-content\" data-depth=\"2\">\r\n                        <a href=\"#h-phase-two-give-chatgpt-a-detailed-prompt-to-begin-development\" title=\"Phase two: give ChatGPT a detailed prompt to begin development \ud83d\udde3\ufe0f\" data-numeration=\"3\" >Phase two: give ChatGPT a detailed prompt to begin development \ud83d\udde3\ufe0f<\/a>\r\n                    <\/div> <ol class=\"wpj-jtoc--items\"><li class=\"wpj-jtoc--item --jtoc-h3\">\r\n        <div class=\"wpj-jtoc--item-content\" data-depth=\"3\">\r\n                        <a href=\"#h-my-prompt\" title=\"My prompt \ud83e\udd16\" data-numeration=\"3.1\" >My prompt \ud83e\udd16<\/a>\r\n                    <\/div> <\/li><li class=\"wpj-jtoc--item --jtoc-h3\">\r\n        <div class=\"wpj-jtoc--item-content\" data-depth=\"3\">\r\n                        <a href=\"#h-download-my-plugin-and-test-it-out\" title=\"Download my plugin and test it out \ud83d\udce5\" data-numeration=\"3.2\" >Download my plugin and test it out \ud83d\udce5<\/a>\r\n                    <\/div> <\/li><\/ol><\/li><li class=\"wpj-jtoc--item --jtoc-h2\">\r\n        <div class=\"wpj-jtoc--item-content\" data-depth=\"2\">\r\n                        <a href=\"#h-phase-three-tools-scripts-directories-and-git\" title=\"Phase three: tools, scripts, directories, and Git \ud83d\udc69\u200d\ud83d\udcbb\" data-numeration=\"4\" >Phase three: tools, scripts, directories, and Git \ud83d\udc69\u200d\ud83d\udcbb<\/a>\r\n                    <\/div> <\/li><li class=\"wpj-jtoc--item --jtoc-h2\">\r\n        <div class=\"wpj-jtoc--item-content\" data-depth=\"2\">\r\n                        <a href=\"#h-phase-four-plugin-playtime\" title=\"Phase four: plugin playtime \ud83d\uddb1\ufe0f\" data-numeration=\"5\" >Phase four: plugin playtime \ud83d\uddb1\ufe0f<\/a>\r\n                    <\/div> <\/li><li class=\"wpj-jtoc--item --jtoc-h2\">\r\n        <div class=\"wpj-jtoc--item-content\" data-depth=\"2\">\r\n                        <a href=\"#h-phase-five-debugging-and-linting\" title=\"Phase five: debugging and linting \ud83d\udcbb\" data-numeration=\"6\" >Phase five: debugging and linting \ud83d\udcbb<\/a>\r\n                    <\/div> <\/li><li class=\"wpj-jtoc--item --jtoc-h2\">\r\n        <div class=\"wpj-jtoc--item-content\" data-depth=\"2\">\r\n                        <a href=\"#h-phase-six-optional-testing\" title=\"Phase six (optional): testing \ud83d\udd2c\" data-numeration=\"7\" >Phase six (optional): testing \ud83d\udd2c<\/a>\r\n                    <\/div> <\/li><li class=\"wpj-jtoc--item --jtoc-h2\">\r\n        <div class=\"wpj-jtoc--item-content\" data-depth=\"2\">\r\n                        <a href=\"#h-phase-seven-optional-submit-your-plugin-to-the-wordpress-repository\" title=\"Phase seven (optional): submit your plugin to the WordPress repository \ud83e\udd73\" data-numeration=\"8\" >Phase seven (optional): submit your plugin to the WordPress repository \ud83e\udd73<\/a>\r\n                    <\/div> <\/li><\/ol>            <\/nav>\r\n                                                        <\/div>\r\n            <\/div>\r\n<\/div>\r\n\n\n\n\t\t<div class=\"ti-tweet-clear\"><\/div>\n\t\t\t<div class=\"ti-tweet_wrapper\">\n\t\t    \t<div class=\"ti-tweet_text\">\n\t\t    \t\t<a href=\"https:\/\/twitter.com\/share?text=It+took+me+120+hours+to+build+a+%23WordPress+plugin+with+%23ChatGPT+with+no+prior+experience+%F0%9F%A4%AF&amp;via=themeisle&amp;related=themeisle&amp;url=https:\/\/themeisle.com\/blog\/build-a-wordpress-plugin-with-chatgpt\/\" target=\"_blank\" rel=\"nofollow\">It took me 120 hours to build a #WordPress plugin with #ChatGPT with no prior experience &#129327;<\/a>\n\t\t    \t<\/div>\n\t\t    \t<div class=\"ti-tweet_sharebtn\">\n\t\t    \t<a href=\"https:\/\/twitter.com\/share?text=It+took+me+120+hours+to+build+a+%23WordPress+plugin+with+%23ChatGPT+with+no+prior+experience+%F0%9F%A4%AF&amp;via=themeisle&amp;related=themeisle&amp;url=https:\/\/themeisle.com\/blog\/build-a-wordpress-plugin-with-chatgpt\/\" target=\"_blank\" rel=\"nofollow\">Click To Tweet \n\t\t    \t\t<span><\/span>\n\t\t    \t<\/a>\n\t\t    <\/div>\n\t\t<\/div>\n\n\n\n<h2 class=\"wp-block-heading joli-heading jtoc-heading\" id=\"h-who-this-is-and-isn-t-for\">Who this is and isn&rsquo;t for &#128587;&zwj;&#9794;&#65039;<\/h2>\n\n\n\n<p>Depending on your background and skillset, you might be wondering if you&rsquo;re &ldquo;qualified enough&rdquo; to do this. I&rsquo;ll say this much:<\/p>\n\n\n\n<p>While you <em>don&rsquo;t<\/em> need to have any prerequisite coding knowledge, you <em>do<\/em> need to be enthusiastic about learning some code and the general process of developing a plugin. There are a lot of phases to get through, and often times, one phase has nothing to do with the other in terms of the skills (or even tools) you need to complete it. <strong>In short, be ready to learn &ndash; A LOT<\/strong>.<\/p>\n\n\n\n<p>Depending on the nature of your plugin and your ultimate goals, it could easily take you a month or more to come up with a final product.<\/p>\n\n\n\n<p>Having a strong eye for details and recognizing patterns will help quite a bit, as will knowing what PHP, JavaScript, and CSS do. You don&rsquo;t need to know how to code with them, but understanding their purpose and how they are used will be an advantage.<\/p>\n\n\n\n<p>If none of the above describes you &ndash; particularly the willingness to learn &ndash; and you&rsquo;re looking for a quick-and-easy solution, then this isn&rsquo;t for you. It&rsquo;s neither quick, nor easy. But, it is possible if you put in the effort.<\/p>\n\n\n\n<p>If you&rsquo;re okay with that, then let&rsquo;s get started.<\/p>\n\n\n<div class=\"su-divider su-divider-style-dotted\" style=\"margin:40px 0;border-width:1px;border-color:#999999\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading joli-heading jtoc-heading\" id=\"h-phase-one-map-out-your-plugin-in-detail\">Phase one: map out your plugin in detail &#128221;<\/h2>\n\n\n\n<p>The very first question you need to ask yourself &ndash; and answer &ndash; is <strong>what type of plugin do I want to build and what do I want it to do?<\/strong><\/p>\n\n\n\n<p>You might be tempted to rush through this so you can start actually building and coding, but I urge you to take your time with it. What you do here will lay the foundation for your prompts and will allow you to build in an organized manner, rather than adding things on the fly. To get through this phase effectively, consider the following:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>What functions do you want your plugin to have?<\/li>\n\n\n\n<li>What do you want the wp-admin side of it to look like?<\/li>\n\n\n\n<li>Create <a href=\"https:\/\/www.figma.com\/resource-library\/what-is-wireframing\/\" target=\"_blank\" rel=\"noopener\">wireframes<\/a> or flowcharts to visualize the plugin&rsquo;s workflow.<\/li>\n\n\n\n<li>Map it out and describe it down to the tiniest details.<\/li>\n\n\n\n<li>Decide if you want it for private use or if you want to make it available in the WordPress repository for public access.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading joli-heading jtoc-heading\" id=\"h-functions\">Functions<\/h3>\n\n\n<div class=\"su-spoiler su-spoiler-style-fancy su-spoiler-icon-plus\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span><strong>Read the breakdown &#128071;&#127995;<\/strong> <\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<p>Start by listing out every single feature you want your plugin to have. Don&rsquo;t hold back here &ndash; write down everything, even if you&rsquo;re not sure how to implement it yet. For example, when I was planning my shortcode-based plugin, I wanted it to be able to do the following:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Blur text<\/li>\n\n\n\n<li>Scramble text<\/li>\n\n\n\n<li>Add a tooltip to text<\/li>\n\n\n\n<li>Grow or shrink text<\/li>\n\n\n\n<li>Add a glowing background to text<\/li>\n\n\n\n<li>Highlight text with a background color<\/li>\n\n\n\n<li>Fade in text<\/li>\n\n\n\n<li>Add a clickable audio link to a piece of text<\/li>\n<\/ul>\n\n\n\n<p>Your list might be longer or shorter, but the key is to be as comprehensive as possible. Think about what would make your plugin truly useful and unique.<\/p>\n\n\n<\/div><\/div>\n\n\n\n<h3 class=\"wp-block-heading joli-heading jtoc-heading\" id=\"h-the-wp-admin\">The wp-admin<\/h3>\n\n\n<div class=\"su-spoiler su-spoiler-style-fancy su-spoiler-icon-plus su-spoiler-closed\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span><strong>Read the breakdown &#128071;&#127995;<\/strong> <\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<p>Next, consider how you want your plugin to appear and function in the WordPress admin area. This includes:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Settings pages<\/strong>: What options do you want to provide? How will you organize them?<\/li>\n\n\n\n<li><strong>Menus<\/strong>: Where will your plugin appear in the admin menu? Will it have sub-menus?<\/li>\n\n\n\n<li><strong>Metaboxes<\/strong>: If your plugin interacts with posts or pages, will it need custom metaboxes?<\/li>\n\n\n\n<li><strong>Tables<\/strong>: If you&rsquo;re storing data, how will you display it for the admin to review?<\/li>\n<\/ul>\n\n\n\n<p>In my case, I decided on a main settings page with tabs for each of my shortcodes, a separate page for documentation, and also a page with a contact form in case users want to get in touch with me. This is what I came up with:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full blog-img-std\"><img data-opt-id=471002567  fetchpriority=\"high\" decoding=\"async\" width=\"2468\" height=\"1160\" src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Funky-Text-Effects-plugin-settings-area-in-wp-admin.webp\" alt=\"Funky Text Effects settings in wp-admin.\" class=\"wp-image-106447\" srcset=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1920\/h:902\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Funky-Text-Effects-plugin-settings-area-in-wp-admin.webp 2468w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:300\/h:141\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Funky-Text-Effects-plugin-settings-area-in-wp-admin.webp 300w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1024\/h:481\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Funky-Text-Effects-plugin-settings-area-in-wp-admin.webp 1024w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:768\/h:361\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Funky-Text-Effects-plugin-settings-area-in-wp-admin.webp 768w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1536\/h:722\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Funky-Text-Effects-plugin-settings-area-in-wp-admin.webp 1536w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1920\/h:902\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Funky-Text-Effects-plugin-settings-area-in-wp-admin.webp 2048w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1800\/h:846\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Funky-Text-Effects-plugin-settings-area-in-wp-admin.webp 1800w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:50\/h:24\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Funky-Text-Effects-plugin-settings-area-in-wp-admin.webp 50w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:480\/h:226\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Funky-Text-Effects-plugin-settings-area-in-wp-admin.webp 480w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:794\/h:373\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Funky-Text-Effects-plugin-settings-area-in-wp-admin.webp 794w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1200\/h:564\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Funky-Text-Effects-plugin-settings-area-in-wp-admin.webp 1200w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:296\/h:139\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Funky-Text-Effects-plugin-settings-area-in-wp-admin.webp 296w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:390\/h:183\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Funky-Text-Effects-plugin-settings-area-in-wp-admin.webp 390w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:270\/h:127\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Funky-Text-Effects-plugin-settings-area-in-wp-admin.webp 270w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1920\/h:902\/q:mauto\/f:best\/dpr:2\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Funky-Text-Effects-plugin-settings-area-in-wp-admin.webp 2x\" sizes=\"(max-width: 700px) 100vw, 700px\"><\/figure>\n\n\n\n<p>Unfortunately for me &ndash; but not for you because you&rsquo;re reading this &ndash; is that I was so focused on the front end functionality of my plugin during the planning phase, that I completely neglected the wp-admin side of things.<\/p>\n\n\n\n<p>This made it take longer than it would have if I planned it ahead of time because I kept having to revise the code when I realized that what I had was incomplete or had poor UX. If I mapped it out ahead of time, or better yet, if I used wireframes, then this phase would&rsquo;ve went a lot smoother &ndash; which is a perfect segue to the next point.<\/p>\n\n\n<\/div><\/div>\n\n\n\n<h3 class=\"wp-block-heading joli-heading jtoc-heading\" id=\"h-wireframes-or-flowcharts\">Wireframes or flowcharts<\/h3>\n\n\n<div class=\"su-spoiler su-spoiler-style-fancy su-spoiler-icon-plus su-spoiler-closed\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span><strong>Read the breakdown &#128071;&#127995;<\/strong> <\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<p>As I just mentioned, this is something I personally didn&rsquo;t do, but wish I had done. If you&rsquo;re planning to build a more complex plugin, then this step is clutch. You don&rsquo;t need to be an artist &ndash; even rough sketches can be incredibly helpful. Consider creating:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Wireframes of your admin pages and any front-end elements<\/li>\n\n\n\n<li>Flowcharts showing how data moves through your plugin<\/li>\n\n\n\n<li>User journey maps to understand how people will interact with your plugin<\/li>\n<\/ul>\n\n\n\n<p>While doing this also takes time, in my opinion, you will have an overall net time save and a much smoother building process when you go into the coding stage with a precise detailed layout of your plugin.<\/p>\n\n\n\n<p>If you&rsquo;re not sure where to start, check out <a href=\"https:\/\/www.figma.com\/templates\/wireframe-kits\/\" target=\"_blank\" rel=\"noopener\">Figma&rsquo;s free wireframe templates<\/a>.<\/p>\n\n\n<\/div><\/div>\n\n\n\n<h3 class=\"wp-block-heading joli-heading jtoc-heading\" id=\"h-combine-everything-and-describe-it-in-detail\">Combine everything and describe it in detail<\/h3>\n\n\n<div class=\"su-spoiler su-spoiler-style-fancy su-spoiler-icon-plus su-spoiler-closed\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span><strong>Read the breakdown &#128071;&#127995;<\/strong> <\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<p>Finally, take all of the above and write it out in excruciating detail. For each feature and interface element, describe:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Exactly what you want it to do<\/li>\n\n\n\n<li>How you want it to interact with WordPress and other parts of your plugin<\/li>\n<\/ul>\n\n\n\n<p>When thinking about how you want your plugin to interact with WordPress, the options aren&rsquo;t limitless, but they are extensive. For example, depending on the type of plugin you&rsquo;re going to build, you could:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use shortcodes<\/li>\n\n\n\n<li>Hook directly into the block editor<\/li>\n\n\n\n<li>Add extra blocks<\/li>\n\n\n\n<li>Add REST API endpoints<\/li>\n\n\n\n<li>Create custom post types and taxonomies<\/li>\n<\/ul>\n\n\n\n<p>If you don&rsquo;t have the technical vocabulary to describe these exact mechanisms or understand &ndash; don&rsquo;t panic! It&rsquo;s perfectly okay. I listed these just to get you thinking about the overall concept. The main goal is to create as clear of a picture as possible of what you want to achieve. This way, when you&rsquo;re prompting ChatGPT, it will take all of those elements into account when writing your code.<\/p>\n\n\n\n<p>When I built my plugin, I initially attempted to hook directly into the block editor for the front end features. Despite making some early progress with it, I eventually hit an insurmountable wall. After about two days of relentless but fruitless troubleshooting, I ended up pivoting to shortcodes instead. This approach ended up being a lot more manageable for a first-timer like me. You might find yourself in a similar situation so keep this in mind.<\/p>\n\n\n\n<p>The last thing I want to mention here is that <strong>these mechanisms are usually not mutually exclusive<\/strong>. Many plugins, even those developed by beginners, combine multiple mechanisms. In all likelihood, unless you don&rsquo;t plan on having a settings area, you will also end up using a hybrid approach.<\/p>\n\n\n<\/div><\/div>\n\n\n\n<h3 class=\"wp-block-heading joli-heading jtoc-heading\" id=\"h-private-use-vs-public-access-via-the-wordpress-repository\">Private use vs public access via the WordPress repository<\/h3>\n\n\n<div class=\"su-spoiler su-spoiler-style-fancy su-spoiler-icon-plus su-spoiler-closed\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span><strong>Read the breakdown &#128071;&#127995;<\/strong> <\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<p>There&rsquo;s one more decision you should make before moving on to phase two. That decision has to do with who you&rsquo;re going to build this plugin for.<\/p>\n\n\n\n<p>Do you want to make it only for yourself (or a client)? Or, do you want to <a href=\"https:\/\/wordpress.org\/plugins\/developers\/add\/\" target=\"_blank\" rel=\"noopener\">submit it to the WordPress repository<\/a> for approval so that it will be available to the general public?<\/p>\n\n\n\n<figure class=\"wp-block-image size-full blog-img-std\"><img data-opt-id=356627467  fetchpriority=\"high\" decoding=\"async\" width=\"2312\" height=\"1154\" src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Submitting-a-WordPress-plugin-to-the-WordPress-repository.webp\" alt=\"\" class=\"wp-image-106442\" srcset=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1920\/h:958\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Submitting-a-WordPress-plugin-to-the-WordPress-repository.webp 2312w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:300\/h:150\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Submitting-a-WordPress-plugin-to-the-WordPress-repository.webp 300w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1024\/h:511\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Submitting-a-WordPress-plugin-to-the-WordPress-repository.webp 1024w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:768\/h:383\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Submitting-a-WordPress-plugin-to-the-WordPress-repository.webp 768w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1536\/h:767\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Submitting-a-WordPress-plugin-to-the-WordPress-repository.webp 1536w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1920\/h:958\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Submitting-a-WordPress-plugin-to-the-WordPress-repository.webp 2048w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1800\/h:898\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Submitting-a-WordPress-plugin-to-the-WordPress-repository.webp 1800w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:50\/h:25\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Submitting-a-WordPress-plugin-to-the-WordPress-repository.webp 50w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:480\/h:240\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Submitting-a-WordPress-plugin-to-the-WordPress-repository.webp 480w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:794\/h:397\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Submitting-a-WordPress-plugin-to-the-WordPress-repository.webp 794w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1200\/h:600\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Submitting-a-WordPress-plugin-to-the-WordPress-repository.webp 1200w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:296\/h:148\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Submitting-a-WordPress-plugin-to-the-WordPress-repository.webp 296w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:390\/h:195\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Submitting-a-WordPress-plugin-to-the-WordPress-repository.webp 390w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:270\/h:135\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Submitting-a-WordPress-plugin-to-the-WordPress-repository.webp 270w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1920\/h:958\/q:mauto\/f:best\/dpr:2\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Submitting-a-WordPress-plugin-to-the-WordPress-repository.webp 2x\" sizes=\"(max-width: 700px) 100vw, 700px\"><\/figure>\n\n\n\n<p>Technically, you don&rsquo;t need to absolutely make this decision just yet. However, in hindsight, I wish I would have done it earlier in the process. Hence why I&rsquo;m recommending that you do it now.<\/p>\n\n\n\n<p>The reason is because my goal from the beginning was to submit my plugin to the repository, but I initially built my plugin without following <a href=\"https:\/\/github.com\/WordPress\/wpcs-docs\/tree\/master\/wordpress-coding-standards\" target=\"_blank\" rel=\"noopener\">WordPress coding standards<\/a>. I focused solely on functionality and getting it to a point where it worked without bugs.<\/p>\n\n\n\n<p>As a result, I ended up having to do a lot of additional code tweaking to make my code fit the standards. Needless to say, this took a lot of time, and could&rsquo;ve been avoided.<\/p>\n\n\n\n<p>With that said, even if you plan on only building a plugin for private use, I would still recommend going by the coding standards. This will reduce the likelihood of your plugin malfunctioning with later WordPress releases. Process-wise, the main difference is that you won&rsquo;t need to be as anal about non-functional aspects of the standards.<\/p>\n\n\n\n<p>For example, when you make inline comments like <code>\/\/ Use global default.<\/code> you are required to put a period at the end. The period has no functional purpose, but if it&rsquo;s missing, it&rsquo;ll get flagged as an &ldquo;error&rdquo; according to the standards. For a private build, you can ignore this type of &ldquo;error.&rdquo;<\/p>\n\n\n<\/div><\/div>\n<div class=\"su-divider su-divider-style-dotted\" style=\"margin:40px 0;border-width:1px;border-color:#999999\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading joli-heading jtoc-heading\" id=\"h-phase-two-give-chatgpt-a-detailed-prompt-to-begin-development\">Phase two: give ChatGPT a detailed prompt to begin development &#128483;&#65039;<\/h2>\n\n\n\n<p>The main idea here is to give GPT an overview of your plugin with clear instructions. As a general suggestion, I would advise you to avoid trying to build the whole house at once. It&rsquo;s better to take a brick-by-brick approach.<\/p>\n\n\n\n<p>Let&rsquo;s say you were to build my plugin as an example.<\/p>\n\n\n\n<p>Even though it has eight effects, I would recommend telling GPT that you want to start with one effect. Almost as if you were building a <em>one-effect<\/em> plugin instead of an <em>eight-effect<\/em> plugin. Then check to make sure the effect works &ndash; including the back end settings area. Fix any bugs, and once everything looks good, add the next effect. Then just follow this process, one by one.<\/p>\n\n\n\n<p>The reason for doing it this way is that it makes it easier to fix any bugs that might be introduced into your code as your code grows in complexity. If GPT generates all of your code at once and lots of things aren&rsquo;t working, it&rsquo;ll be much harder to fix.<\/p>\n\n\n\n<p>You still want to give GPT a broad overview of your overall vision for the plugin, but end the prompt by focusing on some specific thing first.<\/p>\n\n\n\n<p>To save you some time, I&rsquo;ve created an example template you can give ChatGPT to get you started.<\/p>\n\n\n\n<p><strong>The sections in brackets [X] require your input to complete.<\/strong> You may or may not have to edit it further, depending on the kind of plugin you plan to build.<\/p>\n\n\n\n<p>If you don&rsquo;t understand everything in the prompt, don&rsquo;t worry, I didn&rsquo;t either. You&rsquo;ll learn as you go through the process.<\/p>\n\n\n\n<h3 class=\"wp-block-heading joli-heading jtoc-heading\" id=\"h-my-prompt\">My prompt &#129302;<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>I want to build a WordPress plugin called <strong>[name]<\/strong> that does the following:\n\n<strong>[General overview but don't give GPT the specifics yet]<\/strong>\n\nI'd like it to work via <strong>[Refer back to the section \"combine everything and describe it in detail\" from phase one; think about how you want your plugin to function - if you're not sure, then you can delete this part]<\/strong>.\n\nI would also like to create a settings menu in wp-admin so that users can <strong>[Explain what you want your settings menu to look like and do, including any specific UI\/UX considerations; if you create any wireframes, upload those as well]<\/strong>\n\nI plan on using the following tools for this process:\n\n- Docker and\/or Local by Flywheel <strong>{Choose one or use both}<\/strong>\n- Terminal (MAC) <strong>{if you're using a PC, substitute with Command Prompt}<\/strong>\n- Sublime Text\n- Chrome and Chrome inspector tool\n\nAlso, I want to use GitHub for version control to track changes and collaborate effectively. I will use the default WordPress template provided by GitHub to generate the code for the .gitignore file. However, I will need your help to walk me through how to set up a repository and how to commit my files to it.\n\nFor the main PHP file, the author name should be <strong>[your name]<\/strong> and the author URI should be <strong>[your website if you have one]<\/strong>.\n\nFor any code you generate, please use tabs for indentation and not spaces. <strong>{important if you plan on submitting your plugin to the WordPress repository}<\/strong>\n\nIf you need to enqueue any scripts, please ask me questions to help me figure out whether we should use conditional loading or if we should enqueue globally.\n\nIn addition, when generating CSS, please follow BEM (Block Element Modifier) methodology.\n\nLet's begin with <strong>[insert which feature you'd like to build first]<\/strong>\n\nPlease <strong>[Optional: help me setup Local by Flywheel and then]<\/strong> generate the initial PHP file and advise on next steps after that.<\/code><\/pre>\n\n\n\n<p>After you provide ChatGPT with your prompt, it&rsquo;ll guide you through the remainder of the steps, which I outlined below. It&rsquo;s worth noting that depending on ChatGPT&rsquo;s mood or your own desire to follow the process as I laid it out, that the way I list everything may not be as linear as it&rsquo;s presented.<\/p>\n\n\n\n<p>To give you an idea of what I mean, I tested the prompt myself three different times. Aside from helping me set up Local by Flywheel and generating the initial PHP file, it chose to go about the other steps in a different way each time.<\/p>\n\n\n\n<h3 class=\"wp-block-heading joli-heading jtoc-heading\" id=\"h-first-attempt\">First attempt<\/h3>\n\n\n\n<figure class=\"wp-block-image size-full blog-img-std\"><img data-opt-id=1133628869  fetchpriority=\"high\" decoding=\"async\" width=\"1500\" height=\"720\" src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-one.webp\" alt=\"Giving ChatGPT initial prompt to build plugin attempt number one.\" class=\"wp-image-106794\" srcset=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1500\/h:720\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-one.webp 1500w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:300\/h:144\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-one.webp 300w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1024\/h:492\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-one.webp 1024w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:768\/h:369\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-one.webp 768w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:50\/h:24\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-one.webp 50w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:480\/h:230\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-one.webp 480w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:794\/h:381\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-one.webp 794w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1200\/h:576\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-one.webp 1200w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:296\/h:142\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-one.webp 296w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:390\/h:187\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-one.webp 390w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:270\/h:130\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-one.webp 270w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1500\/h:720\/q:mauto\/f:best\/dpr:2\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-one.webp 2x\" sizes=\"(max-width: 700px) 100vw, 700px\"><\/figure>\n\n\n\n<p>In my first attempt, ChatGPT didn&rsquo;t go beyond generating the PHP file and presented me with two options on how I&rsquo;d like to proceed next. Notably, it did follow the instructions about enqueueing scripts with conditional loading and mentioned it as well.<\/p>\n\n\n\n<h3 class=\"wp-block-heading joli-heading jtoc-heading\" id=\"h-second-attempt\">Second attempt<\/h3>\n\n\n\n<p>The second attempt resulted in the simplest PHP file, but the most thorough overall response in terms of working through steps. It jumped right into using Terminal to set up project directories and initialize Sublime. It even went as far as coaching me on how to set up the Git repository.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full blog-img-std\"><img data-opt-id=1023291200  data-opt-src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-two.webp\"  decoding=\"async\" width=\"1634\" height=\"1628\" src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:eco\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-two.webp\" alt=\"Giving ChatGPT initial prompt to build plugin attempt number two.\" class=\"wp-image-106795\" old-srcset=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1083\/h:1080\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-two.webp 1634w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:300\/h:300\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-two.webp 300w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1024\/h:1020\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-two.webp 1024w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:150\/h:150\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-two.webp 150w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:768\/h:765\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-two.webp 768w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1084\/h:1080\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-two.webp 1536w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:50\/h:50\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-two.webp 50w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:241\/h:240\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-two.webp 241w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:398\/h:397\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-two.webp 398w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:602\/h:600\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-two.webp 602w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:149\/h:148\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-two.webp 149w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:196\/h:195\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-two.webp 196w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:135\/h:135\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-two.webp 135w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1083\/h:1080\/q:mauto\/f:best\/dpr:2\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-two.webp 2x\"><noscript><img data-opt-id=1023291200  decoding=\"async\" width=\"1634\" height=\"1628\" src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-two.webp\" alt=\"Giving ChatGPT initial prompt to build plugin attempt number two.\" class=\"wp-image-106795\" srcset=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1083\/h:1080\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-two.webp 1634w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:300\/h:300\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-two.webp 300w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1024\/h:1020\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-two.webp 1024w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:150\/h:150\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-two.webp 150w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:768\/h:765\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-two.webp 768w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1084\/h:1080\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-two.webp 1536w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:50\/h:50\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-two.webp 50w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:241\/h:240\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-two.webp 241w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:398\/h:397\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-two.webp 398w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:602\/h:600\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-two.webp 602w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:149\/h:148\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-two.webp 149w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:196\/h:195\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-two.webp 196w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:135\/h:135\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-two.webp 135w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1083\/h:1080\/q:mauto\/f:best\/dpr:2\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-two.webp 2x\" sizes=\"(max-width: 700px) 100vw, 700px\"></noscript><\/figure>\n\n\n\n<h3 class=\"wp-block-heading joli-heading jtoc-heading\" id=\"h-third-attempt\">Third attempt<\/h3>\n\n\n\n<p>The third attempt was somewhat similar to the first attempt. Although, unlike in the first attempt, ChatGPT did not set up conditional loading for the scripts, nor did it ask me about it. It just generated them as global by default.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full blog-img-std\"><img data-opt-id=397781020  data-opt-src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-three.webp\"  decoding=\"async\" width=\"1532\" height=\"780\" src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:eco\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-three.webp\" alt=\"Giving ChatGPT initial prompt to build plugin attempt number three.\" class=\"wp-image-106796\" old-srcset=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1532\/h:780\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-three.webp 1532w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:300\/h:153\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-three.webp 300w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1024\/h:521\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-three.webp 1024w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:768\/h:391\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-three.webp 768w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:50\/h:25\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-three.webp 50w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:471\/h:240\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-three.webp 471w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:780\/h:397\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-three.webp 780w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1178\/h:600\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-three.webp 1178w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:291\/h:148\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-three.webp 291w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:383\/h:195\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-three.webp 383w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:265\/h:135\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-three.webp 265w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1532\/h:780\/q:mauto\/f:best\/dpr:2\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-three.webp 2x\"><noscript><img data-opt-id=397781020  decoding=\"async\" width=\"1532\" height=\"780\" src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-three.webp\" alt=\"Giving ChatGPT initial prompt to build plugin attempt number three.\" class=\"wp-image-106796\" srcset=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1532\/h:780\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-three.webp 1532w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:300\/h:153\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-three.webp 300w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1024\/h:521\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-three.webp 1024w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:768\/h:391\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-three.webp 768w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:50\/h:25\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-three.webp 50w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:471\/h:240\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-three.webp 471w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:780\/h:397\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-three.webp 780w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1178\/h:600\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-three.webp 1178w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:291\/h:148\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-three.webp 291w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:383\/h:195\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-three.webp 383w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:265\/h:135\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-three.webp 265w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1532\/h:780\/q:mauto\/f:best\/dpr:2\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Giving-ChatGPT-initial-prompt-to-build-plugin-attempt-number-three.webp 2x\" sizes=\"(max-width: 700px) 100vw, 700px\"></noscript><\/figure>\n\n\n\n<h3 class=\"wp-block-heading joli-heading jtoc-heading\" id=\"h-the-takeaway\">The takeaway<\/h3>\n\n\n\n<p>The reason I briefly shared these three attempts with you was to not only reinforce what I said earlier about how the workflow won&rsquo;t necessarily be standardized, but also to point out that <strong>the prompt is just as much for you as it is for GPT<\/strong>.<\/p>\n\n\n\n<p>What I mean is that it&rsquo;s up to you to pay attention to what ChatGPT is doing &ndash; and <em>not<\/em> doing &ndash; and put it back on track if it falls off. So as you are moving through this journey, don&rsquo;t forget to refer back to the prompt and also to the pointers I&rsquo;ll share a bit later in the debugging section. Remind and reorientate ChatGPT to do what you want it to do as much as you need to.<\/p>\n\n\n\n<h3 class=\"wp-block-heading joli-heading jtoc-heading\" id=\"h-download-my-plugin-and-test-it-out\">Download my plugin and test it out &#128229;<\/h3>\n\n\n\n<p>If you want to take the &ldquo;working version&rdquo; of my plugin for a spin, the zip file is below. I will update this in the near future to include the WP repository version, but this will let you use it for now.<\/p>\n\n\n\n<div class=\"wp-block-file\"><a href=\"https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/funky-text-effects.zip\" class=\"wp-block-file__button wp-element-button\" download>Download Funky Text Effects Plugin<\/a><\/div>\n\n\n<div class=\"su-divider su-divider-style-dotted\" style=\"margin:40px 0;border-width:1px;border-color:#999999\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading joli-heading jtoc-heading\" id=\"h-phase-three-tools-scripts-directories-and-git\">Phase three: tools, scripts, directories, and Git &#128105;&zwj;&#128187;<\/h2>\n\n\n\n<p>In this phase you are going to set the groundwork for building your plugin. It&rsquo;s also where the learning curve will rapidly increase, especially once you get into installing scripts and using Terminal (or Command Prompt if you&rsquo;re on a PC). Here&rsquo;s the breakdown:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Decide which local environment tool you want to use (e.g., Local by Flywheel, Docker).<\/li>\n\n\n\n<li>Set up your project directories.<\/li>\n\n\n\n<li>Install your scripts (e.g., npm, Composer).<\/li>\n\n\n\n<li>Set up a Git repository (&ldquo;repo&rdquo;) and commit (upload) your plugin files to it<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading joli-heading jtoc-heading\" id=\"h-build-local-environment\">Build local environment<\/h3>\n\n\n<div class=\"su-spoiler su-spoiler-style-fancy su-spoiler-icon-plus\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span><strong>Read the breakdown &#128071;&#127995;<\/strong> <\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<p>When I built my plugin, I ended up using both <a href=\"https:\/\/localwp.com\/\" target=\"_blank\" rel=\"noopener\">Local by Flywheel<\/a> and <a href=\"https:\/\/www.docker.com\/\" target=\"_blank\" rel=\"noopener\">Docker<\/a>, but let me be clear: you really only need one of them.<\/p>\n\n\n<p>I started with Local by Flywheel because it&rsquo;s user-friendly and specifically designed for WordPress development. However, when I initially tried to make my plugin hook directly into the block editor, I ran into some <span id=\"su_tooltip_69e986cfa8eb9_button\" class=\"su-tooltip-button su-tooltip-button-outline-yes tooltip-underline\" aria-describedby=\"su_tooltip_69e986cfa8eb9\" data-settings='{\"position\":\"top\",\"behavior\":\"hover\",\"hideDelay\":0}' tabindex=\"0\">dependency conflicts<\/span><span style=\"display:none;z-index:100\" id=\"su_tooltip_69e986cfa8eb9\" class=\"su-tooltip tooltip-underline\" role=\"tooltip\"><span class=\"su-tooltip-inner su-tooltip-shadow-no\" style=\"z-index:100;background:#222222;color:#FFFFFF;font-size:16px;border-radius:5px;text-align:left;max-width:300px;line-height:1.25\"><span class=\"su-tooltip-title\"><\/span><span class=\"su-tooltip-content su-u-trim\">Occurs when two or more plugins or themes require different versions of the same dependency.<\/span><\/span><span id=\"su_tooltip_69e986cfa8eb9_arrow\" class=\"su-tooltip-arrow\" style=\"z-index:100;background:#222222\" data-popper-arrow><\/span><\/span>. That&rsquo;s when ChatGPT suggested I try Docker to help so I ended up with both tools.<\/p>\n\n\n\n<p>My advice? <a href=\"https:\/\/themeisle.com\/blog\/local-by-flywheel-wordpress-on-mac\/\">Start with Local by Flywheel<\/a>. It&rsquo;s straightforward and works great for most beginner plugin development scenarios. Only consider alternatives like Docker if you run into specific issues that Local can&rsquo;t handle.<\/p>\n\n\n\n<p>After your website is set up, I also recommend installing the <a href=\"https:\/\/wordpress.org\/plugins\/wp-fastest-cache\/\" target=\"_blank\" rel=\"noopener\">WP Fastest Cache<\/a> plugin. It will come in handy later when you are linting and debugging.<\/p>\n\n\n<\/div><\/div>\n\n\n\n<h3 class=\"wp-block-heading joli-heading jtoc-heading\" id=\"h-set-up-project-directories\">Set up project directories<\/h3>\n\n\n<div class=\"su-spoiler su-spoiler-style-fancy su-spoiler-icon-plus su-spoiler-closed\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span><strong>Read the breakdown &#128071;&#127995;<\/strong> <\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<p>Once your local environment is up and running, you&rsquo;ll need to set up your plugin&rsquo;s directory structure. A well-organized file structure is crucial for maintainable and scalable plugin development. Here&rsquo;s how to get started:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>In your local environment (i.e., your hard drive), navigate to the WordPress plugins directory (usually <code>wp-content\/plugins\/<\/code>).<\/li>\n\n\n\n<li>Create a new folder for your plugin. Choose a name that&rsquo;s descriptive but concise. I named mine &ldquo;Funky Text Effects.&rdquo;<\/li>\n\n\n\n<li>Inside this main folder, set up a basic structure that looks something like this:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>funky-text-effects\/\n&#9500;&#9472;&#9472; assets\/\n&#9474;   &#9500;&#9472;&#9472; css\/\n&#9474;   &#9500;&#9472;&#9472; js\/\n&#9474;   &#9492;&#9472;&#9472; images\/\n&#9492;&#9472;&#9472; funky-text-effects.php<\/code><\/pre>\n\n\n\n<p>If you plan on translating your plugin into other languages, you can also add a <code>\/languages<\/code> directory in the main plugin directory:<\/p>\n\n\n\n<p>funky-text-effects\/<br>&#9500;&#9472;&#9472; assets\/<br>&#9474;   &#9500;&#9472;&#9472; css\/<br>&#9474;   &#9500;&#9472;&#9472; js\/<br>&#9474;   &#9492;&#9472;&#9472; images\/<br>&#9500;&#9472;&#9472; languages\/ (optional)<br>&#9492;&#9472;&#9472; funky-text-effects.php<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Finally, create a <code>.gitignore<\/code> file in your main plugin directory, which will help you avoid committing unnecessary files to your Git repository. This was included in the initial prompt template to ChatGPT so it&rsquo;s possible that GPT will automatically tell you to do it when you reach this step. However, it can be forgetful, especially once your thread starts getting too long. Hence why I&rsquo;m mentioning it here as a reminder.<\/li>\n<\/ul>\n\n\n<\/div><\/div>\n\n\n\n<h3 class=\"wp-block-heading joli-heading jtoc-heading\" id=\"h-install-scripts\">Install scripts<\/h3>\n\n\n<div class=\"su-spoiler su-spoiler-style-fancy su-spoiler-icon-plus su-spoiler-closed\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span><strong>Read the breakdown &#128071;&#127995;<\/strong> <\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<p>To install your scripts, you&rsquo;ll need to use the command line interface &ndash; that&rsquo;s <a href=\"https:\/\/support.apple.com\/guide\/terminal\/welcome\/mac\" target=\"_blank\" rel=\"noopener\">Terminal on Mac<\/a> or <a href=\"https:\/\/learn.microsoft.com\/en-us\/windows-server\/administration\/windows-commands\/windows-commands\" target=\"_blank\" rel=\"noopener\">Command Prompt on Windows<\/a>.<\/p>\n\n\n\n<p>If you&rsquo;re new to development, this might feel intimidating. But don&rsquo;t worry, it&rsquo;s not as scary as it looks! Not only that, but whenever you get stuck &ndash; and believe me, you <em>will<\/em> get stuck &ndash; ChatGPT will be right there to help you get unstuck. I also recommend using <a href=\"https:\/\/themeisle.com\/blog\/chatgpt-alternative\/\">Claude as a backup option<\/a>. Sometimes if you&rsquo;re not getting anywhere with GPT, Claude can provide a breakthrough.<\/p>\n\n\n\n<p>With that out of the way, let&rsquo;s take a look at the tools you&rsquo;ll almost certainly need, regardless of the type of plugin you&rsquo;ll be building:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><a href=\"https:\/\/docs.npmjs.com\/about-npm\" target=\"_blank\" rel=\"noopener\">NPM<\/a> (Node Package Manager): For various JavaScript tools.<\/li>\n\n\n\n<li><a href=\"https:\/\/getcomposer.org\/download\/\" target=\"_blank\" rel=\"noopener\">Composer<\/a>: For managing PHP dependencies.<\/li>\n\n\n\n<li><a href=\"https:\/\/www.npmjs.com\/package\/@wordpress\/scripts\" target=\"_blank\" rel=\"noopener\">WordPress Scripts<\/a>: A collection of reusable scripts for WordPress development.<\/li>\n<\/ol>\n\n\n\n<p>In the later stages, you&rsquo;ll also need to install other tools for linting, etc. I&rsquo;ll cover those when we get to them.<\/p>\n\n\n\n<p>&#128161; I also recommend taking a <a href=\"https:\/\/developer.wordpress.org\/block-editor\/reference-guides\/packages\/\" target=\"_blank\" rel=\"noopener\">look at this page<\/a>. It contains a directory of all the various script packages you can install. Although you&rsquo;re unlikely to understand a lot of what they do at this stage, there are some that are titled in a way that provides a hint at what they are used for. If any of them seem like they&rsquo;d be relevant to your plugin, then ask GPT about them directly.<\/p>\n\n\n\n<p>As you progress in your plugin development journey, you&rsquo;ll get a feel for which tools you use frequently and which ones you can do without. Don&rsquo;t be afraid to experiment and find the setup that works best for you and your plugin.<\/p>\n\n\n<\/div><\/div>\n\n\n\n<h3 class=\"wp-block-heading joli-heading jtoc-heading\" id=\"h-create-a-git-repository-repo-and-commit-your-files\">Create a Git repository (&ldquo;repo&rdquo;) and commit your files<\/h3>\n\n\n<div class=\"su-spoiler su-spoiler-style-fancy su-spoiler-icon-plus su-spoiler-closed\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span><strong>Read the breakdown &#128071;&#127995;<\/strong> <\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<figure class=\"wp-block-image size-full blog-img-std\"><img data-opt-id=1235486664  data-opt-src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/My-GitHub-repository-scaled.webp\"  decoding=\"async\" width=\"2560\" height=\"1368\" src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:eco\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/My-GitHub-repository-scaled.webp\" alt=\"My GitHub repository.\" class=\"wp-image-106843\" old-srcset=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1920\/h:1026\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/My-GitHub-repository-scaled.webp 2560w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:300\/h:160\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/My-GitHub-repository-scaled.webp 300w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1024\/h:547\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/My-GitHub-repository-scaled.webp 1024w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:768\/h:410\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/My-GitHub-repository-scaled.webp 768w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1536\/h:821\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/My-GitHub-repository-scaled.webp 1536w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1920\/h:1026\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/My-GitHub-repository-scaled.webp 2048w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:50\/h:27\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/My-GitHub-repository-scaled.webp 50w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:449\/h:240\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/My-GitHub-repository-scaled.webp 449w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:743\/h:397\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/My-GitHub-repository-scaled.webp 743w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1123\/h:600\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/My-GitHub-repository-scaled.webp 1123w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:277\/h:148\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/My-GitHub-repository-scaled.webp 277w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:365\/h:195\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/My-GitHub-repository-scaled.webp 365w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:253\/h:135\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/My-GitHub-repository-scaled.webp 253w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1920\/h:1026\/q:mauto\/f:best\/dpr:2\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/My-GitHub-repository-scaled.webp 2x\"><noscript><img data-opt-id=1235486664  decoding=\"async\" width=\"2560\" height=\"1368\" src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/My-GitHub-repository-scaled.webp\" alt=\"My GitHub repository.\" class=\"wp-image-106843\" srcset=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1920\/h:1026\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/My-GitHub-repository-scaled.webp 2560w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:300\/h:160\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/My-GitHub-repository-scaled.webp 300w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1024\/h:547\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/My-GitHub-repository-scaled.webp 1024w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:768\/h:410\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/My-GitHub-repository-scaled.webp 768w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1536\/h:821\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/My-GitHub-repository-scaled.webp 1536w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1920\/h:1026\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/My-GitHub-repository-scaled.webp 2048w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:50\/h:27\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/My-GitHub-repository-scaled.webp 50w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:449\/h:240\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/My-GitHub-repository-scaled.webp 449w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:743\/h:397\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/My-GitHub-repository-scaled.webp 743w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1123\/h:600\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/My-GitHub-repository-scaled.webp 1123w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:277\/h:148\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/My-GitHub-repository-scaled.webp 277w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:365\/h:195\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/My-GitHub-repository-scaled.webp 365w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:253\/h:135\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/My-GitHub-repository-scaled.webp 253w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1920\/h:1026\/q:mauto\/f:best\/dpr:2\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/My-GitHub-repository-scaled.webp 2x\" sizes=\"(max-width: 700px) 100vw, 700px\"></noscript><figcaption class=\"wp-element-caption\"><em>My initial GitHub Repository. It&rsquo;s private at the moment, but once I make some additional adjustments to my code, I will make it public &ndash; so keep an eye on this page!<\/em><\/figcaption><\/figure>\n\n\n\n<p>With all of the previous steps out of the way, it&rsquo;s time to create a Git repository and commit your initial files to it. This step creates a snapshot of your project&rsquo;s starting point.<\/p>\n\n\n\n<p>I personally used <a href=\"https:\/\/github.com\/\" target=\"_blank\" rel=\"noopener\">GitHub<\/a> because that&rsquo;s what we use here at Themeisle so I already had an account there, but there are other platforms (e.g., <a href=\"https:\/\/about.gitlab.com\/platform\/\" target=\"_blank\" rel=\"noopener\">GitLab<\/a>, <a href=\"https:\/\/bitbucket.org\/product\/\" target=\"_blank\" rel=\"noopener\">Bitbucket<\/a>) as well. <strong>If you end up using a platform other than GitHub, don&rsquo;t forget to adjust the prompt template in phase three<\/strong>.<\/p>\n\n\n\n<p>In the interest of brevity, I&rsquo;m <em>not<\/em> going to walk you through how to do this. Once you reach this step, ChatGPT can guide you through the process step-by-step, including what commands you&rsquo;ll need to type into your Terminal \/ Command Prompt.<\/p>\n\n\n\n<p>When committing your initial files, keep these points in mind:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Review what you&rsquo;re committing: Make sure you&rsquo;re only including necessary files. Use your <code>.gitignore<\/code> file to exclude any temporary or generated files.<\/li>\n\n\n\n<li>Write a clear commit message: Something like &ldquo;Initial commit: Basic project structure and configs&rdquo; works well.<\/li>\n\n\n\n<li>Don&rsquo;t worry about perfection: This is just your starting point. You&rsquo;ll be making many more commits as you develop your plugin.<\/li>\n<\/ul>\n\n\n\n<p>Again, ChatGPT will most likely give you guidance on the specific commands to use for this initial commit. If it doesn&rsquo;t, just ask it to. Make sure to write that you need the <em>exact<\/em> steps based on your setup and Git platform.<\/p>\n\n\n\n<p>By completing this step, you will officially kick off your plugin development project with a solid foundation for version control. From here on out, you&rsquo;ll be able to track every change you make, experiment with new features safely, and collaborate with others if you choose to do so.<\/p>\n\n\n<\/div><\/div>\n<div class=\"su-divider su-divider-style-dotted\" style=\"margin:40px 0;border-width:1px;border-color:#999999\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading joli-heading jtoc-heading\" id=\"h-phase-four-plugin-playtime\">Phase four: plugin playtime &#128433;&#65039;<\/h2>\n\n\n\n<p>Out of all the phases, I would say this one and the next one are probably the most fun because it&rsquo;s when you really start to see everything come together. To get started, you&rsquo;ll want to log into your local WordPress installation. If you end up using Local by Flywheel, it&rsquo;s very straightforward, you just click the <strong>WP Admin button<\/strong> near the top right:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large blog-img-std\"><img data-opt-id=1181779375  data-opt-src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1024\/h:682\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-wp-admin-from-Local-by-Flywheel.webp\"  decoding=\"async\" width=\"1024\" height=\"682\" src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1024\/h:682\/q:eco\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-wp-admin-from-Local-by-Flywheel.webp\" alt=\"Logging into wp-admin from the Local by Flywheel interface.\" class=\"wp-image-106480\" old-srcset=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1024\/h:682\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-wp-admin-from-Local-by-Flywheel.webp 1024w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:300\/h:200\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-wp-admin-from-Local-by-Flywheel.webp 300w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:768\/h:511\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-wp-admin-from-Local-by-Flywheel.webp 768w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1536\/h:1023\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-wp-admin-from-Local-by-Flywheel.webp 1536w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1621\/h:1080\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-wp-admin-from-Local-by-Flywheel.webp 2048w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1621\/h:1080\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-wp-admin-from-Local-by-Flywheel.webp 1800w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:50\/h:33\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-wp-admin-from-Local-by-Flywheel.webp 50w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:360\/h:240\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-wp-admin-from-Local-by-Flywheel.webp 360w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:596\/h:397\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-wp-admin-from-Local-by-Flywheel.webp 596w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:901\/h:600\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-wp-admin-from-Local-by-Flywheel.webp 901w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:222\/h:148\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-wp-admin-from-Local-by-Flywheel.webp 222w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:293\/h:195\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-wp-admin-from-Local-by-Flywheel.webp 293w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:203\/h:135\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-wp-admin-from-Local-by-Flywheel.webp 203w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1621\/h:1080\/q:mauto\/f:best\/dpr:2\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-wp-admin-from-Local-by-Flywheel.webp 2x\"><noscript><img data-opt-id=1181779375  decoding=\"async\" width=\"1024\" height=\"682\" src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1024\/h:682\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-wp-admin-from-Local-by-Flywheel.webp\" alt=\"Logging into wp-admin from the Local by Flywheel interface.\" class=\"wp-image-106480\" srcset=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1024\/h:682\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-wp-admin-from-Local-by-Flywheel.webp 1024w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:300\/h:200\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-wp-admin-from-Local-by-Flywheel.webp 300w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:768\/h:511\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-wp-admin-from-Local-by-Flywheel.webp 768w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1536\/h:1023\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-wp-admin-from-Local-by-Flywheel.webp 1536w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1621\/h:1080\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-wp-admin-from-Local-by-Flywheel.webp 2048w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1621\/h:1080\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-wp-admin-from-Local-by-Flywheel.webp 1800w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:50\/h:33\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-wp-admin-from-Local-by-Flywheel.webp 50w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:360\/h:240\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-wp-admin-from-Local-by-Flywheel.webp 360w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:596\/h:397\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-wp-admin-from-Local-by-Flywheel.webp 596w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:901\/h:600\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-wp-admin-from-Local-by-Flywheel.webp 901w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:222\/h:148\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-wp-admin-from-Local-by-Flywheel.webp 222w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:293\/h:195\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-wp-admin-from-Local-by-Flywheel.webp 293w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:203\/h:135\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-wp-admin-from-Local-by-Flywheel.webp 203w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1621\/h:1080\/q:mauto\/f:best\/dpr:2\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-wp-admin-from-Local-by-Flywheel.webp 2x\" sizes=\"(max-width: 700px) 100vw, 700px\"></noscript><\/figure>\n\n\n\n<p>If you end up using Docker or another local development tool and you&rsquo;re not sure how to get into your site, just ask ChatGPT.<\/p>\n\n\n\n<p>Once you&rsquo;re logged in, activate your plugin by going to <strong>Plugins &rarr; Installed Plugins<\/strong>. Then find your plugin on the list and click on <strong>Activate<\/strong>:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full blog-img-std\"><img data-opt-id=71215879  data-opt-src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Activating-your-plugin-on-the-local-installation.webp\"  decoding=\"async\" width=\"2426\" height=\"1420\" src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:eco\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Activating-your-plugin-on-the-local-installation.webp\" alt=\"\" class=\"wp-image-106481\" old-srcset=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1845\/h:1080\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Activating-your-plugin-on-the-local-installation.webp 2426w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:300\/h:176\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Activating-your-plugin-on-the-local-installation.webp 300w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1024\/h:599\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Activating-your-plugin-on-the-local-installation.webp 1024w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:768\/h:450\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Activating-your-plugin-on-the-local-installation.webp 768w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1536\/h:899\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Activating-your-plugin-on-the-local-installation.webp 1536w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1844\/h:1080\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Activating-your-plugin-on-the-local-installation.webp 2048w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1800\/h:1054\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Activating-your-plugin-on-the-local-installation.webp 1800w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:50\/h:29\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Activating-your-plugin-on-the-local-installation.webp 50w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:410\/h:240\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Activating-your-plugin-on-the-local-installation.webp 410w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:678\/h:397\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Activating-your-plugin-on-the-local-installation.webp 678w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1025\/h:600\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Activating-your-plugin-on-the-local-installation.webp 1025w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:253\/h:148\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Activating-your-plugin-on-the-local-installation.webp 253w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:333\/h:195\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Activating-your-plugin-on-the-local-installation.webp 333w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:231\/h:135\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Activating-your-plugin-on-the-local-installation.webp 231w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1845\/h:1080\/q:mauto\/f:best\/dpr:2\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Activating-your-plugin-on-the-local-installation.webp 2x\"><noscript><img data-opt-id=71215879  decoding=\"async\" width=\"2426\" height=\"1420\" src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Activating-your-plugin-on-the-local-installation.webp\" alt=\"\" class=\"wp-image-106481\" srcset=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1845\/h:1080\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Activating-your-plugin-on-the-local-installation.webp 2426w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:300\/h:176\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Activating-your-plugin-on-the-local-installation.webp 300w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1024\/h:599\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Activating-your-plugin-on-the-local-installation.webp 1024w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:768\/h:450\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Activating-your-plugin-on-the-local-installation.webp 768w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1536\/h:899\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Activating-your-plugin-on-the-local-installation.webp 1536w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1844\/h:1080\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Activating-your-plugin-on-the-local-installation.webp 2048w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1800\/h:1054\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Activating-your-plugin-on-the-local-installation.webp 1800w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:50\/h:29\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Activating-your-plugin-on-the-local-installation.webp 50w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:410\/h:240\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Activating-your-plugin-on-the-local-installation.webp 410w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:678\/h:397\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Activating-your-plugin-on-the-local-installation.webp 678w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1025\/h:600\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Activating-your-plugin-on-the-local-installation.webp 1025w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:253\/h:148\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Activating-your-plugin-on-the-local-installation.webp 253w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:333\/h:195\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Activating-your-plugin-on-the-local-installation.webp 333w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:231\/h:135\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Activating-your-plugin-on-the-local-installation.webp 231w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1845\/h:1080\/q:mauto\/f:best\/dpr:2\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Activating-your-plugin-on-the-local-installation.webp 2x\" sizes=\"(max-width: 700px) 100vw, 700px\"></noscript><\/figure>\n\n\n<div class=\"su-note\" style=\"border-color:#e5e1b2;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\"><div class=\"su-note-inner su-u-clearfix su-u-trim\" style=\"background-color:#FFFBCC;border-color:#ffffff;color:#333333;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\">\n\n\n\n<p>&#9888;&#65039; <strong>Important<\/strong>: If you do not see your plugin here, don&rsquo;t panic. It&rsquo;s most likely a directory mismatch, but regardless, you can tap ChatGPT to help you figure it out. If you find yourself still stuck after repeated attempts and ChatGPT has not suggested to you to try WordPress debug mode, then ask it to give you the code snippets for it. They will look something like this:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>define( 'WP_DEBUG', true );<br>define( 'WP_DEBUG_LOG', true );<br>define( 'WP_DEBUG_DISPLAY', false );<\/code><\/pre>\n\n\n<\/div><\/div>\n\n\n\n<p>After you activate your plugin, start using it and make notes:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Is everything working how it&rsquo;s supposed to? <em>Highly unlikely<\/em>.<\/li>\n\n\n\n<li>What&rsquo;s not working? In what way is it not working?<\/li>\n\n\n\n<li>What are some minor things you completely overlooked in your initial prompt description that aren&rsquo;t working properly?<\/li>\n<\/ul>\n\n\n\n<p>Once you&rsquo;ve made your notes, you&rsquo;re ready to move onto the next phase: debugging and linting.<\/p>\n\n\n<div class=\"su-divider su-divider-style-dotted\" style=\"margin:40px 0;border-width:1px;border-color:#999999\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading joli-heading jtoc-heading\" id=\"h-phase-five-debugging-and-linting\">Phase five: debugging and linting &#128187;<\/h2>\n\n\n\n<p>Plugin complexity and bugs have a correlational relationship: <strong>the more complex your plugin gets, the greater the potential for bugs<\/strong>. But even simpler plugins will require linting and debugging.<\/p>\n\n\n\n<h3 class=\"wp-block-heading joli-heading jtoc-heading\" id=\"h-linting\">Linting<\/h3>\n\n\n\n<p>If this article is the first time you&rsquo;re seeing the word &ldquo;linting&rdquo; and you aren&rsquo;t sure what it means, very simply, it checks your plugin&rsquo;s code against a set of rules and standards for that type of code. It then tells you if it found any errors or inconsistencies, what lines they are on, and how to resolve them.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full blog-img-std\"><img data-opt-id=869868493  data-opt-src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Looking-at-some-JavaScript-linting.webp\"  decoding=\"async\" width=\"1882\" height=\"512\" src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:eco\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Looking-at-some-JavaScript-linting.webp\" alt=\"An example of me linting one of my JavaScript files.\" class=\"wp-image-106485\" old-srcset=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1882\/h:512\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Looking-at-some-JavaScript-linting.webp 1882w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:300\/h:82\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Looking-at-some-JavaScript-linting.webp 300w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1024\/h:279\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Looking-at-some-JavaScript-linting.webp 1024w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:768\/h:209\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Looking-at-some-JavaScript-linting.webp 768w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1536\/h:418\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Looking-at-some-JavaScript-linting.webp 1536w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1800\/h:490\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Looking-at-some-JavaScript-linting.webp 1800w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:50\/h:14\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Looking-at-some-JavaScript-linting.webp 50w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:480\/h:131\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Looking-at-some-JavaScript-linting.webp 480w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:794\/h:216\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Looking-at-some-JavaScript-linting.webp 794w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1200\/h:326\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Looking-at-some-JavaScript-linting.webp 1200w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:296\/h:81\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Looking-at-some-JavaScript-linting.webp 296w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:390\/h:106\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Looking-at-some-JavaScript-linting.webp 390w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:270\/h:73\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Looking-at-some-JavaScript-linting.webp 270w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1882\/h:512\/q:mauto\/f:best\/dpr:2\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Looking-at-some-JavaScript-linting.webp 2x\"><noscript><img data-opt-id=869868493  decoding=\"async\" width=\"1882\" height=\"512\" src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Looking-at-some-JavaScript-linting.webp\" alt=\"An example of me linting one of my JavaScript files.\" class=\"wp-image-106485\" srcset=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1882\/h:512\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Looking-at-some-JavaScript-linting.webp 1882w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:300\/h:82\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Looking-at-some-JavaScript-linting.webp 300w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1024\/h:279\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Looking-at-some-JavaScript-linting.webp 1024w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:768\/h:209\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Looking-at-some-JavaScript-linting.webp 768w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1536\/h:418\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Looking-at-some-JavaScript-linting.webp 1536w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1800\/h:490\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Looking-at-some-JavaScript-linting.webp 1800w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:50\/h:14\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Looking-at-some-JavaScript-linting.webp 50w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:480\/h:131\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Looking-at-some-JavaScript-linting.webp 480w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:794\/h:216\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Looking-at-some-JavaScript-linting.webp 794w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1200\/h:326\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Looking-at-some-JavaScript-linting.webp 1200w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:296\/h:81\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Looking-at-some-JavaScript-linting.webp 296w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:390\/h:106\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Looking-at-some-JavaScript-linting.webp 390w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:270\/h:73\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Looking-at-some-JavaScript-linting.webp 270w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1882\/h:512\/q:mauto\/f:best\/dpr:2\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Looking-at-some-JavaScript-linting.webp 2x\" sizes=\"(max-width: 700px) 100vw, 700px\"></noscript><\/figure>\n\n\n\n<p>Linting is fairly straightforward. Just make sure that you are using the proper linting tools for the types of code\/files that you&rsquo;ll be working on:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/github.com\/PHPCSStandards\/PHP_CodeSniffer\" target=\"_blank\" rel=\"noopener\">PHP_CodeSniffer<\/a> with <a href=\"https:\/\/github.com\/WordPress\/WordPress-Coding-Standards\" target=\"_blank\" rel=\"noopener\">WordPress-Coding-Standards<\/a> for PHP linting.<\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/eslint\/eslint\" target=\"_blank\" rel=\"noopener\">ESLint<\/a> for JavaScript linting.<\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/stylelint\/stylelint\" target=\"_blank\" rel=\"noopener\">StyleLint<\/a> for CSS linting.<\/li>\n<\/ul>\n\n\n\n<p>For JavaScript, you may also want to add:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/github.com\/sindresorhus\/eslint-plugin-unicorn\" target=\"_blank\" rel=\"noopener\">ESLint Unicorn<\/a>: More than 100 powerful ESLint rules.<\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/eslint-community\/eslint-plugin-promise\" target=\"_blank\" rel=\"noopener\">ESLint Promise<\/a>: Useful for managing asynchronous tasks such as API calls, database queries, file handling, or any operation that takes time to complete.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading joli-heading jtoc-heading\" id=\"h-debugging\">Debugging<\/h3>\n\n\n\n<p>In contrast to linting, debugging is much like what you did in the previous phase, which is that you use the plugin yourself, identify issues that need to be fixed, and then you either fix them yourself or ask ChatGPT to assist you.<\/p>\n\n\n\n<p>I personally found debugging more complicated than linting. One big reason is that when you lint, the output of the linting process tells you exactly what the issues are, and where in your code they are located. With debugging, you don&rsquo;t get that luxury. It&rsquo;s up to you and ChatGPT to figure it out.<\/p>\n\n\n\n<p>However, ChatGPT has a hard time staying laser focused on problematic lines of code, which means you need to take care of the &ldquo;ready, set&rdquo; before you let it &ldquo;fire.&rdquo;<\/p>\n\n\n\n<p>To make things easier for you, I put together a list of all the various piece of advice that I would have given myself prior to starting the debugging phase.<\/p>\n\n\n<div class=\"su-spoiler su-spoiler-style-fancy su-spoiler-icon-plus su-spoiler-closed\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span><strong>Read the breakdown &#128071;&#127995;<\/strong> <\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-do-not-be-vague-and-don-t-leave-it-up-to-chatgpt\">Do not be vague and don&rsquo;t leave it up to ChatGPT<\/h4>\n\n\n\n<p>If you don&rsquo;t give ChatGPT very specific instructions, it will start spitting out endless lines of code at you and often times the code won&rsquo;t even be any different from what it already gave you. It&rsquo;ll want you to &ldquo;double check&rdquo; that it&rsquo;s correct, but all that does is waste time. There is nothing more frustrating than this:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full blog-img-std\"><img data-opt-id=1024438068  data-opt-src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/ChatGPT-providing-identical-code-during-debugging.webp\"  decoding=\"async\" width=\"1716\" height=\"650\" src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:eco\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/ChatGPT-providing-identical-code-during-debugging.webp\" alt=\"ChatGPT providing code during debugging that is identical to previously provided code (i.e., not solving the problem).\" class=\"wp-image-106493\" old-srcset=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1716\/h:650\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/ChatGPT-providing-identical-code-during-debugging.webp 1716w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:300\/h:114\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/ChatGPT-providing-identical-code-during-debugging.webp 300w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1024\/h:388\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/ChatGPT-providing-identical-code-during-debugging.webp 1024w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:768\/h:291\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/ChatGPT-providing-identical-code-during-debugging.webp 768w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1536\/h:582\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/ChatGPT-providing-identical-code-during-debugging.webp 1536w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:50\/h:19\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/ChatGPT-providing-identical-code-during-debugging.webp 50w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:480\/h:182\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/ChatGPT-providing-identical-code-during-debugging.webp 480w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:794\/h:301\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/ChatGPT-providing-identical-code-during-debugging.webp 794w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1200\/h:455\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/ChatGPT-providing-identical-code-during-debugging.webp 1200w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:296\/h:112\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/ChatGPT-providing-identical-code-during-debugging.webp 296w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:390\/h:148\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/ChatGPT-providing-identical-code-during-debugging.webp 390w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:270\/h:102\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/ChatGPT-providing-identical-code-during-debugging.webp 270w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1716\/h:650\/q:mauto\/f:best\/dpr:2\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/ChatGPT-providing-identical-code-during-debugging.webp 2x\"><noscript><img data-opt-id=1024438068  decoding=\"async\" width=\"1716\" height=\"650\" src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/ChatGPT-providing-identical-code-during-debugging.webp\" alt=\"ChatGPT providing code during debugging that is identical to previously provided code (i.e., not solving the problem).\" class=\"wp-image-106493\" srcset=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1716\/h:650\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/ChatGPT-providing-identical-code-during-debugging.webp 1716w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:300\/h:114\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/ChatGPT-providing-identical-code-during-debugging.webp 300w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1024\/h:388\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/ChatGPT-providing-identical-code-during-debugging.webp 1024w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:768\/h:291\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/ChatGPT-providing-identical-code-during-debugging.webp 768w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1536\/h:582\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/ChatGPT-providing-identical-code-during-debugging.webp 1536w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:50\/h:19\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/ChatGPT-providing-identical-code-during-debugging.webp 50w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:480\/h:182\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/ChatGPT-providing-identical-code-during-debugging.webp 480w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:794\/h:301\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/ChatGPT-providing-identical-code-during-debugging.webp 794w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1200\/h:455\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/ChatGPT-providing-identical-code-during-debugging.webp 1200w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:296\/h:112\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/ChatGPT-providing-identical-code-during-debugging.webp 296w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:390\/h:148\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/ChatGPT-providing-identical-code-during-debugging.webp 390w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:270\/h:102\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/ChatGPT-providing-identical-code-during-debugging.webp 270w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1716\/h:650\/q:mauto\/f:best\/dpr:2\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/ChatGPT-providing-identical-code-during-debugging.webp 2x\" sizes=\"(max-width: 700px) 100vw, 700px\"></noscript><\/figure>\n\n\n\n<p>What you should do instead, is give ChatGPT very specific instructions to not simply generate code, but to specifically isolate which lines of code it believes are causing the problem and show them to you. Tell it to explain how it plans to changes those lines and why it thinks these changes will solve the problem. Finally, ask it to tell you what the expected outcome should be after these changes are implemented.<\/p>\n\n\n\n<p>These instructions will help it stay focused on the problem and will minimize spillover bugs where it might fix your one issue but cause new problems in the process.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-regular-css-versus-bem-css\">Regular CSS versus BEM CSS<\/h4>\n\n\n\n<p>Related to above but specific to CSS, you should keep in mind that for any CSS snippets, ChatGPT will generate standard CSS, or what I call &ldquo;classroom CSS&rdquo; by default.<\/p>\n\n\n\n<p>This is the basic CSS you&rsquo;d learn when taking a beginner&rsquo;s course on the subject. It&rsquo;s easy to understand, and there is nothing technically wrong with it per se, but when developing WordPress plugins, it can lead to conflicts with other plugins or themes.<\/p>\n\n\n\n<p>Instead, it&rsquo;s better to tell GPT to use BEM (Block Element Modifier) methodology. BEM helps reduce the risk of CSS conflicts by providing a clear and structured naming convention. It ensures that your styles are more predictable and easier to manage, as each block, element, and modifier has a distinct, descriptive class name that minimizes the chance of unintended styling impacts. Additionally, BEM improves maintainability by making it easier to locate and update specific styles without affecting others.<\/p>\n\n\n\n<p>I already included a mention of this in the example prompt in phase two, but I&rsquo;m highlighting it here so that you always remember to give these instructions to ChatGPT for your CSS snippets.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-conditional-loading-versus-global-enqueueing\">Conditional loading versus global enqueueing<\/h4>\n\n\n\n<p>Another default behavior of ChatGPT&rsquo;s has to do with enqueueing scripts. Don&rsquo;t worry if you don&rsquo;t know what this phrase means just yet. What matters is that you recognize it in your code when you see it. It&rsquo;ll look something like this:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>function enqueue_my_scripts() {\nwp_enqueue_script('my-plugin-script', plugin_dir_url(<strong>FILE<\/strong>) . 'js\/my-script.js', array('jquery'), '1.0.0', true);\n}\nadd_action('admin_enqueue_scripts', 'enqueue_my_scripts');<\/code><\/pre>\n\n\n\n<p>In the example above, the code will globally enqueue a script for all admin pages, which is often unnecessary and can lead to performance issues. Unfortunately, that&rsquo;s what ChatGPT will give you unless you speak up and tell it not to. To be clear, in some instances, this is actually completely appropriate, but in many instances, it&rsquo;s not.<\/p>\n\n\n\n<p>Therefore, as soon as you notice ChatGPT generate any code with the word &ldquo;enqueue,&rdquo; make sure you have a conversation about it. Ask ChatGPT if it makes sense to enqueue your scripts globally, or only on the specific pages where the scripts are needed &ndash; which is known as &ldquo;conditional loading.&rdquo;<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-remind-and-remind-frequently\">Remind and remind frequently<\/h4>\n\n\n\n<p>ChatGPT has a propensity for being forgetful and this is even more so when you are using it to code. So while you might give it specific instructions, the probability of it following those instructions for the duration of your project is <em>zero<\/em>.<\/p>\n\n\n\n<p>Sometimes it will even outright ignore what you ask it to do. If this happens, just be more stern and let it know that it&rsquo;s not doing what you want:<\/p>\n\n\n<div class=\"su-spacer\" style=\"height:20px\"><\/div>\n<div class=\"su-note blog-img-std\" style=\"border-color:#e0e0e0;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\"><div class=\"su-note-inner su-u-clearfix su-u-trim\" style=\"background-color:#fafafa;border-color:#ffffff;color:#333333;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\">\n<div class=\"su-expand su-expand-collapsed su-expand-link-style-underlined\" data-height=\"300\"><div class=\"su-expand-content su-u-trim\" style=\"color:#333333;max-height:300px;overflow:hidden\">\n\n\n\n<figure class=\"wp-block-image size-full blog-img-std\"><img data-opt-id=921832026  data-opt-src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Getting-ChatGPT-to-refocus-and-isolate-the-problematic-lines-of-code-scaled.webp\"  decoding=\"async\" width=\"1644\" height=\"2560\" src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:eco\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Getting-ChatGPT-to-refocus-and-isolate-the-problematic-lines-of-code-scaled.webp\" alt=\"\" class=\"wp-image-106494\" old-srcset=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:693\/h:1080\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Getting-ChatGPT-to-refocus-and-isolate-the-problematic-lines-of-code-scaled.webp 1644w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:193\/h:300\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Getting-ChatGPT-to-refocus-and-isolate-the-problematic-lines-of-code-scaled.webp 193w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:657\/h:1024\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Getting-ChatGPT-to-refocus-and-isolate-the-problematic-lines-of-code-scaled.webp 657w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:693\/h:1080\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Getting-ChatGPT-to-refocus-and-isolate-the-problematic-lines-of-code-scaled.webp 768w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:693\/h:1080\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Getting-ChatGPT-to-refocus-and-isolate-the-problematic-lines-of-code-scaled.webp 986w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:693\/h:1080\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Getting-ChatGPT-to-refocus-and-isolate-the-problematic-lines-of-code-scaled.webp 1315w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:693\/h:1080\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Getting-ChatGPT-to-refocus-and-isolate-the-problematic-lines-of-code-scaled.webp 1156w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:32\/h:50\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Getting-ChatGPT-to-refocus-and-isolate-the-problematic-lines-of-code-scaled.webp 32w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:154\/h:240\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Getting-ChatGPT-to-refocus-and-isolate-the-problematic-lines-of-code-scaled.webp 154w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:255\/h:397\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Getting-ChatGPT-to-refocus-and-isolate-the-problematic-lines-of-code-scaled.webp 255w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:385\/h:600\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Getting-ChatGPT-to-refocus-and-isolate-the-problematic-lines-of-code-scaled.webp 385w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:95\/h:148\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Getting-ChatGPT-to-refocus-and-isolate-the-problematic-lines-of-code-scaled.webp 95w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:125\/h:195\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Getting-ChatGPT-to-refocus-and-isolate-the-problematic-lines-of-code-scaled.webp 125w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:87\/h:135\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Getting-ChatGPT-to-refocus-and-isolate-the-problematic-lines-of-code-scaled.webp 87w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:693\/h:1080\/q:mauto\/f:best\/dpr:2\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Getting-ChatGPT-to-refocus-and-isolate-the-problematic-lines-of-code-scaled.webp 2x\"><noscript><img data-opt-id=921832026  decoding=\"async\" width=\"1644\" height=\"2560\" src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Getting-ChatGPT-to-refocus-and-isolate-the-problematic-lines-of-code-scaled.webp\" alt=\"\" class=\"wp-image-106494\" srcset=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:693\/h:1080\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Getting-ChatGPT-to-refocus-and-isolate-the-problematic-lines-of-code-scaled.webp 1644w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:193\/h:300\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Getting-ChatGPT-to-refocus-and-isolate-the-problematic-lines-of-code-scaled.webp 193w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:657\/h:1024\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Getting-ChatGPT-to-refocus-and-isolate-the-problematic-lines-of-code-scaled.webp 657w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:693\/h:1080\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Getting-ChatGPT-to-refocus-and-isolate-the-problematic-lines-of-code-scaled.webp 768w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:693\/h:1080\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Getting-ChatGPT-to-refocus-and-isolate-the-problematic-lines-of-code-scaled.webp 986w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:693\/h:1080\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Getting-ChatGPT-to-refocus-and-isolate-the-problematic-lines-of-code-scaled.webp 1315w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:693\/h:1080\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Getting-ChatGPT-to-refocus-and-isolate-the-problematic-lines-of-code-scaled.webp 1156w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:32\/h:50\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Getting-ChatGPT-to-refocus-and-isolate-the-problematic-lines-of-code-scaled.webp 32w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:154\/h:240\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Getting-ChatGPT-to-refocus-and-isolate-the-problematic-lines-of-code-scaled.webp 154w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:255\/h:397\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Getting-ChatGPT-to-refocus-and-isolate-the-problematic-lines-of-code-scaled.webp 255w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:385\/h:600\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Getting-ChatGPT-to-refocus-and-isolate-the-problematic-lines-of-code-scaled.webp 385w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:95\/h:148\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Getting-ChatGPT-to-refocus-and-isolate-the-problematic-lines-of-code-scaled.webp 95w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:125\/h:195\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Getting-ChatGPT-to-refocus-and-isolate-the-problematic-lines-of-code-scaled.webp 125w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:87\/h:135\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Getting-ChatGPT-to-refocus-and-isolate-the-problematic-lines-of-code-scaled.webp 87w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:693\/h:1080\/q:mauto\/f:best\/dpr:2\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Getting-ChatGPT-to-refocus-and-isolate-the-problematic-lines-of-code-scaled.webp 2x\" sizes=\"(max-width: 700px) 100vw, 700px\"></noscript><\/figure>\n\n\n<\/div><div class=\"su-expand-link su-expand-link-more\" style=\"text-align:center\"><a href=\"javascript:;\" style=\"color:#000;border-color:#000\"><span style=\"border-color:#000\">&#8597;&#65039; Click to expand image<\/span><\/a><\/div><div class=\"su-expand-link su-expand-link-less\" style=\"text-align:center\"><a href=\"javascript:;\" style=\"color:#000;border-color:#000\"><span style=\"border-color:#000\">&#8597;&#65039; Click to collapse image<\/span><\/a><\/div><\/div>\n<\/div><\/div>\n\n\n\n<p>On top of that, within a few interactions it will quickly default back to its standard behavior of trying to drown you in massive amounts of code that have nothing to do with the section of code you are trying to debug.<\/p>\n\n\n\n<p>When this happens, simply hit the stop button on GPT&rsquo;s output and remind it to follow your instructions. It also helps to copy and paste them into the chat window when you are giving the reminder.<\/p>\n\n\n\n<p>And speaking of generating long lines of code&hellip;<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-avoid-having-chatgpt-regenerate-entire-files-for-you\">Avoid having ChatGPT regenerate entire files for you<\/h4>\n\n\n\n<p>When you&rsquo;re not used to working with code and feel intimidated by it, asking ChatGPT to regenerate the entire file for you after each code tweak might seem attractive at first.<\/p>\n\n\n\n<p>All you have to do is &ldquo;copy and paste,&rdquo; right?<\/p>\n\n\n\n<p><strong>While it might seem tempting, it&rsquo;s actually a bad idea<\/strong>. In the long run it&rsquo;ll cause you more trouble. Not only will you waste a lot of time doing this &ndash; especially if you&rsquo;re debugging your PHP file, which can grow to be quite long, but ChatGPT might introduce new mistakes into your existing code in the process. It&rsquo;ll fix the problem you&rsquo;re working on, but then it&rsquo;ll accidentally tweak some other part of the file and break something.<\/p>\n\n\n\n<p>It&rsquo;s better to isolate the specific parts of the code that are causing the problem and only work on those.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-take-it-one-bug-at-a-time\">Take it one bug at a time<\/h4>\n\n\n\n<p>Along the lines of the above, even if you have multiple bugs &ndash; unless they are very minor &ndash; only tell ChatGPT about one of them at a time. Fix each bug before moving on to the next one.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-pay-close-attention-to-the-very-top-and-very-bottom-lines-of-code-snippets\">Pay close attention to the very top and very bottom lines of code snippets<\/h4>\n\n\n\n<p>When ChatGPT gives you code snippets, it will sometimes &ndash; but not always &ndash; encapsulate them by showing you the very top line of the overall file that you are working with, and also the very bottom line. Therefore, you need to be careful not to always simply copy and paste the entire snippet because this will make your code break.<\/p>\n\n\n\n<p>&#9888;&#65039;  Pay close attention to the top line:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full blog-img-std\"><img data-opt-id=1644001489  data-opt-src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Top-of-a-code-snippet.webp\"  decoding=\"async\" width=\"1506\" height=\"722\" src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:eco\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Top-of-a-code-snippet.webp\" alt=\"Ignoring the top line of a code snippet.\" class=\"wp-image-106412\" old-srcset=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1506\/h:722\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Top-of-a-code-snippet.webp 1506w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:300\/h:144\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Top-of-a-code-snippet.webp 300w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1024\/h:491\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Top-of-a-code-snippet.webp 1024w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:768\/h:368\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Top-of-a-code-snippet.webp 768w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:50\/h:24\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Top-of-a-code-snippet.webp 50w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:480\/h:230\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Top-of-a-code-snippet.webp 480w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:794\/h:381\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Top-of-a-code-snippet.webp 794w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1200\/h:575\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Top-of-a-code-snippet.webp 1200w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:296\/h:142\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Top-of-a-code-snippet.webp 296w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:390\/h:187\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Top-of-a-code-snippet.webp 390w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:270\/h:129\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Top-of-a-code-snippet.webp 270w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1506\/h:722\/q:mauto\/f:best\/dpr:2\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Top-of-a-code-snippet.webp 2x\"><noscript><img data-opt-id=1644001489  decoding=\"async\" width=\"1506\" height=\"722\" src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Top-of-a-code-snippet.webp\" alt=\"Ignoring the top line of a code snippet.\" class=\"wp-image-106412\" srcset=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1506\/h:722\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Top-of-a-code-snippet.webp 1506w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:300\/h:144\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Top-of-a-code-snippet.webp 300w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1024\/h:491\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Top-of-a-code-snippet.webp 1024w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:768\/h:368\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Top-of-a-code-snippet.webp 768w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:50\/h:24\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Top-of-a-code-snippet.webp 50w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:480\/h:230\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Top-of-a-code-snippet.webp 480w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:794\/h:381\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Top-of-a-code-snippet.webp 794w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1200\/h:575\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Top-of-a-code-snippet.webp 1200w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:296\/h:142\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Top-of-a-code-snippet.webp 296w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:390\/h:187\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Top-of-a-code-snippet.webp 390w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:270\/h:129\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Top-of-a-code-snippet.webp 270w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1506\/h:722\/q:mauto\/f:best\/dpr:2\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Top-of-a-code-snippet.webp 2x\" sizes=\"(max-width: 700px) 100vw, 700px\"></noscript><\/figure>\n\n\n\n<p>If it&rsquo;s not relevant to the specific code snippet you are trying to debug, then ignore it.<\/p>\n\n\n\n<p>The same goes for the bottom line, though this can be trickier to spot. It can sometimes be as simple as something like <code>});<\/code> which causes your code to break because it closes off a parent snippet that&rsquo;s not meant to be closed off yet.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full blog-img-std\"><img data-opt-id=1874516129  data-opt-src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/The-bottom-of-a-code-snippet.webp\"  decoding=\"async\" width=\"1510\" height=\"706\" src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:eco\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/The-bottom-of-a-code-snippet.webp\" alt=\"Ignoring the bottom line of a code snippet.\" class=\"wp-image-106413\" old-srcset=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1510\/h:706\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/The-bottom-of-a-code-snippet.webp 1510w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:300\/h:140\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/The-bottom-of-a-code-snippet.webp 300w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1024\/h:479\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/The-bottom-of-a-code-snippet.webp 1024w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:768\/h:359\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/The-bottom-of-a-code-snippet.webp 768w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:50\/h:23\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/The-bottom-of-a-code-snippet.webp 50w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:480\/h:224\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/The-bottom-of-a-code-snippet.webp 480w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:794\/h:371\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/The-bottom-of-a-code-snippet.webp 794w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1200\/h:561\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/The-bottom-of-a-code-snippet.webp 1200w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:296\/h:138\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/The-bottom-of-a-code-snippet.webp 296w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:390\/h:182\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/The-bottom-of-a-code-snippet.webp 390w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:270\/h:126\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/The-bottom-of-a-code-snippet.webp 270w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1510\/h:706\/q:mauto\/f:best\/dpr:2\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/The-bottom-of-a-code-snippet.webp 2x\"><noscript><img data-opt-id=1874516129  decoding=\"async\" width=\"1510\" height=\"706\" src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/The-bottom-of-a-code-snippet.webp\" alt=\"Ignoring the bottom line of a code snippet.\" class=\"wp-image-106413\" srcset=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1510\/h:706\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/The-bottom-of-a-code-snippet.webp 1510w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:300\/h:140\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/The-bottom-of-a-code-snippet.webp 300w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1024\/h:479\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/The-bottom-of-a-code-snippet.webp 1024w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:768\/h:359\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/The-bottom-of-a-code-snippet.webp 768w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:50\/h:23\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/The-bottom-of-a-code-snippet.webp 50w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:480\/h:224\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/The-bottom-of-a-code-snippet.webp 480w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:794\/h:371\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/The-bottom-of-a-code-snippet.webp 794w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1200\/h:561\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/The-bottom-of-a-code-snippet.webp 1200w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:296\/h:138\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/The-bottom-of-a-code-snippet.webp 296w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:390\/h:182\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/The-bottom-of-a-code-snippet.webp 390w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:270\/h:126\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/The-bottom-of-a-code-snippet.webp 270w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1510\/h:706\/q:mauto\/f:best\/dpr:2\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/The-bottom-of-a-code-snippet.webp 2x\" sizes=\"(max-width: 700px) 100vw, 700px\"></noscript><\/figure>\n\n\n\n<p>After a while you&rsquo;ll get better at figuring it out, but when you&rsquo;re starting your plugin development journey, if you notice a lot of things break after you add a snippet, try deleting that very last line to see if it &ldquo;magically&rdquo; fixes everything.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-the-console-is-your-best-friend\">The console is your best friend<\/h4>\n\n\n\n<p>If ChatGPT tries to debug the same problem with no success and you find yourself going in circles, ask it to add console.log lines to the sections of code it believes are causing the issue. Then open up the console as you recreate the bug. It will explain what happened. You can then screenshot this explanation and give it to ChatGPT so it can figure out how to fix it.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full blog-img-std\"><img data-opt-id=656331588  data-opt-src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Using-console-to-debug.webp\"  decoding=\"async\" width=\"1302\" height=\"560\" src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:eco\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Using-console-to-debug.webp\" alt=\"Using console to debug.\" class=\"wp-image-106409\" old-srcset=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1302\/h:560\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Using-console-to-debug.webp 1302w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:300\/h:129\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Using-console-to-debug.webp 300w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1024\/h:440\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Using-console-to-debug.webp 1024w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:768\/h:330\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Using-console-to-debug.webp 768w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:50\/h:22\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Using-console-to-debug.webp 50w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:480\/h:206\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Using-console-to-debug.webp 480w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:794\/h:342\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Using-console-to-debug.webp 794w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1200\/h:516\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Using-console-to-debug.webp 1200w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:296\/h:127\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Using-console-to-debug.webp 296w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:390\/h:168\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Using-console-to-debug.webp 390w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:270\/h:116\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Using-console-to-debug.webp 270w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1302\/h:560\/q:mauto\/f:best\/dpr:2\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Using-console-to-debug.webp 2x\"><noscript><img data-opt-id=656331588  decoding=\"async\" width=\"1302\" height=\"560\" src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Using-console-to-debug.webp\" alt=\"Using console to debug.\" class=\"wp-image-106409\" srcset=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1302\/h:560\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Using-console-to-debug.webp 1302w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:300\/h:129\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Using-console-to-debug.webp 300w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1024\/h:440\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Using-console-to-debug.webp 1024w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:768\/h:330\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Using-console-to-debug.webp 768w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:50\/h:22\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Using-console-to-debug.webp 50w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:480\/h:206\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Using-console-to-debug.webp 480w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:794\/h:342\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Using-console-to-debug.webp 794w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1200\/h:516\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Using-console-to-debug.webp 1200w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:296\/h:127\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Using-console-to-debug.webp 296w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:390\/h:168\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Using-console-to-debug.webp 390w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:270\/h:116\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Using-console-to-debug.webp 270w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1302\/h:560\/q:mauto\/f:best\/dpr:2\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Using-console-to-debug.webp 2x\" sizes=\"(max-width: 700px) 100vw, 700px\"></noscript><\/figure>\n\n\n\n<p>To access console in Google Chrome, right click on the page and select <strong>Inspect<\/strong>:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full blog-img-std\"><img data-opt-id=927216675  data-opt-src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-console-in-Google-Chrome.webp\"  decoding=\"async\" width=\"1820\" height=\"1054\" src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:eco\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-console-in-Google-Chrome.webp\" alt=\"Accessing console in Google Chrome.\" class=\"wp-image-106495\" old-srcset=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1820\/h:1054\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-console-in-Google-Chrome.webp 1820w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:300\/h:174\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-console-in-Google-Chrome.webp 300w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1024\/h:593\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-console-in-Google-Chrome.webp 1024w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:768\/h:445\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-console-in-Google-Chrome.webp 768w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1536\/h:890\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-console-in-Google-Chrome.webp 1536w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1800\/h:1042\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-console-in-Google-Chrome.webp 1800w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:50\/h:29\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-console-in-Google-Chrome.webp 50w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:414\/h:240\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-console-in-Google-Chrome.webp 414w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:686\/h:397\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-console-in-Google-Chrome.webp 686w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1036\/h:600\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-console-in-Google-Chrome.webp 1036w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:256\/h:148\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-console-in-Google-Chrome.webp 256w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:337\/h:195\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-console-in-Google-Chrome.webp 337w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:233\/h:135\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-console-in-Google-Chrome.webp 233w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1820\/h:1054\/q:mauto\/f:best\/dpr:2\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-console-in-Google-Chrome.webp 2x\"><noscript><img data-opt-id=927216675  decoding=\"async\" width=\"1820\" height=\"1054\" src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-console-in-Google-Chrome.webp\" alt=\"Accessing console in Google Chrome.\" class=\"wp-image-106495\" srcset=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1820\/h:1054\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-console-in-Google-Chrome.webp 1820w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:300\/h:174\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-console-in-Google-Chrome.webp 300w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1024\/h:593\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-console-in-Google-Chrome.webp 1024w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:768\/h:445\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-console-in-Google-Chrome.webp 768w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1536\/h:890\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-console-in-Google-Chrome.webp 1536w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1800\/h:1042\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-console-in-Google-Chrome.webp 1800w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:50\/h:29\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-console-in-Google-Chrome.webp 50w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:414\/h:240\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-console-in-Google-Chrome.webp 414w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:686\/h:397\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-console-in-Google-Chrome.webp 686w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1036\/h:600\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-console-in-Google-Chrome.webp 1036w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:256\/h:148\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-console-in-Google-Chrome.webp 256w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:337\/h:195\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-console-in-Google-Chrome.webp 337w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:233\/h:135\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-console-in-Google-Chrome.webp 233w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1820\/h:1054\/q:mauto\/f:best\/dpr:2\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-console-in-Google-Chrome.webp 2x\" sizes=\"(max-width: 700px) 100vw, 700px\"></noscript><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-when-the-console-doesn-t-give-you-answers-check-your-database\">When the console doesn&rsquo;t give you answers, check your database<\/h4>\n\n\n\n<p>The console is excellent and will often give you the answers you need. However, on some occasions, it will only confirm what you are experiencing, but without really giving you any sort of direction on how to fix it.<\/p>\n\n\n\n<p>For example, when I was trying to add a typing effect to my plugin, the default preview speed of the effect in the wp-admin was set to 23 milliseconds. I spent an insane amount of time revising my PHP and JavaScript files to try to fix the issue, but to no avail.<\/p>\n\n\n\n<p>Console confirmed that it was loading at 23, but beyond that, it didn&rsquo;t give me any other valuable information:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full blog-img-std\"><img data-opt-id=1478476360  data-opt-src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Checking-console-for-errors-scaled.webp\"  decoding=\"async\" width=\"2560\" height=\"1169\" src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:eco\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Checking-console-for-errors-scaled.webp\" alt=\"Console confirming error but with no solution.\" class=\"wp-image-106665\" old-srcset=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1920\/h:876\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Checking-console-for-errors-scaled.webp 2560w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:300\/h:137\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Checking-console-for-errors-scaled.webp 300w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1024\/h:468\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Checking-console-for-errors-scaled.webp 1024w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:768\/h:351\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Checking-console-for-errors-scaled.webp 768w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1536\/h:701\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Checking-console-for-errors-scaled.webp 1536w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1920\/h:876\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Checking-console-for-errors-scaled.webp 2048w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1800\/h:822\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Checking-console-for-errors-scaled.webp 1800w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:50\/h:23\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Checking-console-for-errors-scaled.webp 50w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:480\/h:219\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Checking-console-for-errors-scaled.webp 480w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:794\/h:363\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Checking-console-for-errors-scaled.webp 794w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1200\/h:548\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Checking-console-for-errors-scaled.webp 1200w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:296\/h:135\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Checking-console-for-errors-scaled.webp 296w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:390\/h:178\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Checking-console-for-errors-scaled.webp 390w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:270\/h:123\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Checking-console-for-errors-scaled.webp 270w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1920\/h:876\/q:mauto\/f:best\/dpr:2\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Checking-console-for-errors-scaled.webp 2x\"><noscript><img data-opt-id=1478476360  decoding=\"async\" width=\"2560\" height=\"1169\" src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Checking-console-for-errors-scaled.webp\" alt=\"Console confirming error but with no solution.\" class=\"wp-image-106665\" srcset=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1920\/h:876\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Checking-console-for-errors-scaled.webp 2560w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:300\/h:137\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Checking-console-for-errors-scaled.webp 300w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1024\/h:468\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Checking-console-for-errors-scaled.webp 1024w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:768\/h:351\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Checking-console-for-errors-scaled.webp 768w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1536\/h:701\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Checking-console-for-errors-scaled.webp 1536w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1920\/h:876\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Checking-console-for-errors-scaled.webp 2048w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1800\/h:822\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Checking-console-for-errors-scaled.webp 1800w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:50\/h:23\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Checking-console-for-errors-scaled.webp 50w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:480\/h:219\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Checking-console-for-errors-scaled.webp 480w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:794\/h:363\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Checking-console-for-errors-scaled.webp 794w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1200\/h:548\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Checking-console-for-errors-scaled.webp 1200w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:296\/h:135\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Checking-console-for-errors-scaled.webp 296w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:390\/h:178\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Checking-console-for-errors-scaled.webp 390w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:270\/h:123\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Checking-console-for-errors-scaled.webp 270w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1920\/h:876\/q:mauto\/f:best\/dpr:2\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Checking-console-for-errors-scaled.webp 2x\" sizes=\"(max-width: 700px) 100vw, 700px\"></noscript><\/figure>\n\n\n\n<p>Eventually, I checked the database, and realized the faulty value was coming from there:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full blog-img-std\"><img data-opt-id=621860222  data-opt-src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Sometimes-you-have-to-check-your-database.webp\"  decoding=\"async\" width=\"1236\" height=\"916\" src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:eco\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Sometimes-you-have-to-check-your-database.webp\" alt=\"Checking the database for errors.\" class=\"wp-image-106666\" old-srcset=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1236\/h:916\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Sometimes-you-have-to-check-your-database.webp 1236w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:300\/h:222\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Sometimes-you-have-to-check-your-database.webp 300w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1024\/h:759\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Sometimes-you-have-to-check-your-database.webp 1024w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:768\/h:569\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Sometimes-you-have-to-check-your-database.webp 768w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:50\/h:37\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Sometimes-you-have-to-check-your-database.webp 50w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:324\/h:240\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Sometimes-you-have-to-check-your-database.webp 324w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:536\/h:397\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Sometimes-you-have-to-check-your-database.webp 536w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:810\/h:600\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Sometimes-you-have-to-check-your-database.webp 810w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:200\/h:148\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Sometimes-you-have-to-check-your-database.webp 200w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:263\/h:195\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Sometimes-you-have-to-check-your-database.webp 263w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:182\/h:135\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Sometimes-you-have-to-check-your-database.webp 182w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1236\/h:916\/q:mauto\/f:best\/dpr:2\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Sometimes-you-have-to-check-your-database.webp 2x\"><noscript><img data-opt-id=621860222  decoding=\"async\" width=\"1236\" height=\"916\" src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Sometimes-you-have-to-check-your-database.webp\" alt=\"Checking the database for errors.\" class=\"wp-image-106666\" srcset=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1236\/h:916\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Sometimes-you-have-to-check-your-database.webp 1236w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:300\/h:222\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Sometimes-you-have-to-check-your-database.webp 300w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1024\/h:759\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Sometimes-you-have-to-check-your-database.webp 1024w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:768\/h:569\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Sometimes-you-have-to-check-your-database.webp 768w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:50\/h:37\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Sometimes-you-have-to-check-your-database.webp 50w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:324\/h:240\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Sometimes-you-have-to-check-your-database.webp 324w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:536\/h:397\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Sometimes-you-have-to-check-your-database.webp 536w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:810\/h:600\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Sometimes-you-have-to-check-your-database.webp 810w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:200\/h:148\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Sometimes-you-have-to-check-your-database.webp 200w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:263\/h:195\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Sometimes-you-have-to-check-your-database.webp 263w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:182\/h:135\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Sometimes-you-have-to-check-your-database.webp 182w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1236\/h:916\/q:mauto\/f:best\/dpr:2\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Sometimes-you-have-to-check-your-database.webp 2x\" sizes=\"(max-width: 700px) 100vw, 700px\"></noscript><\/figure>\n\n\n\n<p>I switched that 23 to 60, which is what I wanted, and it solved the problem.<\/p>\n\n\n\n<p>If you end up using Local by Flywheel, you can access your database easily through the interface by clicking on the Database tab:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full blog-img-std\"><img data-opt-id=358156899  data-opt-src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-database-from-Local-by-Flywheel.webp\"  decoding=\"async\" width=\"2436\" height=\"1608\" src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:eco\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-database-from-Local-by-Flywheel.webp\" alt=\"Accessing the database via Local by Flywheel.\" class=\"wp-image-106667\" old-srcset=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1636\/h:1080\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-database-from-Local-by-Flywheel.webp 2436w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:300\/h:198\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-database-from-Local-by-Flywheel.webp 300w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1024\/h:676\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-database-from-Local-by-Flywheel.webp 1024w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:768\/h:507\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-database-from-Local-by-Flywheel.webp 768w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1536\/h:1014\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-database-from-Local-by-Flywheel.webp 1536w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1635\/h:1080\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-database-from-Local-by-Flywheel.webp 2048w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1636\/h:1080\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-database-from-Local-by-Flywheel.webp 1800w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:50\/h:33\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-database-from-Local-by-Flywheel.webp 50w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:364\/h:240\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-database-from-Local-by-Flywheel.webp 364w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:601\/h:397\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-database-from-Local-by-Flywheel.webp 601w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:909\/h:600\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-database-from-Local-by-Flywheel.webp 909w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:224\/h:148\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-database-from-Local-by-Flywheel.webp 224w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:295\/h:195\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-database-from-Local-by-Flywheel.webp 295w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:205\/h:135\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-database-from-Local-by-Flywheel.webp 205w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1636\/h:1080\/q:mauto\/f:best\/dpr:2\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-database-from-Local-by-Flywheel.webp 2x\"><noscript><img data-opt-id=358156899  decoding=\"async\" width=\"2436\" height=\"1608\" src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-database-from-Local-by-Flywheel.webp\" alt=\"Accessing the database via Local by Flywheel.\" class=\"wp-image-106667\" srcset=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1636\/h:1080\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-database-from-Local-by-Flywheel.webp 2436w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:300\/h:198\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-database-from-Local-by-Flywheel.webp 300w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1024\/h:676\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-database-from-Local-by-Flywheel.webp 1024w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:768\/h:507\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-database-from-Local-by-Flywheel.webp 768w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1536\/h:1014\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-database-from-Local-by-Flywheel.webp 1536w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1635\/h:1080\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-database-from-Local-by-Flywheel.webp 2048w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1636\/h:1080\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-database-from-Local-by-Flywheel.webp 1800w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:50\/h:33\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-database-from-Local-by-Flywheel.webp 50w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:364\/h:240\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-database-from-Local-by-Flywheel.webp 364w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:601\/h:397\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-database-from-Local-by-Flywheel.webp 601w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:909\/h:600\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-database-from-Local-by-Flywheel.webp 909w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:224\/h:148\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-database-from-Local-by-Flywheel.webp 224w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:295\/h:195\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-database-from-Local-by-Flywheel.webp 295w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:205\/h:135\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-database-from-Local-by-Flywheel.webp 205w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1636\/h:1080\/q:mauto\/f:best\/dpr:2\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-database-from-Local-by-Flywheel.webp 2x\" sizes=\"(max-width: 700px) 100vw, 700px\"></noscript><\/figure>\n\n\n\n<p>Once you gain access, a good place to start looking is the same place you saw me looking in the screenshot above: wp_options. Most of the time your plugins settings will be found there.<\/p>\n\n\n\n<p>&#9888;&#65039; However, it&rsquo;s also important to point out that <strong>the bigger underlying issue here<\/strong> was that my code was actually missing activation instructions. When your plugin is first activated, it should check if certain settings exist in the database. If they don&rsquo;t, your plugin should add them with your intended default values. This ensures that every new installation of your plugin starts with the correct settings. I learned this the hard way so that you don&rsquo;t have to.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-a-fresh-thread-can-give-you-breakthroughs\">A fresh thread can give you breakthroughs<\/h4>\n\n\n\n<p>As your code grows and your thread with ChatGPT gets longer and longer, it will be prone to make mistakes or forget things. At a certain point, it&rsquo;s a good idea to start a new thread. Upload your main plugin files to the new thread and explain to ChatGPT what you are doing and where you left off.<\/p>\n\n\n\n<p>Here&rsquo;s an example prompt you can use:<\/p>\n\n\n<div class=\"su-note\" style=\"border-color:#e5e1b2;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\"><div class=\"su-note-inner su-u-clearfix su-u-trim\" style=\"background-color:#FFFBCC;border-color:#ffffff;color:#333333;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\">\n\n\n\n<p>I was working on debugging a WordPress plugin with you in another thread but I think the thread got too long and you were starting to get confused. Let&rsquo;s start fresh.<\/p>\n\n\n\n<p>Take a look at the plugin files here and let&rsquo;s try to troubleshoot <strong>[describe your bug]<\/strong>.<\/p>\n\n\n\n<p>Also, and this is VERY IMPORTANT, when generating new versions of code snippets in an attempt to troubleshoot, please don&rsquo;t just generate the snippet, but also provide an explanation on which lines you changed from what is already present. Also, explain the rationale behind changing those lines, and what we can expect to see with the changes you&rsquo;ve made.<\/p>\n\n\n\n<p><strong>[If generating CSS, don&rsquo;t forget to remind ChatGPT to follow BEM (Block Element Modifier) methodology.]<\/strong><\/p>\n\n\n<\/div><\/div>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-don-t-be-afraid-to-use-your-brain\">Don&rsquo;t be afraid to use your brain<\/h4>\n\n\n\n<p>The more complex your plugin, the greater the potential for GPT to mess up your code. While it does help you debug, at times you&rsquo;ll find it&rsquo;s better to figure out the solution on your own. To be honest, this happened to me quite a lot, especially in the later stages of my build where my main PHP file had grown to over 500 lines (with later versions exceeding 1,000).<\/p>\n\n\n\n<p>Depending on your familiarity and comfort with reading code, this could be a deterrent, but if you are decent at pattern recognition and spotting inconsistencies then you can get by.<\/p>\n\n\n\n<p>I&rsquo;m certainly not a skilled programmer, though I do have an understanding of what various programming languages do and some familiarity with code, which helped me.<\/p>\n\n\n\n<p>Still, even if you&rsquo;re a total noob, you can look at the lines of code that GPT thinks might be causing the problem. Then find an identical element in your code that is working properly. Compare its code to the code of the broken element and try to see what&rsquo;s different about it. Often times this will solve the problem:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full blog-img-std\"><img data-opt-id=810037450  data-opt-src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Debugging-code-with-ChatGPT.webp\"  decoding=\"async\" width=\"1750\" height=\"1228\" src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:eco\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Debugging-code-with-ChatGPT.webp\" alt=\"\" class=\"wp-image-106387\" old-srcset=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1539\/h:1080\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Debugging-code-with-ChatGPT.webp 1750w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:300\/h:211\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Debugging-code-with-ChatGPT.webp 300w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1024\/h:719\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Debugging-code-with-ChatGPT.webp 1024w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:768\/h:539\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Debugging-code-with-ChatGPT.webp 768w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1536\/h:1078\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Debugging-code-with-ChatGPT.webp 1536w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:50\/h:35\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Debugging-code-with-ChatGPT.webp 50w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:342\/h:240\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Debugging-code-with-ChatGPT.webp 342w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:566\/h:397\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Debugging-code-with-ChatGPT.webp 566w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:855\/h:600\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Debugging-code-with-ChatGPT.webp 855w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:211\/h:148\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Debugging-code-with-ChatGPT.webp 211w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:278\/h:195\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Debugging-code-with-ChatGPT.webp 278w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:192\/h:135\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Debugging-code-with-ChatGPT.webp 192w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1539\/h:1080\/q:mauto\/f:best\/dpr:2\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Debugging-code-with-ChatGPT.webp 2x\"><noscript><img data-opt-id=810037450  decoding=\"async\" width=\"1750\" height=\"1228\" src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Debugging-code-with-ChatGPT.webp\" alt=\"\" class=\"wp-image-106387\" srcset=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1539\/h:1080\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Debugging-code-with-ChatGPT.webp 1750w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:300\/h:211\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Debugging-code-with-ChatGPT.webp 300w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1024\/h:719\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Debugging-code-with-ChatGPT.webp 1024w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:768\/h:539\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Debugging-code-with-ChatGPT.webp 768w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1536\/h:1078\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Debugging-code-with-ChatGPT.webp 1536w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:50\/h:35\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Debugging-code-with-ChatGPT.webp 50w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:342\/h:240\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Debugging-code-with-ChatGPT.webp 342w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:566\/h:397\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Debugging-code-with-ChatGPT.webp 566w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:855\/h:600\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Debugging-code-with-ChatGPT.webp 855w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:211\/h:148\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Debugging-code-with-ChatGPT.webp 211w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:278\/h:195\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Debugging-code-with-ChatGPT.webp 278w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:192\/h:135\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Debugging-code-with-ChatGPT.webp 192w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1539\/h:1080\/q:mauto\/f:best\/dpr:2\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Debugging-code-with-ChatGPT.webp 2x\" sizes=\"(max-width: 700px) 100vw, 700px\"></noscript><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-keep-backups-of-your-plugin-files-optional-if-using-git\">Keep backups of your plugin files (optional if using Git)<\/h4>\n\n\n\n<p>While using Git provides a powerful way to manage and revert changes to your code, it&rsquo;s never a bad idea to keep manual backups as well. Whenever you hit a milestone with your code, I suggest saving a copy of your main code files in another folder:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full blog-img-std\"><img data-opt-id=1060250279  data-opt-src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Make-copies-of-your-main-plugin-files-scaled.webp\"  decoding=\"async\" width=\"2560\" height=\"561\" src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:eco\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Make-copies-of-your-main-plugin-files-scaled.webp\" alt=\"Making copies of plugin files.\" class=\"wp-image-106411\" old-srcset=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1920\/h:420\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Make-copies-of-your-main-plugin-files-scaled.webp 2560w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:300\/h:66\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Make-copies-of-your-main-plugin-files-scaled.webp 300w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1024\/h:225\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Make-copies-of-your-main-plugin-files-scaled.webp 1024w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:768\/h:168\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Make-copies-of-your-main-plugin-files-scaled.webp 768w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1536\/h:337\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Make-copies-of-your-main-plugin-files-scaled.webp 1536w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1920\/h:420\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Make-copies-of-your-main-plugin-files-scaled.webp 2048w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1800\/h:395\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Make-copies-of-your-main-plugin-files-scaled.webp 1800w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:50\/h:11\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Make-copies-of-your-main-plugin-files-scaled.webp 50w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:480\/h:105\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Make-copies-of-your-main-plugin-files-scaled.webp 480w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:794\/h:174\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Make-copies-of-your-main-plugin-files-scaled.webp 794w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1200\/h:263\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Make-copies-of-your-main-plugin-files-scaled.webp 1200w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:296\/h:65\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Make-copies-of-your-main-plugin-files-scaled.webp 296w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:390\/h:86\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Make-copies-of-your-main-plugin-files-scaled.webp 390w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:270\/h:59\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Make-copies-of-your-main-plugin-files-scaled.webp 270w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1920\/h:420\/q:mauto\/f:best\/dpr:2\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Make-copies-of-your-main-plugin-files-scaled.webp 2x\"><noscript><img data-opt-id=1060250279  decoding=\"async\" width=\"2560\" height=\"561\" src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Make-copies-of-your-main-plugin-files-scaled.webp\" alt=\"Making copies of plugin files.\" class=\"wp-image-106411\" srcset=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1920\/h:420\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Make-copies-of-your-main-plugin-files-scaled.webp 2560w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:300\/h:66\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Make-copies-of-your-main-plugin-files-scaled.webp 300w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1024\/h:225\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Make-copies-of-your-main-plugin-files-scaled.webp 1024w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:768\/h:168\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Make-copies-of-your-main-plugin-files-scaled.webp 768w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1536\/h:337\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Make-copies-of-your-main-plugin-files-scaled.webp 1536w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1920\/h:420\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Make-copies-of-your-main-plugin-files-scaled.webp 2048w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1800\/h:395\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Make-copies-of-your-main-plugin-files-scaled.webp 1800w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:50\/h:11\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Make-copies-of-your-main-plugin-files-scaled.webp 50w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:480\/h:105\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Make-copies-of-your-main-plugin-files-scaled.webp 480w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:794\/h:174\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Make-copies-of-your-main-plugin-files-scaled.webp 794w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1200\/h:263\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Make-copies-of-your-main-plugin-files-scaled.webp 1200w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:296\/h:65\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Make-copies-of-your-main-plugin-files-scaled.webp 296w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:390\/h:86\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Make-copies-of-your-main-plugin-files-scaled.webp 390w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:270\/h:59\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Make-copies-of-your-main-plugin-files-scaled.webp 270w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1920\/h:420\/q:mauto\/f:best\/dpr:2\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/07\/Make-copies-of-your-main-plugin-files-scaled.webp 2x\" sizes=\"(max-width: 700px) 100vw, 700px\"></noscript><\/figure>\n\n\n\n<p>This can serve as an additional safety net, allowing you to easily revert to a previous better version if you encounter serious bugs while continuing to build.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"h-don-t-give-up-easily-but-know-your-limits\">Don&rsquo;t give up easily, but know your limits<\/h4>\n\n\n\n<p>There might be some functions or tweaks that you simply won&rsquo;t be able to implement no matter how hard you try. <strong>Be prepared to adjust your expectations and work around them<\/strong>. This doesn&rsquo;t mean give up if you hit a wall. However, it does mean that if you&rsquo;ve made 100 attempts and spent hours (or days) trying to achieve something with no success, then it&rsquo;s probably either not possible or outside the capability of both you and ChatGPT.<\/p>\n\n\n<\/div><\/div>\n\n\n\n<p>Lastly, if you&rsquo;re wondering whether you should debug or lint first, to my understanding, there&rsquo;s no clear cut answer. I debugged before I linted, but you can either default to ChatGPT&rsquo;s preference as you go through the process, or tell it which one you want to do first.<\/p>\n\n\n<div class=\"su-divider su-divider-style-dotted\" style=\"margin:40px 0;border-width:1px;border-color:#999999\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading joli-heading jtoc-heading\" id=\"h-phase-six-optional-testing\">Phase six (optional): testing &#128300;<\/h2>\n\n\n\n<p>If you&rsquo;re building a relatively simple plugin and you&rsquo;re confident in its functionality based on your own manual testing then you don&rsquo;t necessarily need to take this step. I say that because it still requires a lot of work to code these tests, and in the same way that you won&rsquo;t get a working plugin out the gate with ChatGPT, you are also unlikely to get a functional test with no bugs present.<\/p>\n\n\n\n<p>Simply speaking, <strong>there&rsquo;s a trade-off here between time investment and practical value<\/strong>.<\/p>\n\n\n\n<p>In my own experience, I was able to successfully build one test that checked whether or not my plugins were able to perform their main functions when a user interacts with them &ndash; but it took me an entire day of debugging!<\/p>\n\n\n\n<figure class=\"wp-block-image size-full blog-img-std\"><img data-opt-id=647912398  data-opt-src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Conversation-with-ChatGPT-about-testing-WordPress-plugin.webp\"  decoding=\"async\" width=\"1706\" height=\"964\" src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:eco\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Conversation-with-ChatGPT-about-testing-WordPress-plugin.webp\" alt=\"Conversation with ChatGPT about testing WordPress plugin.\" class=\"wp-image-106504\" old-srcset=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1706\/h:964\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Conversation-with-ChatGPT-about-testing-WordPress-plugin.webp 1706w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:300\/h:170\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Conversation-with-ChatGPT-about-testing-WordPress-plugin.webp 300w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1024\/h:579\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Conversation-with-ChatGPT-about-testing-WordPress-plugin.webp 1024w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:768\/h:434\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Conversation-with-ChatGPT-about-testing-WordPress-plugin.webp 768w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1536\/h:868\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Conversation-with-ChatGPT-about-testing-WordPress-plugin.webp 1536w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:50\/h:28\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Conversation-with-ChatGPT-about-testing-WordPress-plugin.webp 50w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:425\/h:240\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Conversation-with-ChatGPT-about-testing-WordPress-plugin.webp 425w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:703\/h:397\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Conversation-with-ChatGPT-about-testing-WordPress-plugin.webp 703w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1062\/h:600\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Conversation-with-ChatGPT-about-testing-WordPress-plugin.webp 1062w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:262\/h:148\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Conversation-with-ChatGPT-about-testing-WordPress-plugin.webp 262w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:345\/h:195\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Conversation-with-ChatGPT-about-testing-WordPress-plugin.webp 345w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:239\/h:135\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Conversation-with-ChatGPT-about-testing-WordPress-plugin.webp 239w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1706\/h:964\/q:mauto\/f:best\/dpr:2\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Conversation-with-ChatGPT-about-testing-WordPress-plugin.webp 2x\"><noscript><img data-opt-id=647912398  decoding=\"async\" width=\"1706\" height=\"964\" src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Conversation-with-ChatGPT-about-testing-WordPress-plugin.webp\" alt=\"Conversation with ChatGPT about testing WordPress plugin.\" class=\"wp-image-106504\" srcset=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1706\/h:964\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Conversation-with-ChatGPT-about-testing-WordPress-plugin.webp 1706w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:300\/h:170\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Conversation-with-ChatGPT-about-testing-WordPress-plugin.webp 300w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1024\/h:579\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Conversation-with-ChatGPT-about-testing-WordPress-plugin.webp 1024w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:768\/h:434\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Conversation-with-ChatGPT-about-testing-WordPress-plugin.webp 768w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1536\/h:868\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Conversation-with-ChatGPT-about-testing-WordPress-plugin.webp 1536w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:50\/h:28\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Conversation-with-ChatGPT-about-testing-WordPress-plugin.webp 50w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:425\/h:240\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Conversation-with-ChatGPT-about-testing-WordPress-plugin.webp 425w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:703\/h:397\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Conversation-with-ChatGPT-about-testing-WordPress-plugin.webp 703w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1062\/h:600\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Conversation-with-ChatGPT-about-testing-WordPress-plugin.webp 1062w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:262\/h:148\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Conversation-with-ChatGPT-about-testing-WordPress-plugin.webp 262w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:345\/h:195\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Conversation-with-ChatGPT-about-testing-WordPress-plugin.webp 345w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:239\/h:135\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Conversation-with-ChatGPT-about-testing-WordPress-plugin.webp 239w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1706\/h:964\/q:mauto\/f:best\/dpr:2\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Conversation-with-ChatGPT-about-testing-WordPress-plugin.webp 2x\" sizes=\"(max-width: 700px) 100vw, 700px\"></noscript><\/figure>\n\n\n\n<p>From a practical standpoint, I had already manually checked my plugin&rsquo;s functionalities, but it was nice to see that the test confirmed everything was working.<\/p>\n\n\n\n<p>If you&rsquo;re going to attempt to build a more complex plugin than I did, or if your plugin&rsquo;s functions will be focused on the back end (where you can&rsquo;t manually check whether they are working or not), then taking the time to properly run tests is worth the manual labor.<\/p>\n\n\n\n<h3 class=\"wp-block-heading joli-heading jtoc-heading\" id=\"h-types-of-tests\">Types of tests<\/h3>\n\n\n<div class=\"su-spoiler su-spoiler-style-fancy su-spoiler-icon-plus su-spoiler-closed\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span><strong>Read the breakdown &#128071;&#127995;<\/strong> <\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<p>Depending on the complexity of your plugin, you may want to consider different types of tests, such as:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Unit tests<\/strong>: These tests focus on verifying the functionality of individual components or methods within your plugin.<\/li>\n\n\n\n<li><strong>Integration tests<\/strong>: These tests check how different parts of your plugin work together, ensuring the overall functionality is as expected.<\/li>\n\n\n\n<li><strong>End-to-end (E2E) tests<\/strong>: These tests simulate user interactions with your plugin, from start to finish, to ensure it behaves as intended in a real-world scenario.<\/li>\n<\/ul>\n\n\n\n<p>The specific tests you write will depend on the features and complexity of your plugin. If you&rsquo;re unsure where to start, I&rsquo;d recommend focusing on unit tests for your core functionality first. Then expand to integration and E2E tests as needed.<\/p>\n\n\n\n<p>If you or ChatGPT continue to get stuck, the WordPress developer community has an <a href=\"https:\/\/make.wordpress.org\/core\/handbook\/testing\/automated-testing\/writing-phpunit-tests\/\" target=\"_blank\" rel=\"noopener\">extensive resource on testing<\/a> that you can check out. You can either look through it yourself or copy sections of it and feed them to ChatGPT as it continues to help you debug.<\/p>\n\n\n<\/div><\/div>\n\n\n\n<h3 class=\"wp-block-heading joli-heading jtoc-heading\" id=\"h-tools-to-consider\">Tools to consider<\/h3>\n\n\n<div class=\"su-spoiler su-spoiler-style-fancy su-spoiler-icon-plus su-spoiler-closed\" data-scroll-offset=\"0\" data-anchor-in-url=\"no\"><div class=\"su-spoiler-title\" tabindex=\"0\" role=\"button\"><span class=\"su-spoiler-icon\"><\/span><strong>Read the breakdown &#128071;&#127995;<\/strong> <\/div><div class=\"su-spoiler-content su-u-clearfix su-u-trim\">\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Yoast PHPUnit Polyfills<\/strong>: This Composer package provides compatibility with the latest version of PHPUnit for older versions of PHP, ensuring your tests can run consistently across different environments.<br><strong>Terminal command<\/strong>: <code>composer require yoast\/phpunit-polyfills<\/code><\/li>\n\n\n\n<li><strong>MySQL<\/strong>: The MySQL database server is a common requirement for many WordPress plugins, as they often need a database to store and retrieve data.<br><strong>Download link<\/strong>: <a href=\"https:\/\/dev.mysql.com\/downloads\/mysql\/\" target=\"_blank\" rel=\"noopener\">https:\/\/dev.mysql.com\/downloads\/mysql\/<\/a><\/li>\n<\/ul>\n\n\n\n<p><em>I used both the Yoast PHPUnit Polyfills and MySQL as part of my testing setup.<\/em><\/p>\n\n\n\n<p>Additional tools you may want to consider:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>WP_Mock<\/strong>: This is a testing framework specifically designed for WordPress development. It allows you to mock WordPress core functions, which can be particularly helpful when writing unit tests.<br><strong>Terminal command<\/strong>: <code>composer require 10up\/wp_mock<\/code><\/li>\n\n\n\n<li><strong>Codeception<\/strong>: This is a comprehensive testing framework that supports unit, integration, and end-to-end (E2E) testing. It has a WordPress-specific module that can simplify the testing process for WordPress plugins.<br><strong>Terminal command<\/strong>: <code>composer require codeception\/codeception<\/code><\/li>\n\n\n\n<li><strong>WP Browser<\/strong>: This is a Codeception module that provides a high-level API for interacting with WordPress during E2E tests. It can help you simulate user interactions and test your plugin&rsquo;s functionality in a more realistic environment.<br><strong>Terminal command<\/strong>: No direct terminal command, as it is a module within Codeception<\/li>\n\n\n\n<li><strong>PHPUnit Parallel Runner<\/strong>: If you have a large test suite, you can consider using the PHPUnit Parallel Runner to speed up the testing process by running tests concurrently.<br><strong>Terminal command<\/strong>: <code>composer require brianium\/paratest<\/code><\/li>\n<\/ul>\n\n\n<\/div><\/div>\n\n\n<div class=\"su-divider su-divider-style-dotted\" style=\"margin:40px 0;border-width:1px;border-color:#999999\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading joli-heading jtoc-heading\" id=\"h-phase-seven-optional-submit-your-plugin-to-the-wordpress-repository\">Phase seven (optional): submit your plugin to the WordPress repository &#129395;<\/h2>\n\n\n\n<p>If you&rsquo;ve made it up to this point, then you&rsquo;ve ascended the proverbial plugin mountain successfully. The only thing left to do is plant your flag so that it joins the other 62,000+ plugins in the WordPress repository.<\/p>\n\n\n\n<p>That has its own separate process, which is accompanied by a checklist on the <a href=\"https:\/\/wordpress.org\/plugins\/developers\/add\/\" target=\"_blank\" rel=\"noopener\">Add your plugin<\/a> page:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Read the <a href=\"https:\/\/developer.wordpress.org\/plugins\/wordpress-org\/plugin-developer-faq\/\" target=\"_blank\" rel=\"noopener\">Frequently Asked Questions<\/a>.<\/li>\n\n\n\n<li>Comply with all of the <a href=\"https:\/\/developer.wordpress.org\/plugins\/wordpress-org\/detailed-plugin-guidelines\/\" target=\"_blank\" rel=\"noopener\">Plugin Developer Guidelines<\/a>.<\/li>\n\n\n\n<li>Ensure you have permission to upload your plugin to WordPress.org for others to use and share.<\/li>\n\n\n\n<li>Your plugin, including all its libraries, and any other included assets are licenced as GPL or are GPL compatible.<\/li>\n\n\n\n<li>You do a final round of tests with the&nbsp;<strong>Plugin Check&nbsp;plugin<\/strong>, and you resolve any indicated issues (excluding what you think are false-positives).<\/li>\n<\/ul>\n\n\n<div class=\"wp-pic-wrapper align-center large\" style=\"margin:20px 0;\"><div class=\"wp-pic large plugin wp-pic-ajax scheme2\" id=\"wp-pic-plugin-check\" data-type=\"plugin\" data-slug=\"plugin-check\" data-image=\"\" data-expiration=\"\" data-layout=\"large\" data-slugs=\"[]\"><div class=\"wp-pic-body-loading\"><div class=\"signal\"><\/div><\/div><\/div><\/div><!-- .wp-pic-wrapper--><link rel=\"stylesheet\" id=\"dashicons-css\" href=\"https:\/\/themeisle.com\/blog\/wp-includes\/css\/dashicons.min.css?ver=6.8.5\" type=\"text\/css\" media=\"all\">\n<link rel=\"stylesheet\" id=\"wppic-style-css\" href=\"https:\/\/themeisle.com\/blog\/wp-content\/plugins\/wp-plugin-info-card\/dist\/wppic-styles.css?ver=6.1.1\" type=\"text\/css\" media=\"all\">\n<script type=\"text\/javascript\" src=\"https:\/\/themeisle.com\/blog\/wp-includes\/js\/jquery\/jquery.min.js?ver=3.7.1\" id=\"jquery-core-js\"><\/script>\n<script type=\"text\/javascript\" src=\"https:\/\/themeisle.com\/blog\/wp-includes\/js\/jquery\/jquery-migrate.min.js?ver=3.4.1\" id=\"jquery-migrate-js\"><\/script>\n<script type=\"text\/javascript\" id=\"wppic-script-js-extra\">\n\/* <![CDATA[ *\/\nvar wppicAjax = {\"ajaxurl\":\"https:\\\/\\\/themeisle.com\\\/blog\\\/wp-admin\\\/admin-ajax.php\"};\n\/* ]]> *\/\n<\/script>\n<script type=\"text\/javascript\" src=\"https:\/\/themeisle.com\/blog\/wp-content\/plugins\/wp-plugin-info-card\/assets\/js\/wppic-script.min.js?ver=6.1.1\" id=\"wppic-script-js\"><\/script>\n\n\n\n\n<p>You might think that after all the debugging, linting, and testing you did, that the plugin they ask you to use won&rsquo;t pick up anything. However, as a first-time plugin developer, you will likely have a few outstanding issues left to resolve &ndash; especially if you don&rsquo;t remove the testing files from your build before running the check.<\/p>\n\n\n\n<p>To proceed, go to <strong>Tools<\/strong> &rarr; <strong>Plugin Check<\/strong>:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full blog-img-std\"><img data-opt-id=705222960  data-opt-src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-the-Plugin-Check-tool-from-the-wp-admin-dashboard.webp\"  decoding=\"async\" width=\"2162\" height=\"1364\" src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:eco\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-the-Plugin-Check-tool-from-the-wp-admin-dashboard.webp\" alt=\"Accessing the Plugin Check tool from wp-admin.\" class=\"wp-image-106511\" old-srcset=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1711\/h:1080\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-the-Plugin-Check-tool-from-the-wp-admin-dashboard.webp 2162w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:300\/h:189\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-the-Plugin-Check-tool-from-the-wp-admin-dashboard.webp 300w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1024\/h:646\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-the-Plugin-Check-tool-from-the-wp-admin-dashboard.webp 1024w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:768\/h:485\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-the-Plugin-Check-tool-from-the-wp-admin-dashboard.webp 768w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1536\/h:969\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-the-Plugin-Check-tool-from-the-wp-admin-dashboard.webp 1536w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1711\/h:1080\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-the-Plugin-Check-tool-from-the-wp-admin-dashboard.webp 2048w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1711\/h:1080\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-the-Plugin-Check-tool-from-the-wp-admin-dashboard.webp 1800w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:50\/h:32\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-the-Plugin-Check-tool-from-the-wp-admin-dashboard.webp 50w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:380\/h:240\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-the-Plugin-Check-tool-from-the-wp-admin-dashboard.webp 380w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:629\/h:397\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-the-Plugin-Check-tool-from-the-wp-admin-dashboard.webp 629w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:951\/h:600\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-the-Plugin-Check-tool-from-the-wp-admin-dashboard.webp 951w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:235\/h:148\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-the-Plugin-Check-tool-from-the-wp-admin-dashboard.webp 235w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:309\/h:195\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-the-Plugin-Check-tool-from-the-wp-admin-dashboard.webp 309w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:214\/h:135\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-the-Plugin-Check-tool-from-the-wp-admin-dashboard.webp 214w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1711\/h:1080\/q:mauto\/f:best\/dpr:2\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-the-Plugin-Check-tool-from-the-wp-admin-dashboard.webp 2x\"><noscript><img data-opt-id=705222960  decoding=\"async\" width=\"2162\" height=\"1364\" src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-the-Plugin-Check-tool-from-the-wp-admin-dashboard.webp\" alt=\"Accessing the Plugin Check tool from wp-admin.\" class=\"wp-image-106511\" srcset=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1711\/h:1080\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-the-Plugin-Check-tool-from-the-wp-admin-dashboard.webp 2162w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:300\/h:189\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-the-Plugin-Check-tool-from-the-wp-admin-dashboard.webp 300w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1024\/h:646\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-the-Plugin-Check-tool-from-the-wp-admin-dashboard.webp 1024w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:768\/h:485\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-the-Plugin-Check-tool-from-the-wp-admin-dashboard.webp 768w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1536\/h:969\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-the-Plugin-Check-tool-from-the-wp-admin-dashboard.webp 1536w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1711\/h:1080\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-the-Plugin-Check-tool-from-the-wp-admin-dashboard.webp 2048w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1711\/h:1080\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-the-Plugin-Check-tool-from-the-wp-admin-dashboard.webp 1800w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:50\/h:32\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-the-Plugin-Check-tool-from-the-wp-admin-dashboard.webp 50w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:380\/h:240\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-the-Plugin-Check-tool-from-the-wp-admin-dashboard.webp 380w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:629\/h:397\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-the-Plugin-Check-tool-from-the-wp-admin-dashboard.webp 629w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:951\/h:600\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-the-Plugin-Check-tool-from-the-wp-admin-dashboard.webp 951w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:235\/h:148\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-the-Plugin-Check-tool-from-the-wp-admin-dashboard.webp 235w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:309\/h:195\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-the-Plugin-Check-tool-from-the-wp-admin-dashboard.webp 309w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:214\/h:135\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-the-Plugin-Check-tool-from-the-wp-admin-dashboard.webp 214w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1711\/h:1080\/q:mauto\/f:best\/dpr:2\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Accessing-the-Plugin-Check-tool-from-the-wp-admin-dashboard.webp 2x\" sizes=\"(max-width: 700px) 100vw, 700px\"></noscript><\/figure>\n\n\n\n<p>Then check off all five categories and run the check:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full blog-img-std\"><img data-opt-id=684814987  data-opt-src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Results-from-running-Plugin-Check-scaled.webp\"  decoding=\"async\" width=\"2560\" height=\"1744\" src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:eco\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Results-from-running-Plugin-Check-scaled.webp\" alt=\"Results of the Plugin Check.\" class=\"wp-image-106512\" old-srcset=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1585\/h:1080\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Results-from-running-Plugin-Check-scaled.webp 2560w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:300\/h:204\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Results-from-running-Plugin-Check-scaled.webp 300w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1024\/h:698\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Results-from-running-Plugin-Check-scaled.webp 1024w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:768\/h:523\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Results-from-running-Plugin-Check-scaled.webp 768w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1536\/h:1046\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Results-from-running-Plugin-Check-scaled.webp 1536w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1585\/h:1080\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Results-from-running-Plugin-Check-scaled.webp 2048w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1585\/h:1080\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Results-from-running-Plugin-Check-scaled.webp 1800w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:50\/h:34\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Results-from-running-Plugin-Check-scaled.webp 50w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:352\/h:240\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Results-from-running-Plugin-Check-scaled.webp 352w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:583\/h:397\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Results-from-running-Plugin-Check-scaled.webp 583w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:881\/h:600\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Results-from-running-Plugin-Check-scaled.webp 881w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:217\/h:148\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Results-from-running-Plugin-Check-scaled.webp 217w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:286\/h:195\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Results-from-running-Plugin-Check-scaled.webp 286w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:198\/h:135\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Results-from-running-Plugin-Check-scaled.webp 198w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1585\/h:1080\/q:mauto\/f:best\/dpr:2\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Results-from-running-Plugin-Check-scaled.webp 2x\"><noscript><img data-opt-id=684814987  decoding=\"async\" width=\"2560\" height=\"1744\" src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Results-from-running-Plugin-Check-scaled.webp\" alt=\"Results of the Plugin Check.\" class=\"wp-image-106512\" srcset=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1585\/h:1080\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Results-from-running-Plugin-Check-scaled.webp 2560w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:300\/h:204\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Results-from-running-Plugin-Check-scaled.webp 300w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1024\/h:698\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Results-from-running-Plugin-Check-scaled.webp 1024w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:768\/h:523\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Results-from-running-Plugin-Check-scaled.webp 768w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1536\/h:1046\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Results-from-running-Plugin-Check-scaled.webp 1536w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1585\/h:1080\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Results-from-running-Plugin-Check-scaled.webp 2048w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1585\/h:1080\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Results-from-running-Plugin-Check-scaled.webp 1800w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:50\/h:34\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Results-from-running-Plugin-Check-scaled.webp 50w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:352\/h:240\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Results-from-running-Plugin-Check-scaled.webp 352w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:583\/h:397\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Results-from-running-Plugin-Check-scaled.webp 583w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:881\/h:600\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Results-from-running-Plugin-Check-scaled.webp 881w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:217\/h:148\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Results-from-running-Plugin-Check-scaled.webp 217w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:286\/h:195\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Results-from-running-Plugin-Check-scaled.webp 286w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:198\/h:135\/q:mauto\/f:best\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Results-from-running-Plugin-Check-scaled.webp 198w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1585\/h:1080\/q:mauto\/f:best\/dpr:2\/https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Results-from-running-Plugin-Check-scaled.webp 2x\" sizes=\"(max-width: 700px) 100vw, 700px\"></noscript><\/figure>\n\n\n\n<p>You can then feed those outstanding issues to ChatGPT and resolve them. When you&rsquo;re finished, run the check again to ensure a clean result. Do it as many times as you need to. Once you get a completely clean check (excluding false positives), you can submit your plugin to the WordPress development team. Then wait patiently for them to review it.<\/p>\n\n\n<div class=\"su-divider su-divider-style-dotted\" style=\"margin:40px 0;border-width:1px;border-color:#999999\"><a href=\"#\" style=\"color:#999999\">Go to top<\/a><\/div>\n\n\n\n<h2 class=\"wp-block-heading joli-heading jtoc-heading\" id=\"h-final-thoughts\">Final thoughts &#129504;<\/h2>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p>While it is a fun and rewarding process to build a plugin with ChatGPT, it is by no means a quick process. You need to put in a lot of sweat equity to make a decently working final product. In the end though, you&rsquo;ll appreciate all the new skills that doing this project will teach you.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n\t\t<div class=\"ti-tweet-clear\"><\/div>\n\t\t\t<div class=\"ti-tweet_wrapper\">\n\t\t    \t<div class=\"ti-tweet_text\">\n\t\t    \t\t<a href=\"https:\/\/twitter.com\/share?text=It+took+me+120+hours+to+build+a+%23WordPress+plugin+with+%23ChatGPT+with+no+prior+experience+%F0%9F%A4%AF&amp;via=themeisle&amp;related=themeisle&amp;url=https:\/\/themeisle.com\/blog\/build-a-wordpress-plugin-with-chatgpt\/\" target=\"_blank\" rel=\"nofollow\">It took me 120 hours to build a #WordPress plugin with #ChatGPT with no prior experience &#129327;<\/a>\n\t\t    \t<\/div>\n\t\t    \t<div class=\"ti-tweet_sharebtn\">\n\t\t    \t<a href=\"https:\/\/twitter.com\/share?text=It+took+me+120+hours+to+build+a+%23WordPress+plugin+with+%23ChatGPT+with+no+prior+experience+%F0%9F%A4%AF&amp;via=themeisle&amp;related=themeisle&amp;url=https:\/\/themeisle.com\/blog\/build-a-wordpress-plugin-with-chatgpt\/\" target=\"_blank\" rel=\"nofollow\">Click To Tweet \n\t\t    \t\t<span><\/span>\n\t\t    \t<\/a>\n\t\t    <\/div>\n\t\t<\/div>\n<\/div>\n<\/div>\n\n\n\n<p>Here are a few things that I learned (and you might too):<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>I learned how to navigate my way around my hard drive using Terminal commands and also learned other commands related to the process of building a plugin.<\/li>\n\n\n\n<li>I&rsquo;m now fairly comfortable with both Docker and Local by Flywheel, both of which I never used before this experiment.<\/li>\n\n\n\n<li>I&rsquo;m also familiar with lots of developer tools and scripts that I never even knew existed prior to this.<\/li>\n\n\n\n<li>I&rsquo;ve taken <a href=\"https:\/\/themeisle.com\/blog\/free-wordpress-courses\/\">some classes<\/a> in the past with <a href=\"https:\/\/www.freecodecamp.org\/\" target=\"_blank\" rel=\"noopener\">Free Code Camp<\/a> and <a href=\"https:\/\/www.codecademy.com\/\" target=\"_blank\" rel=\"noopener\">Codecademy<\/a>, and though both were great, I feel like I got a lot more hands-on knowledge by completing this project.<\/li>\n\n\n\n<li>Related to the above, I now have a lot of random coding nuggets of information that will come in handy if I work on something similar again.<\/li>\n\n\n\n<li>The gap between zero to working plugin is <strong>much<\/strong> smaller than the gap between working plugin and submission-ready plugin. I got a working version of my plugin done within a few days, but it took me another few weeks before I worked out all the tweaks to make it good enough to submit to the WordPress repository.<\/li>\n<\/ul>\n\n\n\n<p>Overall, this was one of the coolest activities that I&rsquo;ve done in a long time. Thanks for taking the time to read. If you end up using any of this information to build your first plugin, please drop me a comment below. I&rsquo;d love to check out your final result.<\/p>\n\n\n<style>.ticss-d144f107 strong{font-weight: 700;\n    letter-spacing: -0.2px;\n    line-height: 1.2;\n    display: inline-block;}<\/style>\n\n\n<div class=\"wp-block-columns speed-guide has-white-color has-text-color has-background has-link-color wp-elements-2f81f6c5526477b5b4d52d1ca4513949 is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\" style=\"background-color:#4267cf\">\n<div class=\"wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:40%\">\n<figure class=\"wp-block-image size-medium\"><img data-opt-id=30701221  data-opt-src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:300\/h:300\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2025\/09\/e2ce20299a807336c68c2e029640adaa1.png\"  decoding=\"async\" width=\"300\" height=\"300\" src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:300\/h:300\/q:eco\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2025\/09\/e2ce20299a807336c68c2e029640adaa1.png\" alt=\"speed guide\" class=\"wp-image-113040\" old-srcset=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:300\/h:300\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2025\/09\/e2ce20299a807336c68c2e029640adaa1.png 300w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1024\/h:1024\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2025\/09\/e2ce20299a807336c68c2e029640adaa1.png 1024w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:150\/h:150\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2025\/09\/e2ce20299a807336c68c2e029640adaa1.png 150w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:768\/h:768\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2025\/09\/e2ce20299a807336c68c2e029640adaa1.png 768w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:50\/h:50\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2025\/09\/e2ce20299a807336c68c2e029640adaa1.png 50w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:240\/h:240\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2025\/09\/e2ce20299a807336c68c2e029640adaa1.png 240w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:397\/h:397\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2025\/09\/e2ce20299a807336c68c2e029640adaa1.png 397w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:600\/h:600\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2025\/09\/e2ce20299a807336c68c2e029640adaa1.png 600w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:148\/h:148\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2025\/09\/e2ce20299a807336c68c2e029640adaa1.png 148w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:195\/h:195\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2025\/09\/e2ce20299a807336c68c2e029640adaa1.png 195w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:135\/h:135\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2025\/09\/e2ce20299a807336c68c2e029640adaa1.png 135w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1080\/h:1080\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2025\/09\/e2ce20299a807336c68c2e029640adaa1.png 1200w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1080\/h:1080\/q:mauto\/f:best\/dpr:2\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2025\/09\/e2ce20299a807336c68c2e029640adaa1.png 2x\"><noscript><img data-opt-id=30701221  decoding=\"async\" width=\"300\" height=\"300\" src=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:300\/h:300\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2025\/09\/e2ce20299a807336c68c2e029640adaa1.png\" alt=\"speed guide\" class=\"wp-image-113040\" srcset=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:300\/h:300\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2025\/09\/e2ce20299a807336c68c2e029640adaa1.png 300w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1024\/h:1024\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2025\/09\/e2ce20299a807336c68c2e029640adaa1.png 1024w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:150\/h:150\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2025\/09\/e2ce20299a807336c68c2e029640adaa1.png 150w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:768\/h:768\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2025\/09\/e2ce20299a807336c68c2e029640adaa1.png 768w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:50\/h:50\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2025\/09\/e2ce20299a807336c68c2e029640adaa1.png 50w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:240\/h:240\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2025\/09\/e2ce20299a807336c68c2e029640adaa1.png 240w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:397\/h:397\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2025\/09\/e2ce20299a807336c68c2e029640adaa1.png 397w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:600\/h:600\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2025\/09\/e2ce20299a807336c68c2e029640adaa1.png 600w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:148\/h:148\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2025\/09\/e2ce20299a807336c68c2e029640adaa1.png 148w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:195\/h:195\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2025\/09\/e2ce20299a807336c68c2e029640adaa1.png 195w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:135\/h:135\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2025\/09\/e2ce20299a807336c68c2e029640adaa1.png 135w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1080\/h:1080\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2025\/09\/e2ce20299a807336c68c2e029640adaa1.png 1200w, https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:1080\/h:1080\/q:mauto\/f:best\/dpr:2\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2025\/09\/e2ce20299a807336c68c2e029640adaa1.png 2x\" sizes=\"(max-width: 300px) 100vw, 300px\"></noscript><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"has-text-align-center ticss-58e79f2f\" style=\"font-size:14px\"><strong>FREE GUIDE<\/strong><\/p>\n\n\n\n<p class=\"ticss-d144f107\" style=\"font-size:25px\"><strong>4 Essential Steps to Speed Up Your&nbsp;WordPress Website<\/strong><\/p>\n\n\n\n<p class=\"ticss-3b627beb\">Follow the simple steps in our 4-part mini series and reduce your loading times by 50-80%.&nbsp;&#128640;<\/p>\n\n\n<p><\/p><div class=\"frm_forms  with_frm_style frm_style_themeisle\" id=\"frm_form_4_container\" data-token=\"173916a7f6c7aec0d4fa5af1b609cb3a\">\n<form enctype=\"multipart\/form-data\" method=\"post\" class=\"frm-show-form  frm_pro_form \" id=\"form_site-speed-guide-below-post\" data-token=\"173916a7f6c7aec0d4fa5af1b609cb3a\">\n<div class=\"frm_form_fields \">\n<fieldset>\n<legend class=\"frm_screen_reader\">Site Speed Guide - Below Post<\/legend>\r\n\r\n<div class=\"frm_fields_container\">\n<input type=\"hidden\" name=\"frm_action\" value=\"create\">\n<input type=\"hidden\" name=\"form_id\" value=\"4\">\n<input type=\"hidden\" name=\"frm_hide_fields_4\" id=\"frm_hide_fields_4\" value=\"\">\n<input type=\"hidden\" name=\"form_key\" value=\"site-speed-guide-below-post\">\n<input type=\"hidden\" name=\"item_meta[0]\" value=\"\">\n<input type=\"hidden\" id=\"frm_submit_entry_4\" name=\"frm_submit_entry_4\" value=\"1ab6c017d0\"><input type=\"hidden\" name=\"_wp_http_referer\" value=\"\/blog\/wp-json\/wp\/v2\/posts\/106381\"><input type=\"hidden\" name=\"item_meta[18]\" id=\"field_6px6q2\" value=\"\/blog\/wp-json\/wp\/v2\/posts\/106381\" data-frmval=\"\/blog\/wp-json\/wp\/v2\/posts\/106381\">\n<div id=\"frm_field_15_container\" class=\"frm_form_field form-field  frm_required_field frm_none_container\">\r\n\t<label for=\"field_6px6q\" id=\"field_6px6q_label\" class=\"frm_primary_label\">Your Email\r\n\t\t<span class=\"frm_required\" aria-hidden=\"true\">*<\/span>\r\n\t<\/label>\r\n\t<input type=\"email\" id=\"field_6px6q\" name=\"item_meta[15]\" value=\"\" autocomplete=\"email\" placeholder=\"your@email.com\" data-reqmsg=\"Your Email cannot be blank.\" aria-required=\"true\" data-invmsg=\"Your Email is invalid\" aria-invalid=\"false\">\r\n\t\r\n\t\r\n<\/div>\n<div id=\"frm_field_17_container\" class=\"frm_form_field form-field  frm_none_container vertical_radio\">\r\n\t<div id=\"field_6px6q3_label\" class=\"frm_primary_label\">Subscribe to our newsletter\r\n\t\t<span class=\"frm_required\" aria-hidden=\"true\"><\/span>\r\n\t<\/div>\r\n\t<div class=\"frm_opt_container\" aria-labelledby=\"field_6px6q3_label\" role=\"group\">\t\t<div class=\"frm_checkbox\" id=\"frm_checkbox_17-0\">\t\t\t<label for=\"field_6px6q3-0\">\n\t\t\t<input type=\"checkbox\" name=\"item_meta[17][]\" id=\"field_6px6q3-0\" value=\"true\" data-invmsg=\"Subscribe to our newsletter is invalid\" aria-invalid=\"false\"> Subscribe to our newsletter<\/label><\/div>\n<\/div>\r\n\t\r\n\t\r\n<\/div>\n<div id=\"frm_field_14_container\" class=\"frm_form_field form-field \">\r\n\t<div class=\"frm_submit frm_flex\">\r\n<button class=\"frm_button_submit frm_final_submit\" type=\"submit\" formnovalidate=\"formnovalidate\">FREE ACCESS<\/button>\r\n\r\n\r\n\r\n<\/div>\r\n<\/div>\n\t<input type=\"hidden\" name=\"item_key\" value=\"\">\n\t\t\t<div id=\"frm_field_24_container\">\n\t\t\t<label for=\"field_txw2w\">\n\t\t\t\tIf you are human, leave this field blank.\t\t\t<\/label>\n\t\t\t<input id=\"field_txw2w\" type=\"text\" class=\"frm_form_field form-field frm_verify\" name=\"item_meta[24]\" value=\"\">\n\t\t<\/div>\n\t\t<input name=\"frm_state\" type=\"hidden\" value=\"tGKtIG19U6wyYcew8uBttQRdnwl8bObt4OhYdzo7izMkdKCs\/l0h48RQnQG\/UFbR\"><\/div>\n<\/fieldset>\n<\/div>\n\n<p style=\"display: none !important;\" class=\"akismet-fields-container\" data-prefix=\"ak_\"><label>&Delta;<textarea name=\"ak_hp_textarea\" cols=\"45\" rows=\"8\" maxlength=\"100\"><\/textarea><\/label><input type=\"hidden\" id=\"ak_js_1\" name=\"ak_js\" value=\"103\"><script>document.getElementById( \"ak_js_1\" ).setAttribute( \"value\", ( new Date() ).getTime() );<\/script><\/p><\/form>\n<\/div>\n\n<\/div>\n<\/div>\n\n","protected":false},"excerpt":{"rendered":"I actually thought I could build a WordPress plugin with ChatGPT in just a couple of hours. Well, &#8220;a couple of hours&#8221; turned out to be 120. Assuming you plan on following in my footsteps, I strongly urge you to read this article in its entirety beforehand.  It will genuinely save you hours \u2013 even days \u2013 of extra work. ","protected":false},"author":68,"featured_media":106833,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_stopmodifiedupdate":true,"_modified_date":"","_themeisle_gutenberg_block_has_review":false,"footnotes":""},"categories":[4061,272],"tags":[],"hashtags":[],"class_list":["post-106381","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai","category-wordpress-tutorials"],"wppr_data":{"cwp_meta_box_check":"No"},"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.8 (Yoast SEO v26.1.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Creating a WordPress Plugin With ChatGPT: In 120 Hours, No Exp.<\/title>\n<meta name=\"description\" content=\"I tried to build a WordPress plugin using ChatGPT with no development experience. Learn why that&#039;s not a good idea and what to do instead.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/themeisle.com\/blog\/build-a-wordpress-plugin-with-chatgpt\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"My Journey to Creating a WordPress Plugin With ChatGPT: 120 Hours of Work, No Prior Experience\" \/>\n<meta property=\"og:description\" content=\"I tried to build a WordPress plugin using ChatGPT with no development experience. Learn why that&#039;s not a good idea and what to do instead.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/themeisle.com\/blog\/build-a-wordpress-plugin-with-chatgpt\/\" \/>\n<meta property=\"og:site_name\" content=\"Themeisle Blog\" \/>\n<meta property=\"article:published_time\" content=\"2024-08-28T11:11:50+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-08-28T14:30:38+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Creating-a-WordPress-Plugin-With-ChatGPT.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2180\" \/>\n\t<meta property=\"og:image:height\" content=\"1090\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Martin Dubovic\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Martin Dubovic\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"38 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/themeisle.com\/blog\/build-a-wordpress-plugin-with-chatgpt\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/themeisle.com\/blog\/build-a-wordpress-plugin-with-chatgpt\/\"},\"author\":{\"name\":\"Martin Dubovic\",\"@id\":\"https:\/\/themeisle.com\/blog\/#\/schema\/person\/9aa19aa295f0e6aa2d6c0b4079a1a660\"},\"headline\":\"My Journey to Creating a WordPress Plugin With ChatGPT: 120 Hours of Work, No Prior Experience\",\"datePublished\":\"2024-08-28T11:11:50+00:00\",\"dateModified\":\"2024-08-28T14:30:38+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/themeisle.com\/blog\/build-a-wordpress-plugin-with-chatgpt\/\"},\"wordCount\":7759,\"commentCount\":15,\"publisher\":{\"@id\":\"https:\/\/themeisle.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/themeisle.com\/blog\/build-a-wordpress-plugin-with-chatgpt\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Creating-a-WordPress-Plugin-With-ChatGPT.png\",\"articleSection\":[\"AI Innovations\",\"WordPress Tutorials\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/themeisle.com\/blog\/build-a-wordpress-plugin-with-chatgpt\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/themeisle.com\/blog\/build-a-wordpress-plugin-with-chatgpt\/\",\"url\":\"https:\/\/themeisle.com\/blog\/build-a-wordpress-plugin-with-chatgpt\/\",\"name\":\"Creating a WordPress Plugin With ChatGPT: In 120 Hours, No Exp.\",\"isPartOf\":{\"@id\":\"https:\/\/themeisle.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/themeisle.com\/blog\/build-a-wordpress-plugin-with-chatgpt\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/themeisle.com\/blog\/build-a-wordpress-plugin-with-chatgpt\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Creating-a-WordPress-Plugin-With-ChatGPT.png\",\"datePublished\":\"2024-08-28T11:11:50+00:00\",\"dateModified\":\"2024-08-28T14:30:38+00:00\",\"description\":\"I tried to build a WordPress plugin using ChatGPT with no development experience. Learn why that\\\\'s not a good idea and what to do instead.\",\"breadcrumb\":{\"@id\":\"https:\/\/themeisle.com\/blog\/build-a-wordpress-plugin-with-chatgpt\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/themeisle.com\/blog\/build-a-wordpress-plugin-with-chatgpt\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/themeisle.com\/blog\/build-a-wordpress-plugin-with-chatgpt\/#primaryimage\",\"url\":\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Creating-a-WordPress-Plugin-With-ChatGPT.png\",\"contentUrl\":\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Creating-a-WordPress-Plugin-With-ChatGPT.png\",\"width\":2180,\"height\":1090,\"caption\":\"Creating a WordPress Plugin With ChatGPT\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/themeisle.com\/blog\/build-a-wordpress-plugin-with-chatgpt\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Blog\",\"item\":\"https:\/\/themeisle.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"My Journey to Creating a WordPress Plugin With ChatGPT: 120 Hours of Work, No Prior Experience\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/themeisle.com\/blog\/#website\",\"url\":\"https:\/\/themeisle.com\/blog\/\",\"name\":\"Themeisle Blog\",\"description\":\"WordPress Tutorials and Reviews for Beginners and Advanced\",\"publisher\":{\"@id\":\"https:\/\/themeisle.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/themeisle.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/themeisle.com\/blog\/#organization\",\"name\":\"VertiStudio\",\"alternateName\":\"Vertigo Studio SA\",\"url\":\"https:\/\/themeisle.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/themeisle.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/02\/VertiStudio_logo1.png\",\"contentUrl\":\"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/02\/VertiStudio_logo1.png\",\"width\":718,\"height\":156,\"caption\":\"VertiStudio\"},\"image\":{\"@id\":\"https:\/\/themeisle.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/themeisle.com\/blog\/#\/schema\/person\/9aa19aa295f0e6aa2d6c0b4079a1a660\",\"name\":\"Martin Dubovic\",\"description\":\"Martin wrote his first e-book and built his first website using Weebly to market it and sell it in 2013. After making his first sale, he knew he was onto something. A few years later he made the switch to WordPress and from then on he became a full on WordPress addict. When he\\\\'s not WordPress-ing, you can find him doing pullups, handstands, drinking matcha, and of course, writing.\",\"url\":\"https:\/\/themeisle.com\/blog\/author\/martin-d\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Creating a WordPress Plugin With ChatGPT: In 120 Hours, No Exp.","description":"I tried to build a WordPress plugin using ChatGPT with no development experience. Learn why that&#039;s not a good idea and what to do instead.","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:\/\/themeisle.com\/blog\/build-a-wordpress-plugin-with-chatgpt\/","og_locale":"en_US","og_type":"article","og_title":"My Journey to Creating a WordPress Plugin With ChatGPT: 120 Hours of Work, No Prior Experience","og_description":"I tried to build a WordPress plugin using ChatGPT with no development experience. Learn why that&#039;s not a good idea and what to do instead.","og_url":"https:\/\/themeisle.com\/blog\/build-a-wordpress-plugin-with-chatgpt\/","og_site_name":"Themeisle Blog","article_published_time":"2024-08-28T11:11:50+00:00","article_modified_time":"2024-08-28T14:30:38+00:00","og_image":[{"width":2180,"height":1090,"url":"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Creating-a-WordPress-Plugin-With-ChatGPT.png","type":"image\/png"}],"author":"Martin Dubovic","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Martin Dubovic","Est. reading time":"38 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/themeisle.com\/blog\/build-a-wordpress-plugin-with-chatgpt\/#article","isPartOf":{"@id":"https:\/\/themeisle.com\/blog\/build-a-wordpress-plugin-with-chatgpt\/"},"author":{"name":"Martin Dubovic","@id":"https:\/\/themeisle.com\/blog\/#\/schema\/person\/9aa19aa295f0e6aa2d6c0b4079a1a660"},"headline":"My Journey to Creating a WordPress Plugin With ChatGPT: 120 Hours of Work, No Prior Experience","datePublished":"2024-08-28T11:11:50+00:00","dateModified":"2024-08-28T14:30:38+00:00","mainEntityOfPage":{"@id":"https:\/\/themeisle.com\/blog\/build-a-wordpress-plugin-with-chatgpt\/"},"wordCount":7759,"commentCount":15,"publisher":{"@id":"https:\/\/themeisle.com\/blog\/#organization"},"image":{"@id":"https:\/\/themeisle.com\/blog\/build-a-wordpress-plugin-with-chatgpt\/#primaryimage"},"thumbnailUrl":"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Creating-a-WordPress-Plugin-With-ChatGPT.png","articleSection":["AI Innovations","WordPress Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/themeisle.com\/blog\/build-a-wordpress-plugin-with-chatgpt\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/themeisle.com\/blog\/build-a-wordpress-plugin-with-chatgpt\/","url":"https:\/\/themeisle.com\/blog\/build-a-wordpress-plugin-with-chatgpt\/","name":"Creating a WordPress Plugin With ChatGPT: In 120 Hours, No Exp.","isPartOf":{"@id":"https:\/\/themeisle.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/themeisle.com\/blog\/build-a-wordpress-plugin-with-chatgpt\/#primaryimage"},"image":{"@id":"https:\/\/themeisle.com\/blog\/build-a-wordpress-plugin-with-chatgpt\/#primaryimage"},"thumbnailUrl":"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Creating-a-WordPress-Plugin-With-ChatGPT.png","datePublished":"2024-08-28T11:11:50+00:00","dateModified":"2024-08-28T14:30:38+00:00","description":"I tried to build a WordPress plugin using ChatGPT with no development experience. Learn why that\\'s not a good idea and what to do instead.","breadcrumb":{"@id":"https:\/\/themeisle.com\/blog\/build-a-wordpress-plugin-with-chatgpt\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/themeisle.com\/blog\/build-a-wordpress-plugin-with-chatgpt\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/themeisle.com\/blog\/build-a-wordpress-plugin-with-chatgpt\/#primaryimage","url":"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Creating-a-WordPress-Plugin-With-ChatGPT.png","contentUrl":"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/08\/Creating-a-WordPress-Plugin-With-ChatGPT.png","width":2180,"height":1090,"caption":"Creating a WordPress Plugin With ChatGPT"},{"@type":"BreadcrumbList","@id":"https:\/\/themeisle.com\/blog\/build-a-wordpress-plugin-with-chatgpt\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog","item":"https:\/\/themeisle.com\/blog\/"},{"@type":"ListItem","position":2,"name":"My Journey to Creating a WordPress Plugin With ChatGPT: 120 Hours of Work, No Prior Experience"}]},{"@type":"WebSite","@id":"https:\/\/themeisle.com\/blog\/#website","url":"https:\/\/themeisle.com\/blog\/","name":"Themeisle Blog","description":"WordPress Tutorials and Reviews for Beginners and Advanced","publisher":{"@id":"https:\/\/themeisle.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/themeisle.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/themeisle.com\/blog\/#organization","name":"VertiStudio","alternateName":"Vertigo Studio SA","url":"https:\/\/themeisle.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/themeisle.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/02\/VertiStudio_logo1.png","contentUrl":"https:\/\/mllj2j8xvfl0.i.optimole.com\/cb:c5QE.37290\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/themeisle.com\/blog\/wp-content\/uploads\/2024\/02\/VertiStudio_logo1.png","width":718,"height":156,"caption":"VertiStudio"},"image":{"@id":"https:\/\/themeisle.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/themeisle.com\/blog\/#\/schema\/person\/9aa19aa295f0e6aa2d6c0b4079a1a660","name":"Martin Dubovic","description":"Martin wrote his first e-book and built his first website using Weebly to market it and sell it in 2013. After making his first sale, he knew he was onto something. A few years later he made the switch to WordPress and from then on he became a full on WordPress addict. When he\\'s not WordPress-ing, you can find him doing pullups, handstands, drinking matcha, and of course, writing.","url":"https:\/\/themeisle.com\/blog\/author\/martin-d\/"}]}},"_links":{"self":[{"href":"https:\/\/themeisle.com\/blog\/wp-json\/wp\/v2\/posts\/106381","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themeisle.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themeisle.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themeisle.com\/blog\/wp-json\/wp\/v2\/users\/68"}],"replies":[{"embeddable":true,"href":"https:\/\/themeisle.com\/blog\/wp-json\/wp\/v2\/comments?post=106381"}],"version-history":[{"count":152,"href":"https:\/\/themeisle.com\/blog\/wp-json\/wp\/v2\/posts\/106381\/revisions"}],"predecessor-version":[{"id":106849,"href":"https:\/\/themeisle.com\/blog\/wp-json\/wp\/v2\/posts\/106381\/revisions\/106849"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themeisle.com\/blog\/wp-json\/wp\/v2\/media\/106833"}],"wp:attachment":[{"href":"https:\/\/themeisle.com\/blog\/wp-json\/wp\/v2\/media?parent=106381"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themeisle.com\/blog\/wp-json\/wp\/v2\/categories?post=106381"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themeisle.com\/blog\/wp-json\/wp\/v2\/tags?post=106381"},{"taxonomy":"hashtags","embeddable":true,"href":"https:\/\/themeisle.com\/blog\/wp-json\/wp\/v2\/hashtags?post=106381"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}