Virtual Pages - Source Excerpt 06
Summary
This source excerpt preserves a bounded section of 2IA.org/wp-content/themes/twoia-intelligence/inc/virtual-pages.php so readers can inspect the evidence without opening the full source file.
**Source path:** 2IA.org/wp-content/themes/twoia-intelligence/inc/virtual-pages.php
'summary' => __( 'Support explains the funding model without dark patterns. Donation processing is not enabled in this theme, so no payment data is collected here by default.', 'two-identities-anonymous' ),
'sections' => array(
array(
'title' => __( 'Funding Model', 'two-identities-anonymous' ),
'body' => __( 'Support should fund public-records work, source review, writing, accessibility, privacy-preserving hosting, directory maintenance, and correction infrastructure.', 'two-identities-anonymous' ),
),
array(
'title' => __( 'Donation State', 'two-identities-anonymous' ),
'body' => __( 'No donation provider is configured in this source-controlled theme. Add an active payment route only when provider privacy, fees, data retention, refund, and contact rules are documented.', 'two-identities-anonymous' ),
),
),
),
'newsletter' => array(
'summary' => __( 'Newsletter signup is not active in this source-controlled theme. Do not expose an active signup until frequency, provider, data collected, retention, unsubscribe, and privacy terms are real.', 'two-identities-anonymous' ),
'sections' => array(
array(
'title' => __( 'Newsletter State', 'two-identities-anonymous' ),
'body' => __( 'Planned frequency and backend are not configured here. Until then, this page is informational and should not ask readers for an email address.', 'two-identities-anonymous' ),
),
array(
'title' => __( 'Privacy Requirement', 'two-identities-anonymous' ),
'body' => __( 'Before signup launches, document what subscribers receive, email address storage, provider access, retention, unsubscribe, deletion, and whether any tracking pixels are disabled.', 'two-identities-anonymous' ),
),
),
),
'volunteer' => array(
'summary' => __( 'Volunteer interest is limited to lawful public-interest roles and should collect no unnecessary personal information.', 'two-identities-anonymous' ),
'sections' => array(
array(
'title' => __( 'Roles', 'two-identities-anonymous' ),
'body' => __( 'Possible roles include public-records research, accessibility review, source-note checking, copyediting, topic-hub maintenance, and policy-page review.', 'two-identities-anonymous' ),
),
array(
'title' => __( 'Boundaries', 'two-identities-anonymous' ),
'body' => __( 'Volunteers should not send classified material, stolen data, exploit code, private data dumps, harassment targets, or operational instructions. Use Contact for low-data interest notes only.', 'two-identities-anonymous' ),
),
),
),
'psychological-warfare' => array(
'title' => __( 'Influence Operations and Media Literacy', 'two-identities-anonymous' ),
'summary' => __( 'This hub preserves the older Psychological Warfare slug while reframing the page around speech-preserving analysis of propaganda, misinformation, disinformation, synthetic media, amplification, bot or proxy networks, and verification.', 'two-identities-anonymous' ),
),
);
$preserve_section_routes = array(
'start-here',
'methodology',
'research-archive',
'about',
'privacy-policy',
'contact',
'lawful-contact',
'corrections-and-right-of-reply',
'support',
'newsletter',
'volunteer',
);
foreach ( $overrides as $slug => $override ) {
if ( in_array( $slug, $preserve_section_routes, true ) && ! empty( $pages[ $slug ]['sections'] ) && ! empty( $override['sections'] ) ) {
$publish_ready_overview = array_map(
static function ( $section ) {
return array(
'title' => $section['title'],
'body' => array( $section['body'] ),
);
},
$override['sections']
);
$override['overview_sections'] = array_merge( $override['overview_sections'] ?? array(), $publish_ready_overview );
unset( $override['sections'] );
}
$pages[ $slug ] = array_merge( $pages[ $slug ] ?? array(), $override );
}
return $pages;
}
/**
* Replace accumulated route copy with sharper, action-oriented public pages.
*
* The earlier builders preserve source memory. This final pass controls what
* readers actually see: fewer sections, stronger verbs, clearer records to
* request, and no repeated mission slogans.
*
* @param array $pages Page definitions.
* @return array
*/
function twoia_powerpack_virtual_pages( $pages ) {
$updates = array(
'start-here' => array(
'summary' => 'Use 2IA to turn a civil-liberties concern into three things: the system, the record that proves it, and the next public move.',
'overview_sections' => array(
array(
'title' => 'Use The Site Like A Desk, Not A Manifesto',
'body' => array(
'Pick the machine in front of you: a camera network, school monitoring tool, court fee vendor, tenant screener, public-records denial, data broker, AI score, or platform rule.',
'Then move from concern to proof: contract, policy, retention schedule, audit, complaint log, data-sharing agreement, validation report, or correction record.',
),
),
array(
'title' => 'What Every Route Should Produce',
'body' => array(
'A useful page names what to check, which record to request, what risk to watch, which link verifies the topic, and which action stays lawful.',
),
),
),
'sections' => array(
array(
'title' => 'Pick The Machine',
'body' => 'Name the concrete system before debating the ideology: camera network, data broker, risk model, keyword filter, fusion center, school safety tool, court software, vendor portal, or records office.',
),
array(
'title' => 'Find The Record',
'body' => 'Ask for records that already exist: contracts, statements of work, procurement scores, privacy reviews, training materials, audit logs, retention schedules, complaint files, and appeal rules.',
),
array(
'title' => 'Test The Claim',
'body' => 'Do not accept labels like safety, innovation, fraud prevention, or efficiency by themselves. Ask who approved the system, what data enters, who can query it, what errors cost, and how correction works.',
),
array(
'title' => 'Act Without Harm',
'body' => 'Use records requests, public comments, correction demands, journalism, litigation support, procurement review, and community oversight. Do not target private people, publish bystanders, probe systems, or turn research into harassment.',
),
),
),
'methodology' => array(
'summary' => 'The 2IA method is simple: make claims traceable, label uncertainty, publish only what the public-interest question needs, and correct the record in public.',
'sections' => array(
array(
'title' => 'Claim Ladder',
'body' => 'Use clear claim states: confirmed by a primary record, corroborated by independent sources, likely but incomplete, inferred, disputed, stale, or unknown. Never let a confident tone hide a weak source.',
),
array(
'title' => 'Source Classes',
'body' => 'Prefer contracts, policies, budgets, court files, audits, public datasets, meeting packets, official responses, and original documents. Use commentary and reporting as context, not as a substitute for the record.',
),
array(
'title' => 'Minimization Rule',
'body' => 'Publish the detail that proves the public claim and cut the rest. Remove bystanders, minors, addresses, victims, medical details, private beliefs, credentials, and identifiers that do not change the finding.',
),
array(
'title' => 'AI Use Ledger',
'body' => 'AI can sort, summarize, compare, and draft. It cannot own the claim. Keep source notes, check hallucination risk, disclose meaningful assistance, and make a human editor accountable for the final wording.',
),
array(
'title' => 'Correction Path',
'body' => 'Every serious page needs a way to challenge it: page, sentence, source issue, proposed correction, decision, date, and whether the correction changes the conclusion.',
),
),
),
'public-records-and-foia' => array(
'summary' => 'Public records are lawful leverage. Use them to inspect contracts, policies, audits, retention, complaints, data sharing, and the paper trail behind public power.',
'sections' => array(
array(
'title' => 'Start With The Custodian',
'body' => 'Identify who likely holds the record: agency, board, school district, court, transit authority, police department, procurement office, contractor liaison, or records officer.',
),
array(
'title' => 'Ask Narrowly',
'body' => 'Name the vendor, program, office, date range, meeting, contract number, policy title, record category, or public phrase. Narrow requests are easier to answer and harder to dismiss.',
),
array(
'title' => 'Request The Procurement Packet',