{"id":4181,"date":"2022-08-21T21:48:37","date_gmt":"2022-08-21T16:18:37","guid":{"rendered":"https:\/\/jassweb.com\/solved\/solved-where-to-put-my-code-plugin-or-functions-php\/"},"modified":"2022-08-21T21:48:37","modified_gmt":"2022-08-21T16:18:37","slug":"solved-where-to-put-my-code-plugin-or-functions-php","status":"publish","type":"post","link":"https:\/\/jassweb.com\/solved\/solved-where-to-put-my-code-plugin-or-functions-php\/","title":{"rendered":"[Solved] Where to put my code: plugin or functions.php?"},"content":{"rendered":"<p> [ad_1]<br \/>\n<\/p>\n<div id=\"answer-73157\" class=\"answer js-answer accepted-answer js-accepted-answer\" data-answerid=\"73157\" data-parentid=\"73031\" data-score=\"81\" data-position-on-page=\"1\" data-highest-scored=\"1\" data-question-has-accepted-highest-score=\"1\" itemprop=\"acceptedAnswer\" itemscope itemtype=\"https:\/\/schema.org\/Answer\">\n<div class=\"post-layout\">\n<div class=\"votecell post-layout--left\"><\/div>\n<div class=\"answercell post-layout--right\">\n<div class=\"s-prose js-post-body\" itemprop=\"text\">\n<p>I would start with this question: <strong>Is the functionality related to <em>presentation<\/em> of content, or with <em>generation\/management<\/em> of content, or of the site, or of the user identity?<\/strong><\/p>\n<p>If the functionality <strong>is not related<\/strong> specifically to <em>presentation of content<\/em>, then it is squarely within Plugin Territory. This list is long:<\/p>\n<ul>\n<li>Modifying core WP filters (<code>wp_head<\/code> content, such as canonical links, generator and other HTML meta, etc<\/li>\n<li>Site Favicon<\/li>\n<li>Post-content shortcodes<\/li>\n<li>Post sharing links<\/li>\n<li>Google Analytics (and similar) footer scripts<\/li>\n<li>SEO tools\/controls<\/li>\n<li>etc.<\/li>\n<\/ul>\n<p>If the functionality <strong>is related<\/strong> to <em>presentation of content<\/em>, then it is a <em>candidate<\/em> for being included in the Theme. At this point, I would revert to @Raf912&#8217;s Theme-switch criterion: <strong>would you miss the functionality when you switch Themes?<\/strong> If the answer to that question is <strong>no<\/strong>, then the functionality belongs in the Theme. Some examples:<\/p>\n<ul>\n<li>Removing\/overriding the WP core Gallery CSS<\/li>\n<li>Filtering post excerpt length, &#8220;read more&#8221; text, etc.<\/li>\n<li>Anything implemented via <a rel=\"nofollow noopener\" target=\"_blank\" href=\"https:\/\/developer.wordpress.org\/reference\/functions\/add_theme_support\/\"><code>add_theme_support()<\/code><\/a> (I suppose this one should be obvious)<\/li>\n<li>Custom CSS<\/li>\n<\/ul>\n<p>Normally, these two questions will provide a fairly clear line of differentiation; however, there are exceptions.<\/p>\n<h3>Custom Post Types<\/h3>\n<p>Custom Post Types, for example, are a bit of a unique hybrid of content generation and presentation, given the way the Template Hierarchy works for single-post-type <a rel=\"nofollow noopener\" target=\"_blank\" href=\"http:\/\/codex.wordpress.org\/Template_Hierarchy#Custom_Post_Types_display\">archive index pages<\/a> and <a rel=\"nofollow noopener\" target=\"_blank\" href=\"http:\/\/codex.wordpress.org\/Template_Hierarchy#Single_Post_display\">single post pages<\/a>. The content-generation aspect of CPTs would normally place them squarely in Plugin Territory; however, Plugins cannot define template pages that inherently fit into the design\/layout\/style for any given Theme (especially if the CPT displays other than the usual Title\/Content\/Meta, or has custom taxonomies associated with it).<\/p>\n<p>Long-term, the solution to this disparity, IMHO, is to have a standard convention\/consensus for the definition of CPTs for given types of content (real estate listings, calendar events, e-commerce products, book\/media library entries, etc.). That way, user-generated content would remain portable between Themes that implement the standard\/convention definition of a given CPT, while Theme developers retain the flexibility to define the design\/layout\/style of that CPT in the Theme template files.<\/p>\n<h3>Social Media Links<\/h3>\n<p>Similarly, I would normally say that social media profile links, ave become all but ubiquitous in current Themes, are Plugin Territory, because they have nothing to do with <em>presentation<\/em> of content. The best solution would be for these profiles to be defined somewhere in core; however, there is currently no standard\/consensus means of defining these links. Are they best-defined at the site-setting level, or on a per-user basis? If per-user, which user&#8217;s meta gets exposed in the template? etc.<\/p>\n<p>So again, long-term, the solution to this disparity is for either core to define where these links are defined, or else for the Theme developer community to develop its own consensus. In the meantime, there&#8217;s really nothing for it but to keep them defined within each Theme.<\/p>\n<\/p><\/div>\n<div class=\"mt24\"><\/div>\n<\/div>\n<p>            <span class=\"d-none\" itemprop=\"commentCount\">4<\/span> <\/p><\/div>\n<\/div>\n<p>[ad_2]<\/p>\n<p>solved Where to put my code: plugin or functions.php? <\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad_1] I would start with this question: Is the functionality related to presentation of content, or with generation\/management of content, or of the site, or of the user identity? If the functionality is not related specifically to presentation of content, then it is squarely within Plugin Territory. This list is long: Modifying core WP filters &#8230; <a title=\"[Solved] Where to put my code: plugin or functions.php?\" class=\"read-more\" href=\"https:\/\/jassweb.com\/solved\/solved-where-to-put-my-code-plugin-or-functions-php\/\" aria-label=\"More on [Solved] Where to put my code: plugin or functions.php?\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[627],"tags":[643,644,647,645,646],"class_list":["post-4181","post","type-post","status-publish","format-standard","hentry","category-wordpress","tag-custom-post-types","tag-plugin-development","tag-shortcode","tag-theme-development","tag-widgets"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>[Solved] Where to put my code: plugin or functions.php? - JassWeb<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jassweb.com\/solved\/solved-where-to-put-my-code-plugin-or-functions-php\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[Solved] Where to put my code: plugin or functions.php? - JassWeb\" \/>\n<meta property=\"og:description\" content=\"[ad_1] I would start with this question: Is the functionality related to presentation of content, or with generation\/management of content, or of the site, or of the user identity? If the functionality is not related specifically to presentation of content, then it is squarely within Plugin Territory. This list is long: Modifying core WP filters ... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jassweb.com\/solved\/solved-where-to-put-my-code-plugin-or-functions-php\/\" \/>\n<meta property=\"og:site_name\" content=\"JassWeb\" \/>\n<meta property=\"article:published_time\" content=\"2022-08-21T16:18:37+00:00\" \/>\n<meta name=\"author\" content=\"Kirat\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kirat\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-where-to-put-my-code-plugin-or-functions-php\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-where-to-put-my-code-plugin-or-functions-php\/\"},\"author\":{\"name\":\"Kirat\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\"},\"headline\":\"[Solved] Where to put my code: plugin or functions.php?\",\"datePublished\":\"2022-08-21T16:18:37+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-where-to-put-my-code-plugin-or-functions-php\/\"},\"wordCount\":498,\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"keywords\":[\"custom-post-types\",\"plugin-development\",\"shortcode\",\"theme-development\",\"widgets\"],\"articleSection\":[\"WordPress\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-where-to-put-my-code-plugin-or-functions-php\/\",\"url\":\"https:\/\/jassweb.com\/solved\/solved-where-to-put-my-code-plugin-or-functions-php\/\",\"name\":\"[Solved] Where to put my code: plugin or functions.php? - JassWeb\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#website\"},\"datePublished\":\"2022-08-21T16:18:37+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-where-to-put-my-code-plugin-or-functions-php\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/jassweb.com\/solved\/solved-where-to-put-my-code-plugin-or-functions-php\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-where-to-put-my-code-plugin-or-functions-php\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/jassweb.com\/solved\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[Solved] Where to put my code: plugin or functions.php?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/jassweb.com\/solved\/#website\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"name\":\"JassWeb\",\"description\":\"Build High-quality Websites\",\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/jassweb.com\/solved\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\",\"name\":\"Jass Web\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"contentUrl\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"width\":693,\"height\":132,\"caption\":\"Jass Web\"},\"image\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\",\"name\":\"Kirat\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775193939\",\"contentUrl\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775193939\",\"caption\":\"Kirat\"},\"sameAs\":[\"http:\/\/jassweb.com\"],\"url\":\"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[Solved] Where to put my code: plugin or functions.php? - JassWeb","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:\/\/jassweb.com\/solved\/solved-where-to-put-my-code-plugin-or-functions-php\/","og_locale":"en_US","og_type":"article","og_title":"[Solved] Where to put my code: plugin or functions.php? - JassWeb","og_description":"[ad_1] I would start with this question: Is the functionality related to presentation of content, or with generation\/management of content, or of the site, or of the user identity? If the functionality is not related specifically to presentation of content, then it is squarely within Plugin Territory. This list is long: Modifying core WP filters ... Read more","og_url":"https:\/\/jassweb.com\/solved\/solved-where-to-put-my-code-plugin-or-functions-php\/","og_site_name":"JassWeb","article_published_time":"2022-08-21T16:18:37+00:00","author":"Kirat","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kirat","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jassweb.com\/solved\/solved-where-to-put-my-code-plugin-or-functions-php\/#article","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/solved-where-to-put-my-code-plugin-or-functions-php\/"},"author":{"name":"Kirat","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31"},"headline":"[Solved] Where to put my code: plugin or functions.php?","datePublished":"2022-08-21T16:18:37+00:00","mainEntityOfPage":{"@id":"https:\/\/jassweb.com\/solved\/solved-where-to-put-my-code-plugin-or-functions-php\/"},"wordCount":498,"publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"keywords":["custom-post-types","plugin-development","shortcode","theme-development","widgets"],"articleSection":["WordPress"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/jassweb.com\/solved\/solved-where-to-put-my-code-plugin-or-functions-php\/","url":"https:\/\/jassweb.com\/solved\/solved-where-to-put-my-code-plugin-or-functions-php\/","name":"[Solved] Where to put my code: plugin or functions.php? - JassWeb","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/#website"},"datePublished":"2022-08-21T16:18:37+00:00","breadcrumb":{"@id":"https:\/\/jassweb.com\/solved\/solved-where-to-put-my-code-plugin-or-functions-php\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jassweb.com\/solved\/solved-where-to-put-my-code-plugin-or-functions-php\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jassweb.com\/solved\/solved-where-to-put-my-code-plugin-or-functions-php\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jassweb.com\/solved\/"},{"@type":"ListItem","position":2,"name":"[Solved] Where to put my code: plugin or functions.php?"}]},{"@type":"WebSite","@id":"https:\/\/jassweb.com\/solved\/#website","url":"https:\/\/jassweb.com\/solved\/","name":"JassWeb","description":"Build High-quality Websites","publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jassweb.com\/solved\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/jassweb.com\/solved\/#organization","name":"Jass Web","url":"https:\/\/jassweb.com\/solved\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/","url":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","contentUrl":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","width":693,"height":132,"caption":"Jass Web"},"image":{"@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31","name":"Kirat","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/","url":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775193939","contentUrl":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775193939","caption":"Kirat"},"sameAs":["http:\/\/jassweb.com"],"url":"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/"}]}},"_links":{"self":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/4181","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/comments?post=4181"}],"version-history":[{"count":0,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/4181\/revisions"}],"wp:attachment":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/media?parent=4181"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/categories?post=4181"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/tags?post=4181"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}