If you are not sure if the website you would like to visit is secure, you can verify it here. Enter the website address of the page and see parts of its content and the thumbnail images on this site. None (if any) dangerous scripts on the referenced page will be executed. Additionally, if the selected site contains subpages, you can verify it (review) in batches containing 5 pages.
favicon.ico: markjaquith.wordpress.com - Mark on WordPress  Thoughts on.

site address: markjaquith.wordpress.com redirected to: markjaquith.wordpress.com

site title: Mark on WordPress Thoughts on WordPress

Our opinion (on Monday 28 September 2026 14:46:40 UTC):

GREEN status (no comments) - no comments
After content analysis of this website we propose the following hashtags:


page from cache: 2 days ago
Meta tags:
description=Thoughts on WordPress;

Headings (most frequently used words):

wordpress, for, your, site, thank, you, response, on, and, to, making, scoutdocs, git, tips, of, mark, page, handling, php, plugins, using, wp, how, the, caching, solution, dev, test, uploads, lots, about, jetpack, driver, laravel, valet, links, v3, build, tools, react, lessons, learned, outsourcing, old, versions, in, plugin, updating, cli, configuring, environments, simple, deploys, fixed, yoast, seo, sitemaps, large, best, hosts, 2016, hosting, pantheon, introducing, cache, buddy, companion, ask, anything, don, use, template_redirect, load, an, alternative, template, file, posts, navigation, thoughts, credentials, production, is, choice, starter, developer, friendly, intermediate, professional, enterprise, picked, powered, deployments, command, line, deployment, live, keep, databases, fresh, no, special, config, setup, problems, sometimes, notices, cause, segfaults, have, own,

Text of the page (most frequently used words):
the (261), and (200), you (175), that (141), #wordpress (135), for (115), this (111), your (102), site (74), plugin (55), php (54), can (54), with (53), but (50), have (48), code (45), are (42), what (41), git (41), was (40), not (37), they (36), their (36), page (34), all (32), mark (31), will (31), like (30), just (30), about (29), react (29), file (28), from (28), cache (26), one (26), required (25), sites (24), use (24), plugins (24), which (24), local (24), when (23), has (23), comment (22), need (22), development (22), pantheon (22), scoutdocs (22), hosting (21), now (20), them (20), these (20), get (20), out (20), would (20), function (19), some (19), more (19), test (19), 2018 (19), using (18), into (18), time (18), _env (18), define (18), jaquith (17), work (17), config (17), live (17), name (16), custom (16), run (16), want (16), start (16), version (16), update (16), services (16), content (15), good (15), don (15), had (15), url (15), new (15), simple (15), sitemap (15), see (14), user (14), also (14), caching (14), could (14), solutions (14), things (14), make (14), dev (14), tools (14), how (14), other (13), very (13), lot (13), been (13), production (13), return (12), web (12), cookies (12), then (12), might (12), back (12), cli (12), even (12), else (11), there (11), issue (11), add (11), because (11), dynamic (11), much (11), really (11), well (11), here (11), server (11), let (11), environments (11), versions (11), com (10), doesn (10), files (10), array (10), deploy (10), hosts (10), developer (10), seo (10), 20k (10), 10k (10), components (10), email (9), should (9), public (9), logged (9), post (9), making (9), database (9), something (9), being (9), example (9), uploads (9), month (9), environment (9), www (9), host (9), needed (9), data (9), yoast (9), outsourcing (9), build (9), icon (9), component (9), website (8), view (8), load (8), its (8), than (8), sure (8), running (8), take (8), links (8), instead (8), know (8), error (8), down (8), first (8), line (8), those (8), command (8), great (8), siteground (8), many (8), project (8), xml (8), commit (8), updates (8), private (8), github (7), may (7), ask (7), still (7), people (7), way (7), available (7), before (7), every (7), done (7), set (7), static (7), seconds (7), next (7), used (7), spend (7), recommend (7), testing (7), terminus (7), option (7), commands (7), link (7), covered (7), above (7), please (7), over (7), someone (7), credentials (7), echo (7), title (7), short (7), redux (7), write (6), sign (6), create (6), posts (6), february (6), redirect (6), going (6), after (6), runs (6), made (6), main (6), output (6), little (6), speed (6), users (6), information (6), javascript (6), pages (6), experience (6), open (6), give (6), based (6), solution (6), where (6), redis (6), clear (6), bit (6), put (6), age (6), called (6), access (6), long (6), check (6), found (6), around (6), plans (6), flow (6), focuses (6), too (6), reach (6), complex (6), index (6), process (6), rewrite (6), once (6), through (6), search (6), were (6), stripe_settings (6), hidden (6), characters (6), unicode (6), june (6), task (6), learned (6), app (6), valet (6), log (5), already (5), include (5), same (5), isn (5), template_redirect (5), add_action (5), last (5), twitter (5), idea (5), varnish (5), nginx (5), buddy (5), sets (5), support (5), front (5), who (5), means (5), works (5), doing (5), following (5), between (5), keep (5), less (5), cookie (5), read (5), powerful (5), urls (5), setting (5), minutes (5), control (5), yoursite (5), env (5), tool (5), repo (5), enterprise (5), staging (5), higher (5), january (5), submit (5), description (5), select (5), budget (5), thank (5), response (5), conversation (5), specializes (5), security (5), optimization (5), customization (5), migrations (5), didn (5), sitemap_index (5), while (5), interface (5), timeout (5), wrong (5), few (5), bad (5), wp_environment (5), updated (5), list (5), passes (5), coding (5), wanted (5), series (5), sharing (5), accept (5), blog (4), older (4), easy (4), my_callback (4), problem (4), reason (4), stop (4), best (4), think (4), questions (4), super (4), total (4), 2015 (4), honestly (4), always (4), views (4), non (4), caches (4), changes (4), takes (4), five (4), times (4), longer (4), though (4), built (4), store (4), makes (4), any (4), tips (4), own (4), low (4), errors (4), likely (4), segfaults (4), does (4), isset (4), until (4), 000 (4), directory (4), day (4), right (4), each (4), http (4), home (4), false (4), two (4), rewriting (4), giving (4), remote (4), deployments (4), engine (4), pagely (4), 2016 (4), method (4), client (4), did (4), money (4), started (4), since (4), range (4), professional (4), choice (4), save (4), off (4), intermediate (4), gogeek (4), working (4), hard (4), sitemaps (4), without (4), engines (4), wait (4), settings (4), increased (4), chunks (4), mode (4), defined (4), quickly (4), txt (4), machine (4), div (4), min_version (4), bidirectional (4), learn (4), syntax (4), old (4), better (4), grunt (4), browserify (4), loading (3), manage (3), subscribe (3), account (3), 2014 (3), redirects (3), theme (3), add_filter (3), anything (3), break (3), alternative (3), template (3), hook (3), quick (3), benefits (3), batcache (3), march (3), customizations (3), commenters (3), served (3), object (3), small (3), toolbar (3), form (3), having (3), registration (3), uses (3), readable (3), years (3), configured (3), everyone (3), taking (3), traffic (3), share (3), why (3), change (3), wouldn (3), worth (3), only (3), individual (3), skip (3), layer (3), happens (3), given (3), bunch (3), mostly (3), level (3), handler (3), trouble (3), show (3), modify (3), nothing (3), reliably (3), handling (3), filesystem (3), consider (3), problems (3), site_server (3), yes (3), nice (3), getting (3), step (3), stuff (3), goes (3), latest (3), yourenv (3), deployment (3), most (3), developers (3), service (3), picks (3), went (3), affiliate (3), three (3), directly (3), whole (3), shared (3), love (3), flows (3), deploys (3), container (3), specific (3), features (3), options (3), look (3), favorite (3), customers (3), asked (3), ecosystem (3), kind (3), happy (3), everything (3), srv (3), eval (3), matter (3), needs (3), slow (3), high (3), maintenance (3), pull (3), able (3), question (3), complicated (3), result (3), commits (3), __dir__ (3), bisect (3), granularity (3), state (3), cannot (3), class (3), admin_notices (3), deactivate (3), args (3), your_plugin_requirements_check (3), installs (3), feel (3), week (3), thoughts (3), outsource (3), partners (3), spending (3), lessons (3), unit (3), rest (3), api (3), adds (3), apps (3), jsx (3), building (3), webpack (3), copy (3), menu (3), jetpack (3), driver (3), missing (3), laravel (3), comments (2), bar (2), report (2), subscribed (2), subscribers (2), template_ (2), includes (2), template_include (2), original_template (2), some_condition (2), some_path (2), lead (2), objects (2), browser (2), queried (2), note (2), mean (2), personal (2), google (2), deal (2), mail (2), decided (2), looks (2), anonymous (2), visitor (2), recreate (2), currently (2), buddypress (2), friend (2), default (2), won (2), useful (2), percentage (2), filled (2), normal (2), cached (2), magic (2), again (2), paths (2), difference (2), miss (2), hit (2), faster (2), second (2), cpu (2), eventually (2), hits (2), top (2), edit (2), feature (2), active (2), community (2), examples (2), outside (2), html (2), future (2), part (2), completely (2), flexible (2), become (2), april (2), debug (2), disable_pantheon_error_handler (2), seen (2), cause (2), hours (2), fixed (2), sometimes (2), crops (2), upload (2), help (2), lots (2), appropriate (2), db_name (2), db_user (2), db_password (2), db_host (2), auth_key (2), secure_auth_key (2), logged_in_key (2), nonce_key (2), auth_salt (2), secure_auth_salt (2), logged_in_salt (2), nonce_salt (2), remove (2), header (2), issues (2), automatically (2), cache_host (2), aren (2), documentation (2), setup (2), my_pantheon_varnish_caching (2), product (2), is_product (2), 120 (2), pantheon_varnish_max_age (2), including (2), publish (2), easily (2), clone (2), push (2), master (2), anywhere (2), deploying (2), drupal (2), marketplace (2), ability (2), multiple (2), tiers (2), cheap (2), november (2), advice (2), categories (2), offer (2), value (2), picked (2), four (2), written (2), excellent (2), plan (2), tier (2), starts (2), 100 (2), taken (2), branch (2), clients (2), awesome (2), payment (2), solid (2), free (2), advanced (2), friendly (2), perks (2), upgrade (2), company (2), choose (2), starter (2), fit (2), exhaustive (2), tell (2), distinct (2), processes (2), benefit (2), date (2), reliable (2), switch (2), location (2), xsl (2), cron (2), generation (2), bin (2), wpseo_sitemaps (2), build_root_map (2), happen (2), generated (2), meant (2), increasing (2), reasonable (2), various (2), figured (2), simply (2), fixing (2), recently (2), came (2), broken (2), breaks (2), methods (2), optional (2), hash (2), ready (2), ssh (2), tedious (2), reset (2), modifications (2), ways (2), current (2), system (2), capistrano (2), anymore (2), clifton (2), griffin (2), hey (2), markjaquith (2), stripe (2), digital (2), gateway (2), situations (2), connecting (2), prevent (2), option_gravityformsaddon_gravityformsstripe_settings (2), api_mode (2), tells (2), section (2), die (2), keeping (2), replace (2), connected (2), flywheel (2), configuring (2), field (2), within (2), broke (2), revisions (2), asking (2), whether (2), revision (2), identify (2), configure (2), hosted (2), requirements (2), raw (2), esc_html (2), wp_version_notice (2), version_compare (2), __wp_at_least (2), true (2), wp_passes (2), php_version_notice (2), __php_at_least (2), php_passes (2), your_prefix_requirements_check (2), contains (2), text (2), interpreted (2), compiled (2), differently (2), appears (2), below (2), review (2), editor (2), reveals (2), initialize (2), autoloader (2), __file__ (2), itself (2), admin (2), saying (2), minimum (2), checks (2), call (2), okay (2), writing (2), namespaces (2), gives (2), closures (2), require (2), supporting (2), increases (2), specify (2), rewrote (2), away (2), our (2), knowing (2), valuable (2), amazon (2), joy (2), maze (2), additionally (2), months (2), looked (2), ran (2), another (2), morning (2), via (2), cdn (2), individuals (2), repository (2), row (2), single (2), mistake (2), hear (2), saved (2), nested (2), refactor (2), yet (2), hate (2), functionality (2), userstatus (2), wrote (2), tried (2), tutorials (2), learning (2), feels (2), beyond (2), handles (2), order (2), continuing (2), talking (2), tweaking (2), comfortable (2), npm (2), runner (2), find (2), redirected (2), item (2), pointed (2), destination (2), fast (2), screen (2), summer (2), today (2), photon (2), myself (2), technique (2), collapse, subscriptions, reader, join, 053, navigation, effect, interfere, distinction, remember, hooked, odd, bugs, filter, exit, popular, query, instantiated, sent, somewhere, place, full, knowledge, ama, treat, searcher, grepper, topic, uniquely, qualified, address, forces, opposed, allows, depth, discussions, talk, topics, try, experiment, zach, holman, tracker, purpose, splendid, appear, reading, supported, hoping, meta, widget, commerce, cms, significant, number, massively, requests, luck, customize, cases, subscriber, contributor, anyway, authors, editors, administrators, viewers, commenter, commented, maybe, requires, signed, prompt, kicker, unknown, optimized, plus, relevant, backend, exist, solving, strip, serve, moved, techniques, calling, minimal, effort, delivered, 002, hundred, slower, connection, cycles, snowball, under, heavy, connections, during, situation, downside, alters, customized, privileges, returning, helpfully, forms, such, hold, triggered, rules, password, infrequently, commenting, smaller, dreaded, fall, generate, common, cdns, generates, later, request, cloudflare, akamai, fastcgi, transformed, crank, nature, challenge, introducing, companion, stops, bubbling, core, lies, blank, disable, causes, pantheon_environment, set_error_handler, produce, logs, tracking, causing, reproducible, weird, ticket, suggest, e_notice, notices, distributed, trivial, scale, adding, linux, containers, directories, folder, usually, partitioned, approaching, mind, count, towards, limit, 1000, splitting, strained, gotchas, hardcode, values, fill, db_port, keys, salts, variables, pretty, cool, huh, domains, leading, preg_replace, _server, http_host, wp_home, wp_siteurl, trick, play, beware, redirection, variants, massage, solidified, siteurl, boom, globals, redis_server, port, cache_port, auth, cache_password, apparently, download, special, unclear, is_user_logged_in, is_home, get_query_var, paged, elseif, function_exists, absint, max, rid, invalidating, standard, headers, obey, developing, complete, workflow, databases, fresh, blogname, usage, bitbucket, powered, entry, quite, welcome, dream, automatic, justify, expense, encourage, thought, answer, asks, regarded, fitting, considered, programs, offered, direct, earn, course, stand, recommendations, either, 2017, favorites, 2006, dedicated, targeted, focus, big, brands, folks, partner, vps, 499, neutrino, staff, retainer, got, innovative, technology, market, appreciate, dead, multidev, lets, spin, sandboxed, send, testers, isolation, merged, 2010, entirely, established, themself, guarantee, automated, migration, existing, grow, offers, unlimited, hired, she, maximum, efficiency, companies, tailored, tremendously, respected, win, retain, business, incredibly, target, picking, kinds, seasoned, frequently, choices, truly, bounty, comparison, comparisons, approach, loads, instantly, kept, background, install, separate, thanks, permanent, sitemap_n, final, path, point, created, resolving, usr, took, job, digging, determined, arbitrary, intensive, requesting, unreasonable, expect, penalize, rankings, irresponsibly, leaving, potentially, abuse, illustrates, face, accumulate, 500, enough, 300, decade, helpful, providing, priority, frustrated, confused, fine, largest, highest, table, contents, prevented, finding, large, bonus, points, roll, previous, case, type, chmod, bash, sshing, script, redirectmatch, 404, apache, htaccess, svn, deny, implement, important, ensure, leak, sensitive, depend, wipe, mistakenly, fetch, origin, fail, naughty, sync, simplest, root, checkout, massive, overkill, maintaining, clifgriffin, weeks, localdev, rely, procedures, explicit, impossible, screw, stressful, pattern, hide, analytics, downloads, protects, against, charged, transactions, purchasing, products, constant, along, calls, gitignore, file_exists, defines, opt, destroyed, his, accidentally, different, playing, tweaks, risking, breaking, mamp, pro, granular, messages, slurps, grabs, writes, steps, instance, loops, message, references, lump, eighteen, known, past, jumps, efficiently, pinpoint, caused, updater, updating, get_bloginfo, contact, phpversion, deactivate_plugins, plugin_basename, foreach, __construct, unset, classes, dirname, lib, rude, goal, move, ancient, wp_die, display, notice, met, minimums, reached, bootstrapper, initializes, compatible, careful, syntactic, goodness, typing, named, handlers, organize, simplify, array_map, traits, dereferencing, guaranteed, availability, late, binding, nowdoc, __dir, economics, force, hand, seemingly, selfish, reasons, unlearn, equivalents, branches, burden, released, year, supports, extreme, redoing, yourself, exactly, constitutes, success, delegation, sense, software, regretted, solved, slog, however, upfront, tasks, throw, gotten, figuring, realizations, sooner, waste, retained, relating, glad, experienced, singular, eternity, lost, confusing, samples, initial, spare, horrifying, realization, delayed, several, rolled, sleeves, almost, original, remained, contractors, realized, forget, quality, despite, vain, reshuffling, lacking, overall, terrible, rather, horrifyingly, admitted, wasn, looking, hiring, him, spaces, tabs, spent, nebulously, unlikely, match, assumptions, mine, odds, happened, raised, beneficial, limited, slept, hour, reviewing, direction, workday, visions, scanning, coffee, brewed, twirling, invisible, moustache, muttering, weekly, cover, stored, securely, cloud, https, global, groups, notifications, handled, delivery, recipients, decline, employees, employee, handbook, living, attachments, third, party, teaches, taught, reusable, originally, envisioned, circumstances, ugh, certainly, altogether, beforerow, onclickothericon, othericon, early, accepted, restrictive, prefix, clickable, property, passed, font, clicked, worked, onclickicon, unwieldy, frustration, converting, structure, props, forwarded, layers, wish, dave, ceddia, earlier, solves, letting, deeply, worse, events, upwards, username, profileform, profile, event, forwarding, chain, stays, tedium, pageheader, navbar, parent, downstream, renders, except, forward, children, actually, caring, themselves, inevitably, pass, explore, storing, application, commonly, creator, skipped, probably, starting, fleshed, complexity, nearly, physically, itchy, jump, gun, stuck, frustrating, toy, overwhelmed, interactive, slowly, refactoring, understood, ended, creating, lesson, felt, straightforward, weekend, incredible, momentum, behind, rich, libraries, educational, resources, plain, central, premise, controller, inextricably, linked, weirdness, quasi, fun, iteration, none, became, deliver, clean, uploading, leave, bounds, decide, strings, etc, began, tooling, becoming, listening, productivity, podcasts, productive, sucked, trap, putting, amount, pay, dividends, mistakes, often, confidence, builds, bundler, modular, gets, pulled, together, executable, bundle, deliberating, chose, avoid, haven, easier, side, scripts, involves, bizarre, wonderful, dump, middle, exquisitely, browsers, agree, containing, transpiled, regular, involve, babel, gulp, uglify, uglifyify, decisions, fierce, advocates, july, announce, soon, stay, tuned, hover, pointing, grab, chosen, visits, click, actions, clipboard, elsewhere, release, indicator, screens, items, hovered, reveal, slug, remembering, shorten, draft, allow, entire, editing, received, survey, responses, 800, interesting, cluttered, creation, specials, aspx, season, _utm_source, internal, sale, celebrate, transition, teenager, added, enhancements, pushed, repointing, tomorrow, org, 339th, 2020, normally, codebase, image, laboriously, clutter, thing, tricky, configs, couldn, routing, images, accelerator, formerly, mac, consulting, tempus, fugit, hub, online, presences, provider, publishing, platform, freelance, close, primary,


Text of the page (random words):
ns of wordpress are released about three times a year and wordpress itself supports php versions all the way back to 5 2 4 what does this mean for you as a plugin developer honestly many plugin developers spend too much time supporting old versions of wordpress and really old versions of php it doesn t have to be this way you don t need to support every version of wordpress and you don t have to support every version of php feel free to do this for seemingly selfish reasons supporting old versions is hard you have to unlearn new wordpress and php features and use their older equivalents or even have code branches that do version feature checks it increases your development and testing time it increases your support burden economics might force your hand here a bit you can t very well even in 2018 require that everyone be running php 7 1 and the latest version of wordpress but consider the following 97 of wordpress installs are running php 5 3 or higher this gives you namespaces late static binding closures nowdoc __dir __ and more 88 of wordpress installs are running php 5 4 or higher this gives you short array syntax traits function array dereferencing guaranteed echo syntax availability this access in closures and more you get even more things with php 5 5 and 5 6 64 of installs are running 5 6 or higher but a lot of the syntactic goodness came in 5 3 and 5 4 with very few people running versions less than 5 4 so stop typing array stop writing named function handlers for simple array_map uses and start using namespaces to organize and simplify your code okay so how i recommend that your main plugin file just be a simple bootstrapper where you define your autoloader do a few checks and then call a method that initializes your plugin code i also recommend that this main plugin file be php 5 2 compatible this should be easy to do just be careful not to use __dir__ in this file you should check the minimum php and wordpress versions that you are going to support and if the minimums are not reached have the plugin not initialize you don t want syntax errors display an admin notice saying which minimum version was not met deactivate itself optional do not die or wp_die that s rude and a bad user experience your goal here is for them to update wordpress or ask their host to move them off an ancient version of php so be kind here is what i use view code on github this file contains hidden or bidirectional unicode text that may be interpreted or compiled differently than what appears below to review open the file in an editor that reveals hidden unicode characters learn more about bidirectional unicode characters show hidden characters php plugin name your plugin name include dirname __file__ lib requirements check php your_plugin_requirements_check new your_prefix_requirements_check array title your plugin name php 5 4 wp 4 8 file __file__ if your_plugin_requirements_check passes 1 load classes or define an autoloader 2 initialize your plugin unset your_plugin_requirements_check view raw plugin php hosted with by github this file contains hidden or bidirectional unicode text that may be interpreted or compiled differently than what appears below to review open the file in an editor that reveals hidden unicode characters learn more about bidirectional unicode characters show hidden characters php class your_prefix_requirements_check private title private php 5 2 4 private wp 3 8 private file public function __construct args foreach array title php wp file as setting if isset args setting this setting args setting public function passes passes this php_passes this wp_passes if passes add_action admin_notices array this deactivate return passes public function deactivate if isset this file deactivate_plugins plugin_basename this file private function php_passes if this __php_at_least this php return true else add_action admin_notices array this php_version_notice return false private static function __php_at_least min_version return version_compare phpversion min_version public function php_version_notice echo div class error echo p the esc_html this title plugin cannot run on php versions older than this php please contact your host and ask them to upgrade p echo div private function wp_passes if this __wp_at_least this wp return true else add_action admin_notices array this wp_version_notice return false private static function __wp_at_least min_version return version_compare get_bloginfo version min_version public function wp_version_notice echo div class error echo p the esc_html this title plugin cannot run on wordpress versions older than this wp please update wordpress p echo div view raw requirements check php hosted with by github reach out on twitter and let me know what methods you use to manage php and wordpress versions in your plugin do you need wordpress services mark runs covered web services which specializes in custom wordpress solutions with focuses on security speed optimization plugin development and customization and complex migrations please reach out to start a conversation back thank you for your response name required email required website budget required select an option 5k 10k 10k 20k above 20k project description required submit δ comment february 19 2018 february 21 2018 mark jaquith updating plugins using git and wp cli now that you know how i deploy wordpress sites and how i configure wordpress environments what about the maintenance of keeping a wordpress site s plugins up to date since i m using git i cannot use wordpress built in plugin updater on the live site and i wouldn t want to if a plugin update goes wrong my live site could be in trouble the simple way to update all your plugins from a staging or local development site is to use wp cli wp plugin update all git commit am update all plugins wp content plugins that works i used to do that i don t do that anymore why granularity one of the benefits of using version control like git is that when things go wrong you can pinpoint when they went wrong and identify what code caused the issue git has a great tool called bisect that takes a known good state in the past and a current broken state and then jumps around between revisions efficiently asking you to report whether that revision is good or bad then it tells you what revision broke your site if you lump all your plugin updates into one commit you won t get that granularity you ll likely get the git bisect result of great one of eighteen plugins i updated was the issue that doesn t help here s how you do it with granularity for plugin in wp plugin list update available field name do wp plugin update plugin git add a wp content plugins plugin git commit m update plugin plugin done this code loops through plugins with updates available updates each one and commits it with a message that references the plugin being updated great now git bisect will be able to tell you which plugin update broke your site and what if you can only run wp cli commands from within a vm and git commands from your local machine for instance if you re using my favorite tool local by flywheel you have to ssh into the site s container to issue wp cli commands but from within that container you might not have git configured like it is on your host machine so what you can do is break the process into two steps on the vm run this wp plugin list update available field name plugins txt wp plugin update all that grabs a list of plugins with updates and writes them to a file plugins txt and then updates all the plugins and then on your local machine run this while read plugin do git add a wp content plugins plugin git commit m update plugin plugin done plugins txt that slurps in that list of updated plugins and does a distinct git add and git commit for each when that s done remove plugins txt all your plugins are quickly updated with wp cli but you get nice granular git commits and messages do you need wordpress services mark runs covered web services which specializes in custom wordpress solutions with focuses on security speed optimization plugin development and customization and complex migrations please reach out to start a conversation back thank you for your response name required email required website budget required select an option 5k 10k 10k 20k above 20k project description required submit δ comment february 12 2018 march 7 2018 mark jaquith tips for configuring wordpress environments many wordpress hosts will give your site a staging environment you can also use tools like local by flywheel or mamp pro to run a local dev version of your site these are great ways of testing code changes playing with new plugins or making theme tweaks without risking breaking your live production site here is my advice for working with different wordpress environments handling credentials the live production version of your site should be opt in that is your site s git repo should not store production credentials in wp config php you don t want something to happen like when this developer accidentally connected to the production database and destroyed all the company data on his first day instead of keeping database credentials in wp config php have wp config php look for a local config php file replace the section that defines the database credentials with something like this if file_exists __dir__ local config php include __dir__ local config php else die local config php not found make sure you add local config php to your gitignore so that no one commits their local version to the repo on production you ll create a local config php with production credentials on staging or development environments you ll create a local config php with the credentials for those environments production is a choice right after the section that calls out local config php put something like this if defined wp_environment define wp_environment development the idea here is that there will always be a wp_environment constant available to you that tells you what kind of environment your site is being run in in production you will put this in local config php along with the database credentials define wp_environment production now in your theme or your custom plugins or other code you can do things like this if production wp_environment add_filter option_gravityformsaddon_gravityformsstripe_settings function stripe_settings stripe_settings api_mode live return stripe_settings else add_filter option_gravityformsaddon_gravityformsstripe_settings function stripe_settings stripe_settings api_mode test return stripe_settings this bit of code is for the easy digital downloads stripe gateway plugin it makes sure that on the production environment the payment gateway is always in live mode and the anywhere else it is always in test mode this protects against two very bad situations connecting to live services from a test environment which could result in customers being charged for test transactions and connecting to test services from a live environment which could prevent customers from purchasing products on your site you can also use this pattern to do things like hide google analytics on your test sites or make sure debug plugins are only active on development sites more on that in a future post don t rely on complicated procedures step 34 make sure you go into the stripe settings and switch the site to test mode on your local test site make these things explicit in code make it impossible to screw it up and working on your sites will become faster and less stressful do you need wordpress services mark runs covered web services which specializes in custom wordpress solutions with focuses on security speed optimization plugin development and customization and complex migrations please reach out to start a conversation back thank you for your response name required email required website budget required select an option 5k 10k 10k 20k above 20k project description required submit δ comment february 5 2018 february 5 2018 mark jaquith development environments localdev simple wordpress deploys using git a few weeks back clifton griffin asked me a question about deploying wordpress sites markjaquith hey mark quick question do you still use and recommend capistrano clifton griffin clifgriffin january 3 2018 i do not use capistrano for deployments anymore for one simple reason it was massive overkill for most of the sites i manage and maintaining it was not worth the benefit my current deployment system for wordpress sites is simple i use git i m already using git for version control of the site s code so using git for deployments is not that much more work there are a few ways to do this but the simplest way is to just make your site root a git checkout of your site files then if your server has read access to your git remote you can run some git commands to sync everything here are your options git pull simple but might fail if someone naughty has made code modifications on the server git fetch git reset hard origin master the hard reset method will wipe any local modifications that someone has mistakenly made but wait before you implement this it is very important that you ensure that your server s git directory is not readable as it might be able to leak sensitive information about your site s code how you do this will depend on what web server you re running in nginx i do the following location ht a z git svn deny all in apache you could put the following in your htaccess file redirectmatch 404 git sshing into your server every time is tedious so let s script that bin bash ssh example com cd srv www example com git pull save that to deploy sh in your git repo run chmod x deploy sh and commit it to the repo now when you re ready to deploy the site just type deploy sh and the public site will pull down the latest changes from your main git remote bonus points if you make deploy sh take an optional commit hash so you can also use this tool to roll back to a previous hash in case a commit goes wrong this method has served me well for years and has required no maintenance what methods are you using for wordpress code deploys do you need wordpress services mark runs covered web services which specializes in custom wordpress solutions with focuses on security speed optimization plugin development and customization and complex migrations please reach out to start a conversation back thank you for your response name required email required website budget required select an option 5k 10k 10k 20k above 20k project description required submit δ comment january 30 2018 january 30 2018 mark jaquith how i fixed yoast seo sitemaps on a large wordpress site one of my covered web services clients recently came to me with a problem yoast seo sitemaps were broken on their largest highest traffic wordpress site yoast seo breaks your sitemap up into chunks on this site the individual chunks were loading but the sitemap index its table of contents would not load and was ...
Images from subpage: "markjaquith.wordpress.com/tag/web-hosts/" Verify
Images from subpage: "markjaquith.wordpress.com/tag/wp-engine/" Verify
Images from subpage: "markjaquith.wordpress.com/2015/04/13/wordpress-on-pantheon/... " Verify
Images from subpage: "markjaquith.wordpress.com/2015/03/27/cache-buddy/" Verify
Images from subpage: "markjaquith.wordpress.com/tag/batcache/" Verify

Verified site has: 46 subpage(s). Do you want to verify them? Verify pages:

1-5 6-10 11-15 16-20 21-25 26-30 31-35 36-40 41-45 46-46


The site also has references to the 2 subdomain(s)

  wordpress.com  Verify   subscribe.wordpress.com  Verify


Top 50 hastags from of all verified websites.

Supplementary Information (add-on for SEO geeks)*- See more on header.verify-www.com

Header

HTTP/1.1 301 Moved Permanently
Server nginx
Date Fri, 21 Aug 2026 02:41:19 GMT
Content-Type text/html
Content-Length 162
Connection keep-alive
Location htt????/markjaquith.wordpress.com/
Alt-Svc clear
Server-Timing a8c-cdn, dc;desc=cdg, cache;desc=BYPASS;dur=1.0
HTTP/2 200
server nginx
date Fri, 21 Aug 2026 02:41:19 GMT
content-type text/html; charset=UTF-8
vary Accept-Encoding
last-modified Thu, 20 Aug 2026 06:35:23 GMT
cache-control max-age=141, must-revalidate
x-nananana Batcache-Hit
x-hacker Want root? Visit join.a8c.com/hacker and mention this header.
host-header WordPress.com
link <htt????/public-api.wordpress.com/wp-json/?rest_route=/sites/markjaquith.wordpress.com>; rel= htt????/api.w.org/
link <htt????/wp.me/56>; rel=shortlink
vary accept, content-type, cookie
content-encoding gzip
x-ac 5.ams _dfw STALE
alt-svc clear
strict-transport-security max-age=31536000
server-timing a8c-cdn, dc;desc=ams, cache;desc=STALE;dur=2.0

Meta Tags

title="Mark on WordPress Thoughts on WordPress"
charset="UTF-8"
name="viewport" content="width=device-width, initial-scale=1"
name="robots" content="max-image-preview:large"
name="generator" content="WordPress.com"
property="og:type" content="website"
property="og:title" content="Mark on WordPress"
property="og:description" content="Thoughts on WordPress"
property="og:url" content="htt????/markjaquith.wordpress.com/"
property="og:site_name" content="Mark on WordPress"
property="og:image" content="htt????/markjaquith.wordpress.com/wp-content/uploads/2018/02/cropped-headshot13.jpg?w=200"
property="og:image:width" content="200"
property="og:image:height" content="200"
property="og:image:alt" content=""
property="og:locale" content="en_US"
property="fb:app_id" content="249643311490"
name="twitter:creator" content="@markjaquith"
name="twitter:site" content="@markjaquith"
name="description" content="Thoughts on WordPress"
name="msapplication-TileImage" content="htt????/markjaquith.wordpress.com/wp-content/uploads/2018/02/cropped-headshot13.jpg?w=270"
itemprop="width" content="596"
itemprop="height" content="333"
itemprop="width" content="596"
itemprop="height" content="333"
id="bilmur" property="bilmur:data" content="" data-provider="wordpress.com" data-service="simple" data-site-tz="America/New_York" data-custom-props='{"enq_jquery":"1","logged_in":"0","wptheme":"pub\/isola","wptheme_is_block":"0"}'

Load Info

page size321636
load time (s)0.059811
redirect count1
speed download1134932
server IP 192.0.78.12
* all occurrences of the string "http://" have been changed to "htt???/"