{"id":334648,"date":"2026-07-30T22:57:19","date_gmt":"2026-07-30T22:57:19","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/forge-framework\/"},"modified":"2026-07-30T22:57:09","modified_gmt":"2026-07-30T22:57:09","slug":"sitenivo","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/sitenivo\/","author":23524919,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.0.2","requires":"6.0","requires_php":"8.1","requires_plugins":null,"header_name":"SiteNivo \u2013 Modular Site Toolkit","header_author":"Usman Ahmad","header_description":"Professional WordPress toolkit \u2014 CPT, Custom Fields, Templates & more.","assets_banners_color":"401b08","last_updated":"2026-07-30 22:57:09","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/usmanahmad.info","rating":0,"author_block_rating":0,"active_installs":0,"downloads":17,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"forgewpdevx","date":"2026-07-30 22:57:09"}},"upgrade_notice":{"1.0.0":"<p>Initial release \u2014 no upgrade steps required.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3629186,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3629186,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3629186,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3629186,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[2010,1487,38867,91],"plugin_category":[57],"plugin_contributors":[273911],"plugin_business_model":[],"class_list":["post-334648","plugin","type-plugin","status-publish","hentry","plugin_tags-custom-fields","plugin_tags-custom-post-types","plugin_tags-options-pages","plugin_tags-taxonomy","plugin_category-taxonomy","plugin_contributors-forgewpdevx","plugin_committers-forgewpdevx"],"banners":{"banner":"https:\/\/ps.w.org\/sitenivo\/assets\/banner-772x250.png?rev=3629186","banner_2x":"https:\/\/ps.w.org\/sitenivo\/assets\/banner-1544x500.png?rev=3629186","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/sitenivo\/assets\/icon-128x128.png?rev=3629186","icon_2x":"https:\/\/ps.w.org\/sitenivo\/assets\/icon-256x256.png?rev=3629186","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>SiteNivo<\/strong> is the most complete, developer-friendly content architecture plugin for WordPress. Whether you are a site builder, freelancer, or agency developer, SiteNivo gives you everything you need to model your content, extend the WordPress admin, and build powerful data structures \u2014 all from a beautiful, intuitive interface.<\/p>\n\n<p>No more copy-pasting register_post_type() snippets. No more cluttered functions.php. SiteNivo handles it all, cleanly and professionally.<\/p>\n\n\n\n<h3>\u2726 What Makes SiteNivo Different?<\/h3>\n\n<ul>\n<li><strong>Clean data architecture<\/strong> \u2014 plugin configuration (CPTs, taxonomies, field groups, field definitions) lives in dedicated custom database tables. Field values are stored in standard WordPress meta (<code>post_meta<\/code>, <code>user_meta<\/code>, <code>term_meta<\/code>) and options (<code>sn_opt_*<\/code>), just like ACF.<\/li>\n<li><strong>PHP 8.1+ codebase<\/strong> with PSR-4 autoloading, typed properties, and zero legacy code.<\/li>\n<li><strong>Modular architecture<\/strong> \u2014 every feature is an independent module. Only what is active runs.<\/li>\n<li><strong>Developer hooks at every layer<\/strong> \u2014 actions, filters, and a template API so you can extend anything.<\/li>\n<li><strong>Single plugin, complete toolkit<\/strong> \u2014 CPTs, Taxonomies, Fields, Options Pages, SVG Support, REST API integration, and more.<\/li>\n<\/ul>\n\n\n\n<h3>\ud83d\udce6 Core Features<\/h3>\n\n\n\n<h4>1. Custom Post Type Builder<\/h4>\n\n<p>Create and manage custom post types (CPTs) with complete control over every WordPress argument \u2014 all from the admin, with zero code required.<\/p>\n\n<p><strong>What you can configure:<\/strong>\n* Singular and plural labels (all 20+ WordPress label keys)\n* Post type key with automatic slug validation\n* Public \/ private visibility settings\n* Supports: title, editor, excerpt, thumbnail, comments, revisions, page-attributes, custom-fields, author, trackbacks\n* Hierarchical (page-like) or flat (post-like) structure\n* REST API exposure with a custom REST base slug\n* Permalink (rewrite) slug, with\/without front, feeds, and pages\n* Menu position and Dashicon \/ custom SVG icon\n* Capability type (post or page) for fine-grained permissions\n* Query variables, archive pages, and publicly queryable flags\n* Export as clean, copy-paste PHP code (no dependency on SiteNivo at runtime)<\/p>\n\n\n\n<h4>2. Custom Taxonomy Builder<\/h4>\n\n<p>Register custom taxonomies and assign them to any post type \u2014 including your custom ones \u2014 with full argument control.<\/p>\n\n<p><strong>What you can configure:<\/strong>\n* Singular and plural labels (all WordPress label keys)\n* Hierarchical (categories) or non-hierarchical (tags) behaviour\n* Public \/ private visibility and show-in-menus flag\n* REST API exposure with custom REST base slug\n* Rewrite slug, with\/without front\n* Default terms and sort order\n* Assignment to one or multiple post types (including core and custom)\n* Export as copy-paste PHP code<\/p>\n\n\n\n<h4>3. Custom Fields \u2014 33 Field Types<\/h4>\n\n<p>The centerpiece of SiteNivo. Attach custom fields to any post, taxonomy term, user, options page, or other screen through a powerful, drag-and-drop field group editor.<\/p>\n\n<p><strong>Basic Fields:<\/strong>\n\n\n\n  Field\n  Description\n\n\n\n\n  Text\n  Single-line text with placeholder, prepend\/append, and character limit\n\n\n  Textarea\n  Multi-line text with adjustable row height\n\n\n  Email\n  Email address with native validation\n\n\n  URL\n  URL input with automatic https:\/\/ hint\n\n\n  Password\n  Masked password field\n\n\n  Number\n  Numeric input with min, max, and step\n\n\n  Range\n  Slider input with min, max, step, and live value display\n\n\n  Color\n  Hex color picker (#RRGGBB)\n\n\n  Select\n  Dropdown or multi-select with custom choices\n\n\n  Checkbox\n  One or more checkbox options returning an array of checked values\n\n\n  Date\n  Date picker (Y-m-d storage)\n\n\n  Time\n  Time picker (H:i storage)\n\n\n  Date Time Picker\n  Combined date and time picker (Y-m-d H:i:s storage)\n\n\n  WYSIWYG Editor\n  Full TinyMCE \/ Classic Editor rich-text field\n\n\n  oEmbed\n  Paste a URL and render embedded media (YouTube, Vimeo, etc.)\n\n\n  Link\n  Native WordPress link picker returning URL, title, and target\n\n\n<\/p>\n\n<p><strong>Media Fields:<\/strong>\n\n\n\n  Field\n  Description\n\n\n\n\n  Image\n  Single image with Media Library integration, preview, and size selection\n\n\n  File Upload\n  Single file upload with type restriction and download link\n\n\n  Gallery\n  Multi-image gallery with drag-and-drop reorder\n\n\n<\/p>\n\n<p><strong>Relational Fields:<\/strong>\n\n\n\n  Field\n  Description\n\n\n\n\n  Post Object\n  Select a single post from any post type\n\n\n  Relationship\n  Select one or more posts with a dual-column drag-and-drop picker\n\n\n  Taxonomy\n  Select taxonomy terms from any registered taxonomy\n\n\n  User\n  Select a WordPress user from the user list\n\n\n  Page Link\n  Pick a URL from published pages, posts, or archives\n\n\n<\/p>\n\n<p><strong>Map Fields:<\/strong>\n\n\n\n  Field\n  Description\n\n\n\n\n  Google Map\n  Address autocomplete and map pin with lat\/lng\/address\/zoom storage\n\n\n  OpenStreetMap\n  Cookie-free map picker using bundled Leaflet.js\n\n\n<\/p>\n\n<p><strong>Layout \/ UI Fields:<\/strong>\n\n\n\n  Field\n  Description\n\n\n\n\n  Tab\n  Groups fields into tabbed panels inside the meta box\n\n\n  Accordion\n  Collapsible field section for a cleaner editor experience\n\n\n  Message\n  Static instruction text or HTML displayed between fields\n\n\n<\/p>\n\n<p><strong>Complex \/ Nested Fields (Premium \u2014 coming soon):<\/strong>\n\n\n\n  Field\n  Description\n\n\n\n\n  Repeater\n  Add unlimited rows of sub-fields, each row being an independent field set\n\n\n  Flexible Content\n  Multiple named layouts \u2014 each with its own field set \u2014 selectable per row\n\n\n  Clone\n  Re-use an existing field group or individual field anywhere\n\n\n  Table\n  Spreadsheet-style rows and columns for tabular data\n\n\n<\/p>\n\n<p><strong>Settings stored per field (examples):<\/strong>\n* Label, key, instructions\/help text\n* Required \/ optional\n* Default value\n* Conditional logic (show\/hide based on another field's value)\n* Wrapper class, width, and ID for layout control<\/p>\n\n\n\n<h4>4. Location Rules Engine<\/h4>\n\n<p>Control exactly where each field group appears using a powerful rules engine with AND\/OR logic \u2014 identical in capability to the industry standard.<\/p>\n\n<p><strong>16 Built-in Location Rule Types:<\/strong>\n\n\n\n  Rule\n  Target\n\n\n\n\n  Post Type\n  Any registered post type (e.g. post, page, product)\n\n\n  Specific Post\n  A particular post by title\n\n\n  Post Status\n  draft, publish, pending, private, future\n\n\n  Page\n  Any page\n\n\n  Specific Page\n  A particular page by title\n\n\n  Parent Page\n  A page with a specific parent\n\n\n  Page Template\n  A custom page template file\n\n\n  Taxonomy\n  Any taxonomy edit screen\n\n\n  Taxonomy Term\n  A specific taxonomy term edit screen\n\n\n  Category\n  Category term screen\n\n\n  Tag\n  Tag term screen\n\n\n  User\n  Any user profile screen\n\n\n  Specific User\n  A particular user by display name\n\n\n  Current User\n  Profile of the currently logged-in user\n\n\n  User Role\n  Users with a specific WordPress role\n\n\n  Options Page\n  A SiteNivo-registered options page\n\n\n<\/p>\n\n<p><strong>Rule logic:<\/strong>\n* Group rules with <strong>AND<\/strong> within a rule group\n* Add multiple rule groups for <strong>OR<\/strong> logic between groups\n* Every rule supports <strong>== (is)<\/strong> and <strong>!= (is not)<\/strong> operators<\/p>\n\n\n\n<h4>5. Options Pages<\/h4>\n\n<p>Register custom admin pages that store site-wide global settings \u2014 not tied to any single post or term. Options pages use the SiteNivo field engine so every field type is available.<\/p>\n\n<p><strong>Features:<\/strong>\n* Register top-level menu pages or sub-pages under any existing menu item\n* Set custom page title, menu title, capability requirement, and menu icon\n* Set a custom menu position\n* Attach any field group to an options page using the Location Rules engine\n* Read values anywhere with <code>sn_get_field( 'field_name', 'option' )<\/code> or <code>sn_the_field( 'field_name', 'option' )<\/code>\n* Field values stored as WordPress options (<code>sn_opt_{field_key}<\/code>) \u2014 standard WP options API<\/p>\n\n\n\n<h4>6. Post Columns Manager<\/h4>\n\n<p>Add, configure, and manage custom columns in the WordPress post type list tables (WP Admin \u2192 All Posts, All Products, etc.) \u2014 without touching your theme.<\/p>\n\n<p><strong>Per column:<\/strong>\n* Target any public post type\n* Column label and custom key\n* Map to any SiteNivo custom field key\n* Drag-and-drop sort order relative to default columns\n* Active \/ Inactive status toggle<\/p>\n\n<p>Custom column values are read directly from SiteNivo meta storage, so no extra queries are needed.<\/p>\n\n\n\n<h4>7. SVG Support<\/h4>\n\n<p>Enable safe SVG uploads to the WordPress Media Library \u2014 with automatic sanitization to block malicious SVG files.<\/p>\n\n<p><strong>How it works:<\/strong>\n1. SVG uploads are allowed only for users with the <code>upload_files<\/code> capability\n2. Every uploaded SVG is parsed as XML via <code>DOMDocument<\/code> \u2014 a raw string is never trusted\n3. Forbidden elements are stripped: <code>&lt;script&gt;<\/code>, <code>&lt;object&gt;<\/code>, <code>&lt;embed&gt;<\/code>, <code>&lt;iframe&gt;<\/code>, <code>&lt;form&gt;<\/code>, <code>&lt;style&gt;<\/code>, <code>&lt;link&gt;<\/code>, <code>&lt;meta&gt;<\/code>, and more\n4. Event handler attributes (<code>onclick<\/code>, <code>onload<\/code>, <code>onerror<\/code>, etc.) are stripped from every element\n5. <code>href<\/code> \/ <code>src<\/code> \/ <code>action<\/code> attributes pointing to <code>javascript:<\/code> or <code>data:text<\/code> URIs are stripped\n6. Processing instructions and XML comments that could carry payloads are removed\n7. File size capped at 512 KB\n8. SVG thumbnails render correctly in the Media Library grid and attachment modal<\/p>\n\n<p>Enable \/ disable from <strong>SiteNivo \u2192 Settings<\/strong>.<\/p>\n\n\n\n<h4>8. Code Generator<\/h4>\n\n<p>Export your Custom Post Type and Taxonomy registrations as clean, dependency-free PHP code you can paste into a theme or plugin.<\/p>\n\n<ul>\n<li>Generated code uses native <code>register_post_type()<\/code> and <code>register_taxonomy()<\/code> \u2014 no SiteNivo dependency at runtime<\/li>\n<li>Includes all labels, arguments, and settings exactly as configured in the admin<\/li>\n<li>Copy with one click directly from the CPT or Taxonomy edit screen<\/li>\n<li>Ideal for handoff to clients or for bootstrapping a plugin<\/li>\n<\/ul>\n\n\n\n<h4>9. REST API Integration<\/h4>\n\n<p>Every Custom Post Type and Taxonomy you register can expose a native WordPress REST API endpoint with a single toggle.<\/p>\n\n<ul>\n<li>Enable <code>show_in_rest<\/code> per CPT \/ Taxonomy in the builder<\/li>\n<li>Set a custom <code>rest_base<\/code> slug for clean API URLs<\/li>\n<li>Combine with SiteNivo Pro's <strong>REST API Endpoint Builder<\/strong> for full custom endpoint creation<\/li>\n<\/ul>\n\n\n\n<h4>10. Import \/ Export<\/h4>\n\n<p>Move SiteNivo configuration between sites as a versioned JSON bundle.<\/p>\n\n<ul>\n<li>Export selected Post Types, Taxonomies, Field Groups, Options Pages, or Post Columns<\/li>\n<li>Import skips duplicates by key\/slug\/title<\/li>\n<\/ul>\n\n\n\n<h4>11. Site Tools<\/h4>\n\n<p><strong>Admin Menu Builder<\/strong> \u2014 rename, reorder, hide, or restrict WordPress admin menu items; build custom admin pages.<\/p>\n\n<p><strong>Maintenance Mode<\/strong> \u2014 show a branded holding page with optional countdown while you work on the site.<\/p>\n\n<p><strong>Coming Soon<\/strong> \u2014 display a pre-launch splash page before your site goes live.<\/p>\n\n<p><strong>WP Reset<\/strong> \u2014 selectively reset posts, comments, terms, media, users, transients, theme mods, or plugin options (with server-side RESET confirmation).<\/p>\n\n<p><strong>Settings<\/strong> \u2014 Classic Editor toggle, SVG support, performance tweaks, security hardening, Google Maps API key, and uninstall data cleanup.<\/p>\n\n\n\n<h3>\ud83d\udd0c Developer API<\/h3>\n\n<p>SiteNivo is built for developers. Every module exposes hooks and a clean API.<\/p>\n\n<p><strong>Template functions:<\/strong>\n    `php\n\/\/ Read a custom field value for the current post\nsn_get_field( 'field_key' );<\/p>\n\n<p>\/\/ Echo a custom field value for the current post\nsn_the_field( 'field_key' );<\/p>\n\n<p>\/\/ Read a custom field value for a specific post\nsn_get_field( 'field_key', $post_id );<\/p>\n\n<p>\/\/ Read an options page field value\nsn_get_field( 'field_key', 'option' );<\/p>\n\n<p>\/\/ User meta\nsn_get_field( 'field_key', 'user_7' );<\/p>\n\n<p>\/\/ Term meta\nsn_get_field( 'field_key', 'term_15' );\n    `<\/p>\n\n<p><strong>Key action hooks:<\/strong>\n    `php\n\/\/ Fires after SiteNivo finishes booting all modules\nadd_action( 'sitenivo_loaded', function( $plugin ) {\n    \/\/ Register custom field types, location rules, etc.\n} );<\/p>\n\n<p>\/\/ Register custom field types\nadd_action( 'sitenivo_register_field_types', function() {\n    \\SiteNivo\\Modules\\FieldGroups\\FieldRegistry::register( new My_Custom_Field() );\n} );<\/p>\n\n<p>\/\/ Register custom location rule types\nadd_action( 'sitenivo_register_location_types', function() {\n    \\SiteNivo\\Modules\\FieldGroups\\Location\\LocationManager::register( new My_Custom_Location() );\n} );\n    `<\/p>\n\n<p><strong>Data architecture:<\/strong>\nAll SiteNivo data lives in dedicated custom tables with clean schemas:<\/p>\n\n\n\n\n  Table\n  Purpose\n\n\n\n\n  <code>{prefix}sitenivo_post_types<\/code>\n  Custom Post Type definitions\n\n\n  <code>{prefix}sitenivo_taxonomies<\/code>\n  Custom Taxonomy definitions\n\n\n  <code>{prefix}sitenivo_field_groups<\/code>\n  Field group definitions and location rules\n\n\n  <code>{prefix}sitenivo_fields<\/code>\n  Individual field definitions with settings\n\n\n  <code>{prefix}sitenivo_options_pages<\/code>\n  Options page registrations\n\n\n  <code>{prefix}sitenivo_post_columns<\/code>\n  Post list column definitions\n\n\n\n\n\n\n<h3>\ud83d\ude80 Pro modules (Coming Soon)<\/h3>\n\n<p>Advanced modules such as <strong>Forms Builder<\/strong>, <strong>Gutenberg Blocks Builder<\/strong>, <strong>Backup &amp; Restore<\/strong>, <strong>Hide Login<\/strong>, and <strong>User Roles &amp; Capabilities<\/strong> are planned for a future Pro release. They are <strong>not included in the free v1.0.0 plugin<\/strong>.<\/p>\n\n<p>Pro field types (Repeater, Flexible Content, Clone) are marked <strong>Pro<\/strong> in the admin and will unlock when Pro launches.<\/p>\n\n\n\n<h3>External Services<\/h3>\n\n<p>SiteNivo works without any external service by default. Some optional field types contact third-party services only when you add and use those fields:<\/p>\n\n<ul>\n<li><strong>Google Map field<\/strong> \u2014 loads the Google Maps JavaScript API and Places API when a Google Map field is displayed in the admin and a Google Maps API key has been saved in <strong>SiteNivo \u2192 Settings \u2192 Integrations<\/strong>. Service: Google Maps Platform. Terms: https:\/\/cloud.google.com\/maps-platform\/terms Privacy: https:\/\/policies.google.com\/privacy<\/li>\n<li><strong>OpenStreetMap field<\/strong> \u2014 uses Leaflet 1.9.4 bundled locally in the plugin (JS, CSS, and marker images). When the field is used, map tiles are loaded from OpenStreetMap-compatible tile providers and address search may use Nominatim geocoding in the admin. Services: OpenStreetMap, CARTO, Nominatim. Terms: https:\/\/www.openstreetmap.org\/copyright and https:\/\/carto.com\/legal\/ Privacy: https:\/\/osmfoundation.org\/wiki\/Privacy_Policy and https:\/\/carto.com\/privacy\/<\/li>\n<li><strong>oEmbed field<\/strong> \u2014 uses WordPress core oEmbed handling. Embeds may contact the provider of the URL entered by an editor (for example YouTube or Vimeo) when previewing\/rendering that URL.<\/li>\n<li><strong>SiteNivo hub<\/strong> \u2014 When a Premium add-on is installed, update\/license checks may contact the configured SiteNivo hub URL. The free plugin does not require a SiteNivo account or external API connection.<\/li>\n<\/ul>\n\n<!--section=installation-->\n<p><strong>Automatic (recommended):<\/strong>\n1. Go to <strong>WordPress Admin \u2192 Plugins \u2192 Add New<\/strong>.\n2. Search for <strong>SiteNivo<\/strong>.\n3. Click <strong>Install Now<\/strong>, then <strong>Activate<\/strong>.<\/p>\n\n<p><strong>Manual:<\/strong>\n1. Download the plugin ZIP from WordPress.org.\n2. Go to <strong>WordPress Admin \u2192 Plugins \u2192 Add New \u2192 Upload Plugin<\/strong>.\n3. Upload the ZIP file and click <strong>Install Now<\/strong>.\n4. Click <strong>Activate Plugin<\/strong>.<\/p>\n\n<p><strong>After activation:<\/strong>\n* Navigate to <strong>SiteNivo<\/strong> in the left admin menu to get started.\n* Database tables are created automatically during activation.\n* No further configuration is required \u2014 start building immediately.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20sitenivo%20require%20any%20coding%20knowledge%3F\"><h3>Does SiteNivo require any coding knowledge?<\/h3><\/dt>\n<dd><p>No. Every feature is built around a visual admin interface. You can create and manage Custom Post Types, Taxonomies, Field Groups, and Options Pages entirely without writing code.<\/p>\n\n<p>Developers can additionally use the PHP template API and action\/filter hooks to extend SiteNivo's behaviour.<\/p><\/dd>\n<dt id=\"is%20sitenivo%20compatible%20with%20the%20gutenberg%20block%20editor%3F\"><h3>Is SiteNivo compatible with the Gutenberg block editor?<\/h3><\/dt>\n<dd><p>Yes. Field groups registered by SiteNivo appear as standard meta boxes in the Gutenberg sidebar. Classic Editor is also fully supported through the Classic Editor compatibility module.<\/p><\/dd>\n<dt id=\"will%20sitenivo%20conflict%20with%20advanced%20custom%20fields%20%28acf%29%3F\"><h3>Will SiteNivo conflict with Advanced Custom Fields (ACF)?<\/h3><\/dt>\n<dd><p>No. SiteNivo is a completely independent solution. It does not depend on, extend, or conflict with ACF. You can run both plugins simultaneously on the same site without issue.<\/p><\/dd>\n<dt id=\"where%20does%20sitenivo%20store%20my%20data%3F\"><h3>Where does SiteNivo store my data?<\/h3><\/dt>\n<dd><p>SiteNivo stores plugin configuration (post types, taxonomies, field groups, field definitions, options pages, etc.) in dedicated custom database tables.<\/p>\n\n<p>Field values are stored in standard WordPress storage so they remain portable and familiar:<\/p>\n\n<ul>\n<li>Post fields: <code>wp_postmeta<\/code> using <code>sitenivo_{field_key}<\/code><\/li>\n<li>User fields: <code>wp_usermeta<\/code> using <code>sitenivo_{field_key}<\/code><\/li>\n<li>Term fields: <code>wp_termmeta<\/code> using <code>sitenivo_{field_key}<\/code><\/li>\n<li>Options page fields: <code>wp_options<\/code> using <code>sn_opt_{field_key}<\/code><\/li>\n<\/ul>\n\n<p>Always read values with <code>sn_get_field()<\/code> or <code>sn_the_field()<\/code> rather than querying the database directly.<\/p><\/dd>\n<dt id=\"can%20i%20use%20sitenivo%20field%20values%20in%20my%20theme%20templates%3F\"><h3>Can I use SiteNivo field values in my theme templates?<\/h3><\/dt>\n<dd><p>Yes. Use the template functions:<\/p>\n\n<pre><code>`php\n<\/code><\/pre>\n\n<p>\/\/ Output the value of 'price' for the current post\nsn_the_field( 'price' );<\/p>\n\n<p>\/\/ Get the value (no output) \u2014 useful for conditionals\n$price = sn_get_field( 'price' );<\/p>\n\n<p>\/\/ Read an options page field\n$phone = sn_get_field( 'contact_phone', 'option' );\n    `<\/p><\/dd>\n<dt id=\"what%20happens%20if%20i%20uninstall%20sitenivo%3F\"><h3>What happens if I uninstall SiteNivo?<\/h3><\/dt>\n<dd><p>By default, uninstalling removes only the plugin files. All SiteNivo custom tables, configuration, and options remain in your database so you can reinstall later without losing work. To permanently delete SiteNivo tables and options on uninstall, enable <strong>Delete data on uninstall<\/strong> under <strong>SiteNivo \u2192 Settings \u2192 Security<\/strong> before removing the plugin. WordPress post meta and option values created by your field groups are never deleted automatically.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20my%20data%20if%20i%20deactivate%20sitenivo%3F\"><h3>What happens to my data if I deactivate SiteNivo?<\/h3><\/dt>\n<dd><p>Your custom database tables and all data remain in place. Your Custom Post Types and Taxonomies will no longer be registered (since SiteNivo registers them at runtime), so those post type's posts will be inaccessible in the admin, but no data is deleted. Reactivating SiteNivo restores everything immediately.<\/p><\/dd>\n<dt id=\"can%20i%20export%20my%20cpt%20and%20taxonomy%20configuration%20as%20code%3F\"><h3>Can I export my CPT and Taxonomy configuration as code?<\/h3><\/dt>\n<dd><p>Yes. SiteNivo includes a <strong>Code Generator<\/strong> that exports your Custom Post Types and Taxonomies as clean <code>register_post_type()<\/code> and <code>register_taxonomy()<\/code> PHP code. This code has zero dependency on SiteNivo and can be pasted directly into a theme or plugin.<\/p><\/dd>\n<dt id=\"is%20svg%20upload%20safe%3F\"><h3>Is SVG upload safe?<\/h3><\/dt>\n<dd><p>Yes. SiteNivo's SVG Support module does not simply whitelist the SVG MIME type. Every uploaded SVG file is fully parsed and sanitised using PHP's <code>DOMDocument<\/code>. Dangerous elements (<code>&lt;script&gt;<\/code>, <code>&lt;iframe&gt;<\/code>, <code>&lt;object&gt;<\/code>, etc.), event handler attributes (<code>onclick<\/code>, <code>onload<\/code>, etc.), and <code>javascript:<\/code> URIs in <code>href<\/code>\/<code>src<\/code> attributes are all stripped before the file is saved. Files over 512 KB are rejected. SVG uploads are only permitted for users with the <code>upload_files<\/code> capability.<\/p><\/dd>\n<dt id=\"is%20there%20a%20limit%20on%20the%20number%20of%20custom%20fields%2C%20post%20types%2C%20or%20field%20groups%3F\"><h3>Is there a limit on the number of Custom Fields, Post Types, or Field Groups?<\/h3><\/dt>\n<dd><p>No. SiteNivo imposes no artificial limits. You can create as many Custom Post Types, Taxonomies, Field Groups, Fields, or Options Pages as your site requires. Performance is determined by your server and database, not by SiteNivo.<\/p><\/dd>\n<dt id=\"does%20sitenivo%20support%20multisite%20%2F%20network%20installations%3F\"><h3>Does SiteNivo support multisite \/ network installations?<\/h3><\/dt>\n<dd><p>SiteNivo works in multisite environments on a per-site basis. Each site in the network has its own independent set of SiteNivo tables and configuration.<\/p><\/dd>\n<dt id=\"what%20php%20version%20is%20required%3F\"><h3>What PHP version is required?<\/h3><\/dt>\n<dd><p>SiteNivo requires <strong>PHP 8.1<\/strong> or higher. It uses typed properties, PSR-4 autoloading, and other modern PHP features intentionally \u2014 this ensures a clean, maintainable codebase and excellent performance.<\/p><\/dd>\n<dt id=\"how%20do%20i%20read%20meta%20values%20for%20a%20repeater%20or%20flexible%20content%20field%3F\"><h3>How do I read meta values for a Repeater or Flexible Content field?<\/h3><\/dt>\n<dd><p>Repeater and Flexible Content are Premium field types and are shown in the free plugin as locked \"Pro\" cards until SiteNivo Pro is installed. When available, Repeater fields return a multi-dimensional array. Each item in the array is one row of sub-fields:<\/p>\n\n<pre><code>`php\n<\/code><\/pre>\n\n<p>$team = sn_get_field( 'team_members' ); \/\/ array of rows\nforeach ( $team as $member ) {\n    echo esc_html( $member['name'] );\n    echo esc_html( $member['role'] );\n}\n    `<\/p>\n\n<p>Flexible Content fields return an array of layouts, each with a layout key identifying which layout template was chosen:<\/p>\n\n<pre><code>`php\n<\/code><\/pre>\n\n<p>$sections = sn_get_field( 'page_sections' );\nforeach ( $sections as $section ) {\n    if ( ( $section['_layout'] ?? '' ) === 'hero' ) {\n        \/\/ render hero\n    } elseif ( ( $section['_layout'] ?? '' ) === 'text_block' ) {\n        \/\/ render text block\n    }\n}\n    `<\/p>\n\n<\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0 \u2014 2026-06-21<\/h4>\n\n<p><strong>Initial public release.<\/strong><\/p>\n\n<ul>\n<li><strong>Custom Post Type Builder<\/strong> \u2014 full WordPress CPT argument support including labels, supports, rewrite rules, REST API, icons, and capabilities<\/li>\n<li><strong>Custom Taxonomy Builder<\/strong> \u2014 full taxonomy argument support with post type assignment<\/li>\n<li><strong>Custom Fields \u2014 33 field types<\/strong> \u2014 Text, Textarea, Email, URL, Password, Select, Checkbox, Number, Range, Color, Date, Time, Date Time Picker, WYSIWYG Editor, oEmbed, Link, Image, File Upload, Gallery, Post Object, Relationship, Taxonomy, User, Page Link, Google Map, OpenStreetMap, Tab, Accordion, Message, plus Repeater, Flexible Content, Clone, and Table in Premium<\/li>\n<li><strong>Location Rules Engine<\/strong> \u2014 16 built-in rule types with AND\/OR group logic<\/li>\n<li><strong>Options Pages<\/strong> \u2014 custom admin pages with full field group support<\/li>\n<li><strong>Post Columns Manager<\/strong> \u2014 custom columns for any post type list table<\/li>\n<li><strong>SVG Support<\/strong> \u2014 safe SVG upload with DOMDocument sanitization<\/li>\n<li><strong>Code Generator<\/strong> \u2014 PHP export for CPTs and Taxonomies<\/li>\n<li><strong>REST API integration<\/strong> \u2014 show_in_rest and rest_base per CPT\/Taxonomy<\/li>\n<li><strong>Clean data architecture<\/strong> \u2014 plugin configuration in custom tables; field values in standard WordPress meta\/options<\/li>\n<li><strong>Import \/ Export<\/strong> \u2014 JSON migration for all free SiteNivo modules<\/li>\n<li><strong>Admin Menu Builder<\/strong> \u2014 custom admin menus and pages<\/li>\n<li><strong>Maintenance Mode<\/strong> and <strong>Coming Soon<\/strong> \u2014 branded holding pages<\/li>\n<li><strong>WP Reset<\/strong> \u2014 selective site cleanup tools<\/li>\n<li><strong>Settings<\/strong> \u2014 editor, performance, security, and integrations<\/li>\n<li><strong>PHP 8.1 codebase<\/strong> \u2014 typed properties, PSR-4 autoloading, modern architecture<\/li>\n<\/ul>","raw_excerpt":"Build Custom Post Types, Taxonomies, 33 field types, and Options Pages from a clean admin UI \u2014 no code required.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/334648","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=334648"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/forgewpdevx"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=334648"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=334648"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=334648"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=334648"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=334648"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=334648"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}