1.17.1 - Content Corral Refactor & Sitemap Importer Overhaul
· 3 min read
Version 1.17.1 is a comprehensive refactor of Content Corral. The settings page and sitemap importer no longer depend on ACF, the CSV parser has been extracted into a dedicated class with fuzzy header matching, and several new features make the importer more robust and the settings more flexible.
ADDS
- [CONTENT CORRAL] Native settings page under Settings > Content Corral — replaces ACF options pages. Works without ACF Pro active.
- [CONTENT CORRAL] Per-taxonomy enable/disable toggles in settings — disable taxonomies that aren't needed for a given project.
- [CONTENT CORRAL] Author selection dropdown on the sitemap importer — choose which user imported pages are attributed to. Uses Select2 for searchable selection.
- [CONTENT CORRAL] Smart content source parsing — the "Content Source" CSV column is intelligently parsed to separate URLs from freeform notes. URLs are stored as clickable links in a new Content Source meta box on the page editor.
- [CONTENT CORRAL] New
CsvParserclass with fuzzy header detection, hierarchy column matching, metadata column mapping, and section marker filtering. Handles the wide variation in Content Strategy spreadsheet formats. - [CONTENT CORRAL] Activation documentation — Content Corral must be bootstrapped by the client theme. This is now documented with a code snippet.
CHANGES
- [CONTENT CORRAL] Settings page and Sitemap Importer consolidated into a single admin page (Settings > Content Corral). The separate Tools > Sitemap Importer page has been removed.
- [CONTENT CORRAL] ACF Content source URLs repeater field removed. Content source data is now stored as a structured array in post meta with a native meta box for display.
- [CONTENT CORRAL] ACF "Content details" textarea fields (Content type, Internal notes, Yoko notes) now display side-by-side at 33% width with 3 rows instead of stacked vertically at full width.
- [CONTENT CORRAL] File upload security hardened:
is_uploaded_file(),finfo_file()MIME validation, 5 MB size limit,wp_check_filetype()extension check. - [CONTENT CORRAL] All capability checks upgraded from
edit_poststomanage_options— importing creates pages site-wide, so it should be admin-only. - [CONTENT CORRAL] Content Corral user role is now created once and checked with
get_role()instead of being recreated on everyinitrequest.
FIXES
- [CONTENT CORRAL] Fixed deprecated
get_page_by_title()call (deprecated since WP 6.2). Replaced withget_pages()approach. - [CONTENT CORRAL] Fixed N+1 query in page creation — existing pages per parent are now queried once and indexed by title.
- [CONTENT CORRAL] Fixed
wp_insert_post()return value not checked for errors. - [CONTENT CORRAL] Fixed CSV data stored without sanitization — all meta values now pass through
sanitize_text_field()orsanitize_textarea_field(). - [CONTENT CORRAL] Fixed
apply_filters()for metadata map called ~450 times during header detection — now cached after first call. - [CONTENT CORRAL] Fixed
set_default_terms()usingposts_per_page => -1— now batched withfields => ids. - [CONTENT CORRAL] Fixed hardcoded
post_author => 1— now uses the selected author or current user. - [CONTENT CORRAL] Fixed
strtotime()return value not checked forfalse. - [CONTENT CORRAL] Added i18n to all user-facing strings with
yoko-coretext domain. - [PHONE NUMBER BLOCK] Fixes bug with Phone number block in editor that caused conflicts between the label and button text
- [BUG] Fixes a CPTSync log PHP warning error related to missing
log_subdir_folderproperty