Codeinwp / Codeinwp/feedzy-rss-feeds

Import jobs can create posts with empty titles after title processing

Open
#1,330 2 comments 0 reactions 1 assignee View on GitHub

@girishpanchal30 is already working on this.

Since Sep 14, 2026.

  • #1335 by @girishpanchal30 — merged
bug-report bug-report-triage
Dominant language
PHP
Stars
121
Forks
27
Avg merge
2d 1h
Merged PRs (30d)
11

Description

Summary

Feed-to-post imports can persist an item whose resolved title becomes empty during title processing. Expected behavior is for an item with no usable processed title to be excluded from post creation. Actual behavior is that the item can reach post insertion with an empty title while its content remains populated, leaving imported posts difficult to identify and manage.

Customer context

Product / area: Feedzy RSS Feeds Premium, feed-to-post imports
Version: Premium 3.2.3
Environment: WordPress site; further versions and configuration were not provided
Integration / third party: Source feed and title mapping details were not provided
Reported error / symptom: “bad imports..no title”
Impact: Imported posts were reported without titles after 611 days of product use

Reproduction notes

Reported reproduction is incomplete. The only observed sequence is that Feedzy Premium 3.2.3 was active and imports produced posts described as having no title. Source inspection provides this inferred check:

  1. Configure an import with non-empty content and a title mapping or title-processing step that resolves to an empty string.
  2. Run the import.
  3. Inspect whether a post is created with an empty title.

The exact feed and title configuration from the reporting site are unavailable.

Diagnosis

Conclusion

The shared Feedzy importer can insert a post after its resolved title becomes an empty string. The importer constructs and transforms the title, builds the final post arguments, then validates only whether the pre-filter title is null; an empty string remains eligible for wp_insert_post(). This matches the reported titleless-import symptom, although the submission does not identify which title transformation produced the empty value.

Where this likely occurs
  • Feed-to-post title construction: includes/admin/feedzy-rss-feeds-import.phpFeedzy_Rss_Feeds_Import::run_job_logic() lines 2123–2154 replaces title tags and then runs chained actions, Pro custom-tag parsing, and service filters, each of which can alter the resolved title.
  • Final post creation: includes/admin/feedzy-rss-feeds-import.phpFeedzy_Rss_Feeds_Import::run_job_logic() lines 2437–2468 creates the filtered post arguments but checks is_null( $post_title ) rather than whether the final title is usable; lines 2543–2552 pass those arguments to wp_insert_post().
  • Feed normalization: includes/abstract/feedzy-rss-feeds-admin-abstract.phpFeedzy_Rss_Feeds_Admin_Abstract::get_feed_item_filter() lines 1852–1865 supplies “Post Title” when an ordinary nonnumeric title setting receives an empty source title. This narrows the exposed path to later title transformations or filters rather than the normal source-title path.
  • Premium entry point: includes/abilities/imports/feedzy-rss-feeds-pro-run-import.phpFeedzy_Rss_Feeds_Pro_Run_Import::execute() lines 85–104 instantiates and runs the shared free-plugin importer, making this core path reachable from Premium 3.2.3.
  • Git blame traces the null-only validation to commit aa3039ec from 2020. No evidence of an earlier working release boundary was found.
Engineering notes

The defect is in the free plugin’s shared import engine, while the report came from Premium 3.2.3. Premium title features can participate through feedzy_parse_custom_tags and feedzy_invoke_services, but the submission does not reveal whether custom tags, chained actions, an AI service, or another filter was configured. The normal feed-title normalization path has had an empty-source fallback since commit 05a6b793, so a malformed feed title alone is not demonstrated as the trigger in the current inspected source.

Test coverage status

tests/test-import.phpFeedzy_Rss_Feeds_Test::test_feedzy_imports() lines 207–225 covers a feedzy_insert_post_args callback that empties both title and content and expects no created post. It does not cover an empty title with non-empty content. Premium coverage in tests/test-plugin.php lines 171–220 has the same gap while asserting normal title imports.

What to verify or explore next
  • Reproduce with a published import whose title mapping resolves to an absent custom tag while content resolves normally.
  • Reproduce with feedzy_insert_post_args returning an empty post_title and non-empty post_content.
  • Check whether chained title actions and each enabled Premium title service can return an empty string for otherwise valid feed items.
  • Run the focused free and Premium import PHPUnit suites against the paired versions used with Premium 3.2.3.
Unknowns / follow-up
  • The source feed, free-plugin version, import title template, post status, and enabled title-processing features are unknown.
  • No runtime reproduction or import log accompanied the uninstall feedback.

Confidence

Confidence: 84/100

The report is sparse, but the shared importer has a reachable, longstanding path that passes an empty processed title to WordPress despite an explicit validation branch intended to reject empty title/content imports. Normal feed titles receive a fallback, so confirmation is scoped to titles emptied by mappings, actions, services, or filters.


Source: automated uninstall feedback — feedzy-rss-feeds-pro, 2026-09-07
Generated by bug-report-triage (ID: bug-report-triage_6a9f96c02e7a17.60052802)

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.