H2S4: Architectural decisions for WordPress

H3S1: Plugins | WordPress:

The simplicity of installation of WordPress plugins, via the main | menu menu | option “Plugins”, approx 6th from the top #, ==> “add new”, may delude you from the fact, that the decision, of which plugins to install, is analogous to the decisions, that $250k+ CTOs and software architects make, after, frequently, months of analysis, of both the underlying | technology, as well as application fit, with 1) the existing codebase, 2) functionality, including overlaps, redundancies, and incompatibilities. Remember, no matter how great a technology sounds “on paper“, it’s useless, to you, if it’s incompatible, like trying to install Garage Band # on Windows.

Here is a quote, from a paper that I wrote for local architect Mark d’Alba, about the integration of Revit, a softmain, with Enscape, a softside: Scruton et al <a-r, ‘22>: The types of architecture are established not by architects but by society, according to the needs of its different institutions. Society sets the goals and assigns to the architect the job of finding the means of achieving them. Yakun: My first 30 minutes impression of Enscape is that it’s built as the highest layer of an architect’s stack, which terminates in a presentation to a client. At 29:49 <Burival, a-r, 16 July 2021>, the user has to switch windows from Enscape window to Revit window,  in order to make an adjustment to visibility settings, which is a foundational workflow feature. This is analogous to the level of integration between Adobe After Effects and Sony Vegas, which are totally incompatible in workflow, but compatible in output of the final render file; ie an mp4 that is generated by AAE can be imported to Sony Vegas for further post-production, and AAE, being a more complex software with higher rendering times, is used primarily for special scenes that require special treatment. Subsequently, at 30:06, Burival has to render the workflow edit from Revit in order to propagate the change in wall visibility; however, it looks like this change is automatically-updated in Enscape in the real-time video # Burival: “To add on that, as mentioned, we could also use design options. Design options can be accessed the most conveniently up here in the manage tab, and down here, under design options. If I want to apply a design option, I have to create a new option set.“ You can connect those, uh design options, to a 3d view as well, and once again Enscape is going to read that and is going to display them correctly. Post, Yakun, via MIC: <ch-41> Architecture is the art or practice of applying intelligent functional | design to buildings, not only for aesthetics, but for the human purposes of using that building # Therefore, architecture is one manifestation of human-centered design. The architect has to be concerned not only with the form of the building, but also have conversations with the future-intended users of that building in order to determine their purpose and to make sure that the design and layout are coherent with those purposes.

From these insights #, a few principles become obvious: 1) software made by the same firm, or its close associates, as evidenced by, for example, direct hyperlinks, inter-websites, are more | likely to be compatible; in the context of WordPress, we will try to use plugins made by Automattic, the parent company of WordPress, which is worth >$3-bn, according to its 2019 Series D, 2) the more plugins that are installed, and the more pervasive the mean effect of each plugin, the more likely we are, to face a critical | incompatibility; however, the range of what is safe, again, depends on whether we are using a narrow or broad | set 3) related to 2, the more total | software we have running, as measured by the total | lines of code, the more testing load <r: WP.MIC-Blog H2S1>we must establish, and this scales exponentially 4) only decisions are are thoroughly researched, and tested, should be pushed to live.

H3S2: Staging vs live:

In general, I am a qualified web developer to work without a staging server, but for boutique | clients, the possibility of implementing staging can be discussed. Nevertheless, the principle of adding an extra | layer of testing for features that are to be pushed to visitors should be established:

Meyers<a-r, ’22>: To put it simply, a staging site is a clone of your live website. It enables you to test any changes or major new features that you plan to implement in a secure environment. Developers typically use staging sites to test changes and fix | bugs before going to production.

There is no additional hardware cost of running a staging | site, as we can simply # create a delineated | hosting instance, which most quality | hosts should allow for, on a subdomain, on the primary | domain that you already own.

H3S3: Separate menu and footer for in/out:

I would like to set a site-wide menu header, as well as footer, but I need to figure out how to disable these for logged out users. In the aam.mic build, I will set a different | footer for logged-in users, to demonstrate that this is possible. 

H4S1: Subdomain menu differentiation setup:

WordPress themes do not allow for more than 1 menu to be displayed, site wide, in each of the 3 menu locations: top, footer, and sidebar. That means, only 3 menus total can be held #, and one displayed, each, in each of 3 locations. H5S1: Compatibility x menus: under the principle of compatibility<//x-ref>, if any part of the site requires a different menu, than the rest of the site, then this site, should be a separate site, and server, hosted on, then, a different subdomain. H5S2: Common accounts: Hu: Any aspect of a site that requires users to be logged in, must be on the same server, and database, and, therefore, must have the same menu. 

H4S2: CSS insertion for complete lockdown sites:

Hu: Site owners that are ok with a featureless homepage #alpha, have access to a sufficiently simple solution to the menu differentiation problem, but keep in mind, all logged in users, must still see the same menu, even if certain pages are conditionally restricted, and this limits the scalability of user classification #

H4S3: Cross-domain redirects:

Websites that # send users to a separate domain for logged-in experience, must set a log-out redirect cross-domain, back to the out-site or, alternatively, to the log-in page. The log-in redirect will be to the same domain #, and users can be directed to an off-domain login page, from the out-site. 

H4S4: Internal page directory for logged-in: 

Hu: Another option # is for websites to remain same domain, and not have 2 different wp-admin backends, is to restrict menu addition for in-users, and provide the in-directory, in an indexed form, on a specific page, that can only be seen by the role(s) of logged-in users. 

H4S5: Pagination and access among logged-in clients: 

Hu: Many law firms, real estate agents, and doctors, who have individual patients, need not only differentiate among logged in and out, broadly, but also, restrict access, only, to admin, and that specific user. As the user list increases, managing access will overload if restriction for each user is manual; we need to be able to restrict pages to all, by default, and have “turn on” setting, only, for that specific user. // research how to do this? H5S1: Private pages directory, per user:  In addition to any general pages that any logged in users, or clients, may be able to see, they may also need, which is updated, a private directory that is only accessible to them. This directory needs to be accessible, only to these users, and could even #, serve as their homepage. Websites should set a log-in redirect, on a user specific basis, to this directory, and ask these users, generally, to bookmark that page, because there won’t be able way # to return to that page via a link, since all links, would have to be set individually, and WordPress does not enable this. 

H4S6: Per-content private distribution: 

Hu: Another option # is to distribute content on a per content basis; the default restriction problem solution still needs to be in place, but in this case, the distribution can occur, off-platform, using, for instance, email as the directory. However, it’s difficult to understand #, when such a solution, would be more convenient than email. // call local companies, at this point, and conduct some market research, get a hold of 3 stakeholders. 

H4S7: Adoption of WordPress’s Site Editor<beta>:

Hu: AAM is not integrated with Site Editor, and although logged.in-users, of one role, can be directed to a unique.to-role homepage, which, by our implementation in WP.MIC-H2S3,H3S2.H4S2, can display a distinct | menu, when those users # navigate to other pages in the site, they will not, still, have that unique | menu.

H4S8: AAM x Site Editor x logic solution:

Hu: The following solution will provide all the requirements, without the need of additional plugin | installation: H5S1: We will use 2 levels of redirection, for the homepage, as, in our implementation, each role’s or each user’s homepage, for logged.in-users, at every | tier, provides all the links, to content, that is uniquely accessible to them. H5S2: The home link, in every | menu, will link to homeout H5S3: The loggedusers, at every | tier, will be URI-redirected, by their elicitation of home-out, to a unique | homepage; this will allow them # to never see homeout, during their loggedexperience #, and always be directed to their unique | homepage, when they click home, anywhere H5S4: Each unique | homepage will have a unique | menu that links to all visitor items, and, in-addition, additional | items, even in a different | hierarchy, that are unique, to that class, and above # H5S5: The problem is that users will be defaulted back to the visitor menu when they visit any link that is also accessible to visitors #, and must know, from use, that returning home, is their launchpad. UX analysis: Should be OK, because as a login user, you don’t need to go to the about page anyways, and I will simply establish a paradigm that all of the unique links that you need to click on will be linked from home – free, and every unique page that you go to will link back to home – free. H5S6: This paradigm can also be established on an individual user basis, where a user can be assigned a unique | page, home – Cole, and your home – Cole page will contain all of the unique links that you need to click on, and I will establish a home – out redirect to home – Cole.

H3S4: Contact forms:

Hu: Contact forms are a useful feature, providing empty text, dropdown, and paragraph boxes, for users to input data, and upload | files, and have this information be sent, along with their contact information, to the website administrator. Contact forms are not chat, in that the admin, cannot respond, through the same form, and any subsequent 2-way communication, will occur, off platform, such as email. Presently, my solution | space for contact form is to use Google forms, which can 1) capture email, 2) accept at least 5 different types of responses, and 3) send responses to a tabulated spreadsheet, without notifications, although email alerts can be configured<untested>. Moreover, Google forms has an embed | functionality<untested>, with HTML, so users do not need to click off your site. This is my recommended solution. Fin.v-1

H3S5: SEO // research pending

H3S6: Shopping, payments: // research pending

H3S7: The logical order of the internet:

The following, is a list, starting from most user-facing, of the layers that comprise the hierarchical | architecture of the internet:

H4S1: HTML/CSS/Templates/Themes: H4S2: PHP/JavaScript/Python: H4S3: iMac/PC/iPhone/iPad: H4S4: WIFI router: H4S5: Comcast/Verizon/AT&T Modem: H4S6: Verizon cell tower: H4S7: Verizon’s physical headquarters: H4S8: Google/Facebook/Amazon headquarters: H4S9: HTTPS: H4S10: DNS/TCP/IP: H4S11: Local storage, on the web server hardware, database: H4S12: Microchips/GFX-card/Silicon circuitry: H4S13: Electricity/magnetic forces/atomic nuclei: H4S14: Quantum effects/superconductivity/hyper-brittle state changes: H4S15: Pre-Higgs spiritual ethereality of conceptual information: #v-t r: <Malan, 2020> Hu: Being as WordPress occupies 2/15 layers of this stack, and must manage the connections between the two, I would estimate it’s permanent valuation, taking into account a franchised model, is about 10% of the value of the entire architecture of the internet, and, in conjunction with WordPress sites, about 10% of the value, of the entire internet # WordPress can also justifiably extend its reach into H4S8-11, proportionately, also.

H3S8: The best development partner: // research pending:

H3S9: The decision to outsource:

Hu: Even Zoom, a company that has $276-mn total vc-funding, outsources their https://blog.zoom.us/ to WordPress; every company has specialized in the optimization of a particular aspect of the tech | stack.

H4S1: Database management:

Hu: A database is a table that has a managed | system of grids, as defined by the intersection of defined | columns and rows, and the grids themselves, may have properties. Britannica: Early systems were arranged sequentially (i.e., alphabetically, numerically, or chronologically); the development of direct-access | storage devices made possible random access to data via indexes. In flat | databases, records are organized according to a simple list of entities; many | simple databases for personal computers are flat in structure. The records in hierarchical | databases are organized in a treelike structure, with each level of records branching off into a set of smaller categories. Unlike hierarchical databases, which provide single links between sets of records at different levels, network databases create multiple linkages between sets by placing links, or pointers, to one set of records in another; the speed and versatility of network databases have led to their wide use within businesses and in e-commerce. Relational databases are used where associations between files or records cannot be expressed by links; a simple flat list becomes one row of a table, or “relation,” and multiple relations can be mathematically associated to yield desired information. Various iterations of SQL (Structured Query Language) are widely-employed in DBMS for relational | databases. Object-oriented databases store and manipulate more complex data structures, called “objects,” which are organized into hierarchical classes that may inherit properties from classes higher in the chain; this database structure is the most flexible and adaptable. The information in many databases consists of natural-language texts of documents; number-oriented databases primarily contain information such as statistics, tables, financial data, and raw scientific and technical data.// ship to ch.53-H2S4 when done

H5S1: Google sheets: Google sheets is a cloud | version of Excel with user access built-in, allowing ease of collaboration, among landlords and property managers, increasing scalability of team # Moreover, it contains, at a basic-to-intermediate level, all the functionality you need in a database, with a WYSIWYG presentation. Therefore, absent the need for a) more than ~1,000 entries, and b) special data types, landlords should stick with # Google sheets, such as to manage a) a list of properties, or b) a list of tenants. H6S1: Dataput, in: automated | input to a G-sheet can be accomplished through a G-form, where the fields of the form correspond to the columns of the sheet, and the rows, each entry. H6S2: Dataput, out: scripts can be written in G-sheets to a) generate automated notifications, when a new entry is added through the form or b) automatically process the data, such as to generate reports H6S3: All reports, which are used for taxes and compliance, are generated, from data in a database; if you only use G-sheets for data, then all reporting software can be written directly into G.apps-script<a-r>; the software for each type of report should be completable in 2 hours # H6S4: Google-dev: Most scripts designed for Google Sheets manipulate arrays to interact with the cells, rows, and columns in a spreadsheet. Apps Script can interact with Google Sheets in two broad ways: any script can create or modify a spreadsheet if the script’s user has appropriate | permissions for the spreadsheet, and a script can also be bound to a spreadsheet, which gives the script special abilities to alter the user interface or respond when the spreadsheet is opened. To create a bound script, select Extensions > Apps Script from within Google Sheets. The Spreadsheet service treats Google Sheets as a grid, operating with two-dimensional | arrays. To retrieve the data from the spreadsheet, you must get access to the spreadsheet where the data is stored, get the range in the spreadsheet that holds the data, and then get the values of the cells. Apps Script facilitates access to the data by reading structured | data in the spreadsheet and creating JavaScript | objects for them.

G-dev: The example below shows how to retrieve and log the product names and product numbers.

H4S2: Notifications:

Hu: Notifications are a vital | feature when response time is part of the definition of done # H5S1: Mobile notifications: Hu: mobile notifications are sent through 1) text, 2) app, external, and 3) app, internal, although the 80/20 is text-only Fin.v-1 H5S2: Email notifications: email notifications are sent from a company-owned account, to the recipient’s inbox, although that recipient, independently, can also have notifications to mobile, linked from their email, and, from specific | addresses, like the landlord’s.

H3S10: Flexibility as a paradigm: deferment, early-implementation, set.in-stone:

“Decision: skip Index for now. Highly complex feature with tons of future implementations, it’s less committal to not have this. If 875k rows can be searched in 0.5s, then my search count is trivial for load times, until much later.”

Hu: Maintaining flexibility is a key principle, not only in chess, but also programming // add chess-example. In chess, it is known that # if a decision can be deferred, in part because other moves can be made, as well, in the present, then it’s best to defer, as this offers one maximal flexibility. Decisions that result in committalchanges in P-str, such as thematic P-advs around the K.side-castle,position, weakening a color complex, are also made with advanced caution.


Burival, Kaj. “Webinar | Enscape with Revit: 3D Views & Still Image Renderings.” YouTube, InRealTech 16 July 2021, https://www.youtube.com/watch?v=9zPw3Vt3vPQ

Scruton, Roger , Collins, Peter , Ackerman, James S. and Gowans, Alan. “architecture”. Encyclopedia Britannica, 2 Feb. 2021, https://www.britannica.com/topic/architecture. Accessed 13 July 2022.

Meyers, Erin. “What Is a Staging Site? How Do You Set One up?: WP Engine®.” WP Engine, 5 July 2022, https://wpengine.com/resources/what-is-a-staging-site-why-have-one/.


Hu: A potential solution to H3S3, that, if it holds up to its marketing claims, should be part of WordPress core, like AAM, in order to enable true log-in differentiated functionality. However, I have not tested this yet as of 9/25/22, and the UX seemed a bit clunky, and definitely, less extensive, than AAM, for its analogous | feature set. Will check out the documentation, and see if any quotes are worth adding #
Hu: With Google already providing an adequate | solution for this issue, and being a much larger company, I see no reason, given the state of maturity of these contact plugins, to make a switch; however, my opinion is subject to change, as I will continue monitoring their development, in this genuinely core functionality. 9/25/22
Hu: It’s promising, as a player in the industry, that a $1.29-tn company is investing <r: Google>, but it’s unclear, the extent to which, this plugin depends upon adoption of other Google features, as well as the exact scope. Seems like they’re trying to replicate AAM plugin in being a comprehensive solution, of some sort, but whereas AAM is genuinely comprehensive, in that it has a narrow focus, with pervasive-Effect, Google’s Site Kit seems to be opposite: broad focus, and, therefore, noE. 9/25/22

Malan, David J. “CS50 2020 – Lecture 8 – HTML, CSS, JavaScript.” CS50 Harvard, YouTube, 31 Dec. 2020, https://www.youtube.com/watch?v=5g0x2xv3aHU&ab_channel=CS50.







Leave a Reply

Your email address will not be published. Required fields are marked *