NOW Finance Social Content Importer

Description

NOW Finance Social Content Importer connects to supported social-media APIs and imports posts, images, video references, descriptions, hashtags, and engagement counts into WordPress.

New imports are drafts by default. Automatic imports, public REST access, and local MP4 downloads are all opt-in. The plugin includes a responsive [nsci_content_feed] shortcode and works without ACF, Elementor, or FileBird. Those plugins can optionally consume or organize the metadata created by NOW Finance Social Content Importer.

Each provider requires credentials and API access supplied by the site owner. This is a bring-your-own-developer-application plugin; installing it does not grant access to provider APIs.

Features

  • TikTok Display API connection with OAuth token refresh.
  • Instagram Graph API imports for supported professional accounts.
  • LinkedIn Posts API imports for approved organization or member integrations.
  • LinkedIn OAuth 2.0 authorization using app Client ID and Client Secret, with encrypted token storage and refresh-token support when LinkedIn enables it for the app.
  • Draft-first imports with source-ID deduplication and update-only mode.
  • Guarded image and optional video sideloading with size and host restrictions.
  • Manual imports, WP-Cron scheduling, WP-CLI commands, and an administrator REST import route.
  • Resumable background import batches that bound per-request enrichment and media downloads.
  • Dependency-free public feed shortcode.
  • A plugin-managed, fully named post type or any existing WordPress post type as the import destination.
  • Field-by-field mapping to ACF field names, JetEngine/Crocoblock meta keys, or standard WordPress post meta.
  • Optional ACF, JetEngine/Crocoblock, Elementor, and FileBird integration.

Shortcodes

Imported content feed

[nsci_content_feed] displays the latest published items from the configured destination post type in a responsive grid.
  • count: Number of posts to display, from 1 to 100. Default: 12.
  • source: Optional provider filter: tiktok, instagram, or linkedin.
  • columns: Number of grid columns, from 1 to 4. Default: 3.

Example: [nsci_content_feed source="instagram" count="6" columns="2"]

Single content field

[nsci_content_field field="short_description"] displays one mapped field from the current imported item.
  • field: Required registered field key.
  • post_id: Optional destination post ID. When omitted, the current post is used.
  • fallback: Optional plain-text value displayed when the field is empty or unavailable.

Example: [nsci_content_field field="like_count" post_id="123" fallback="0"]

Available canonical field keys: video_url, image_url, post_unique_id, hashtags, button_link, video_description, post_date, short_description, like_count, comment_count, source, source_id, source_caption, embed_link, embed_html, media_type, media_category, imported_at, video_bg_type, video_mp4_url, video_mp4_attachment_id, and video_iframe_url. Shortcodes continue to use these canonical names even when their stored field/meta keys are mapped.

External services

This plugin communicates with third-party services only after an administrator supplies credentials or connects an account. Depending on the enabled provider and action, it sends access tokens, account or author identifiers, requested content fields, paging cursors, and OAuth data to that provider. It receives social posts, media URLs, account data, engagement counts, and token responses. The plugin developer receives no telemetry from these requests.

TikTok

Used for Login Kit OAuth, token management, profile checks, and reading the connected user’s public videos through the TikTok Display API.

  • Service: https://developers.tiktok.com/
  • Developer Terms: https://www.tiktok.com/legal/page/global/tik-tok-developer-terms-of-service/en
  • Terms of Service: https://www.tiktok.com/legal/page/global/terms-of-service/en
  • Privacy Policy: https://www.tiktok.com/legal/page/row/privacy-policy/en

Meta / Instagram

Used to read media and account data for a configured professional Instagram account through the selected Instagram Graph API host.

  • Service: https://developers.facebook.com/docs/instagram-platform/
  • Platform Terms: https://developers.facebook.com/terms/
  • Privacy Policy: https://www.facebook.com/privacy/policy/

LinkedIn

Used to read posts, media assets, and social-action counts for the configured LinkedIn author. Access to Community Management APIs may require LinkedIn review and an approved access tier.

  • Service: https://learn.microsoft.com/linkedin/marketing/community-management/community-management-overview
  • API Terms of Use: https://www.linkedin.com/legal/l/api-terms-of-use
  • User Agreement: https://www.linkedin.com/legal/user-agreement
  • Privacy Policy: https://www.linkedin.com/legal/privacy-policy

Privacy

The plugin does not send analytics or telemetry to its developer. It stores provider credentials and tokens in encrypted form in the WordPress database. Imported content, provider identifiers, import history, and downloaded media are also stored locally.

Public REST access is disabled by default. When enabled, published imported content becomes available through both the plugin REST endpoint and the WordPress core endpoint for the configured destination post type when that type supports REST.

Site owners are responsible for disclosing connected providers, imported content, retention, and public presentation in their own privacy policy. The plugin adds suggested wording to the WordPress Privacy Policy Guide.

Only import and locally copy media that you are authorized to use. Provider terms and access policies continue to apply.

Upgrading from 2.0.0

Deactivate the previous Social Content Importer before activating this renamed plugin. Do not delete the old plugin through WordPress: its uninstall routine removes shared settings and credentials. Keep a database backup before upgrading.

Existing settings, content destinations, custom field mappings, and video-format taxonomy relationships are preserved. New installations use nsci_social_video, nsci_video_format, and nsci_ prefixed metadata. Administrator-configured external field keys and existing post types retain their chosen names.

Replace [social_content_feed] and [social_content_field] in pages/templates with [nsci_content_feed] and [nsci_content_field]. REST integrations now use /wp-json/nsci/v1/ and CLI commands use wp nsci-content. Update the authorized callback URLs in both TikTok and LinkedIn developer applications to the exact URLs shown in Connections, then start a new connection flow. Old in-progress OAuth flows must be restarted.

Installation

  1. Upload the now-finance-social-content-importer folder to /wp-content/plugins/, or install the plugin ZIP from Plugins > Add New.
  2. Activate NOW Finance Social Content Importer.
  3. Open Social Content in WordPress administration.
  4. Open Social Content > Settings. Keep the plugin-managed post type (and name it for your site), or select an existing post type and map the import fields to your custom-field keys.
  5. Choose a provider and follow its setup instructions. Provider approval and required scopes must already be available to your developer application.
  6. Save the credentials and use Test Connection before importing.
  7. Run a manual import and review the resulting drafts.
  8. Add [nsci_content_feed] to a page if you want to display published imports.
  9. Enable automatic imports, public REST access, or local MP4 downloads only if your site requires them.

For stable credential encryption across WordPress salt rotations, define a long random NSCI_SECRET_KEY string in wp-config.php. Either the Sodium or OpenSSL PHP extension must be available.

FAQ

Does this plugin provide social API credentials?

No. The site owner must create or control the relevant developer application, obtain provider approval, and supply credentials with the required scopes.

Does it require ACF, JetEngine, Elementor, or FileBird?

No. On a new installation the plugin registers its own post type and stores standard WordPress metadata. In Settings, you can instead select an existing post type and map every imported field to the field/meta names created in ACF, JetEngine/Crocoblock, or another custom-field tool. The optional native field editor works without those plugins. FileBird can optionally organize imported attachments.

What happens if I change the destination or a field mapping?

Future imports use the newly selected post type and field keys. Existing posts and values are not moved automatically. The plugin retains private source identity metadata for deduplication inside each destination, and continues to read legacy fields from posts imported before version 2.0.

Can I choose custom fields from my existing post type?

Yes. In existing-post-type mode, field mappings offer dropdowns containing ACF fields, JetEngine fields, WordPress-registered metadata, and stored custom-field keys found on up to 200 recent posts (up to 500 stored keys). The list refreshes when you choose a different destination. Discovery reads field definitions and names; it does not send stored field values to the browser.

Each choice shows Match, Error, or Type unknown. Known incompatible types cannot be saved. For example, an imported image URL needs a URL or text field; it cannot be written directly into an ACF Image field that expects an attachment ID. Repeaters, groups, relationship fields, and date fields requiring a different storage format are not automatically converted. Fields without a declared schema are marked Type unknown and must be checked before importing. ACF groups with additional location conditions may need an actual post context and may not appear in the post-type list.

The plugin default remains available for every import field. ACF mappings use the field key when writing new posts so ACF can create its field reference. Other integrations can add field schemas with the nsci_discovered_fields filter; custom-table-only storage requires a separate integration.

How do I display imported posts?

Use [nsci_content_feed]. Optional attributes are count (1-100), source (tiktok, instagram, or linkedin), and columns (1-4). For example: [nsci_content_feed source="instagram" count="6" columns="2"]. Use [nsci_content_field field="short_description"] to output one registered field.

Are imports published automatically?

No. New installations import posts as drafts by default. Administrators can change the new-post status in Settings.

Does the plugin call providers immediately after activation?

No. New installations have automatic imports disabled. Provider requests begin when an administrator configures and tests a connection or deliberately starts an import.

What happens when the plugin is deleted?

Credentials, settings, caches, history, and scheduled events are removed. Imported posts and media are retained to prevent unexpected content loss. Delete those items separately if a full purge is required.

Reviews

There are no reviews for this plugin.

Contributors & Developers

“NOW Finance Social Content Importer” is open source software. The following people have contributed to this plugin.

Contributors

Changelog

2.0.2

  • Show a connect-channel prompt until a channel is connected, and limit import controls to connected channels.

2.0.1

  • Renamed the plugin and text domain for directory submission.
  • Prefixed plugin registrations and default storage keys with nsci.
  • Added OAuth permission checks for one-time state and the initiating administrator.
  • Corrected the contributor username and TikTok developer terms link.

2.0.0

  • Redesigned the WordPress admin experience around four pages: Overview, Connections, Content, and Logs.
  • Added a guided setup checklist, provider switcher, live resumable-import progress, completion summaries, and queued-import cancellation.
  • Kept update-existing, background-video resolution, cache clearing, canonical field mapping, and detailed import logs available in the consolidated interface.
  • Added a choice between a plugin-managed post type and an existing site post type.
  • Added configurable managed post type key, singular label, and plural label.
  • Added field-by-field mappings for ACF, JetEngine/Crocoblock, and standard post meta.
  • Applied the selected post type and mappings to imports, REST output, shortcodes, CLI commands, taxonomies, metadata registration, and video backfills.
  • Preserved private source identity metadata for reliable deduplication and legacy reads.

1.9.2

  • Filtered restricted LinkedIn posts before resumable import snapshots are stored.
  • Stopped persisting expiring provider CDN URLs and removed legacy copies during upgrade.
  • Added the plugin-owned nsci_source taxonomy without removing legacy source-tag compatibility.
  • Prevented collisions with a video_format taxonomy registered by another plugin.
  • Required HTTPS before starting a new TikTok OAuth connection.
  • Made legacy plaintext credentials and tokens fail closed when encryption is unavailable.
  • Kept source unique IDs out of the public core REST meta response.
  • Made uninstall cleanup work consistently from both wp-admin and WP-CLI.

1.9.1

  • Added a native Social Content Fields editor when ACF is unavailable.
  • Centralized and registered imported content metadata for themes and dynamic-content integrations.
  • Added the nsci_content_field shortcode and an in-plugin shortcode reference.
  • Removed the legacy embed URL migration tool and WP-CLI command.
  • Added dashboard toggles for post-type creation and the native content-field editor.
  • Changed post-type registration and the native Social Content Fields editor to opt-in defaults.
  • Confirmed release compatibility with WordPress 7.1 and restored the GPL license notice.

1.9.0

  • Changed new-install defaults so automatic imports and local background-video downloads require opt-in.
  • Registered a dependency-independent metadata schema.
  • Unified custom and core REST exposure behind the Public REST Access setting.
  • Added a responsive nsci_content_feed shortcode.
  • Added WordPress Privacy Policy Guide content and complete external-service disclosures.
  • Added public-release packaging and quality-tool configuration.
  • Minimized anonymous REST responses and hardened OAuth callback and stored-error handling.

1.8.0

  • Added LinkedIn image and video resolution improvements, import history, and credential-storage hardening.