Post Meta Schema
All per-flipbook fields live in wp_postmeta with the _tncfb3d_ prefix. Overridable fields also have a _tncfb3d_{field}_override companion (set to 1 when the per-flipbook value should win over the global default).
The single source of truth is class-tnc-flipbook-3d-meta-schema.php. Read it programmatically:
$schema = TNC_Flipbook_3D_Meta_Schema::get();
$default = TNC_Flipbook_3D_Meta_Schema::default_for( 'flipDuration' );
$value = TNC_Flipbook_3D_Meta_Schema::sanitize( 'flipDuration', $raw );
Content source
source_type (pdf|images|multi_pdf), pdf_id, pdf_password, pdf_ids (array of {id, name}), image_ids (array), page_count.
Display
width, height, flipDuration, fastFlipDuration, flipSound, flipSoundCustom_id, curlIntensity, flipEffect, renderScale.
Appearance
toolbarLayout, flipbookStyle (default|hardcover|spiral), isRTL, paperType, paperTint, pageShininess, pageRoughness.
Colors
chrome (slate|paper|midnight|ocean|forest|glass|sepia), brandColor, coverColor, colorMode (auto|dark|light).
Camera & 3D
cameraDistance, cameraAngle, cameraFOV, bookTilt.
Lighting
ambientLightIntensity, mainLightIntensity, mainLightPosition, shadowsEnabled, shadowSoftness, shadowOpacity, dropShadowEnabled.
UI & navigation
language, linkTarget, deepLinking, pdfLinkOverlay, renderMode, defaultViewMode, pageMode, forceSinglePageMobile, defaultZoom.
Loading & branding
loadingLogo_id, loadingLogoDark_id, loadingLogoMaxWidth, ga4MeasurementId.
Accessibility (a11y_*)
enabled, skipLinks, keyboardShortcuts, screenReaderAnnouncements, focusIndicators, reducedMotion, highContrastMode, keyboardShortcutsHelp.
TTS (tts_*)
provider, speed, browser_lang, autoflip. Generated audio sets live in _tncfb3d_tts_manifest (a separate JSON blob).
Content protection (protection_*)
enabled, watermark_* (enabled, type, text, opacity, fontSize, color, rotation, repeat, position, image_id, imageWidth, includeInDownload, includeInPrint), disableRightClick, disableKeyboardShortcuts, disableImageDrag, disableSelection, disableDownload, devTools_* (enabled, action, message), print_*, screenshot_*, hideSourcePaths.
Toolbar (26 toggles)
toolbar_{item} where {item} is one of:
share, download, print, search, tilt, rotate, zoom, readingMode,
readAloud, fullscreen, themeToggle, moreMenu, pageIndicator, logo,
autoPlay, sound, singlePage, bookmarks, notes, thumbnails, viewModes,
formViewer, flipbookStyles, rtl, navigation, firstLast
WooCommerce / gating
woo_product_id (CSV of product IDs), preview_pages, gating_message, purchase_button_text, purchase_url.
Advanced
page_videos (array), hotspots (array), toc_custom (array of {title, page}).
SEO
seo_title, seo_description, seo_robots, seo_canonical, seo_og_image_id.
Override pattern
Most fields support per-flipbook override. To set both:
update_post_meta( $post_id, '_tncfb3d_flipDuration', 1500 );
update_post_meta( $post_id, '_tncfb3d_flipDuration_override', 1 );
Without _override = 1, the config builder ignores the per-flipbook value and uses the global default. Use TNC_Flipbook_3D_Meta_Schema::get_overridable() to get the list of overridable keys programmatically.
Modifying the schema
add_filter( 'tncfb3d_meta_schema', function( $schema ) {
$schema['my_field'] = [
'default' => '',
'type' => 'string',
'overridable' => false,
'sanitize' => 'sanitize_text_field',
];
return $schema;
} );
Once added, the field is auto-saved on the metabox save and read by the config builder. To surface it in the admin UI, add a field via tncfb3d_metabox_tab_content_{key}.
Global settings counterpart
The tnc_flipbook_3d_settings option mirrors the overridable subset of the schema, plus integration credentials. Read with:
$options = get_option( TNC_FLIPBOOK_3D_OPTION, [] );
$flip_duration = $options['flipDuration'] ?? 1200;