Skip to content

Prevent empty Quick Draft submissions from WordPress dashboard#11380

Open
OpuRockey wants to merge 1 commit intoWordPress:trunkfrom
OpuRockey:ticket/64952
Open

Prevent empty Quick Draft submissions from WordPress dashboard#11380
OpuRockey wants to merge 1 commit intoWordPress:trunkfrom
OpuRockey:ticket/64952

Conversation

@OpuRockey
Copy link
Copy Markdown

Ticket: https://core.trac.wordpress.org/ticket/64952

Summary

This PR fixes an issue in the WordPress dashboard Quick Draft widget where a draft could be submitted even when both the title and content fields were empty.

The update introduces validation to prevent submission unless at least one of these fields contains input, improving data integrity and user experience.

Problem

Currently, the Quick Draft form allows users to submit completely empty drafts. This results in unnecessary blank draft entries being created in the database, which can clutter the posts list and create confusion.

Similar inconsistencies with Quick Draft behavior have been observed historically, where drafts may be created without meaningful content due to missing validation.

Solution

  • Added validation to the Quick Draft submission flow.
  • Prevents form submission when both title and content are empty.
  • Ensures at least one field is filled before allowing draft creation.

Changes

  • Introduced conditional checks before submitting the Quick Draft form.
  • Updated relevant JavaScript/PHP logic to block empty submissions.

Testing Steps

  • Go to WordPress Dashboard → Quick Draft widget.
  • Leave both Title and Content empty.
  • Attempt to submit.
  • Confirm that submission is blocked.
  • Add either a title or content and submit again.
  • Confirm that the draft is successfully created.

@github-actions
Copy link
Copy Markdown

The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs. You can also manually ask me to refresh this list by adding the props-bot label.

Core Committers: Use this line as a base for the props when committing in SVN:

Props opurockey.

To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook.

@github-actions
Copy link
Copy Markdown

Test using WordPress Playground

The changes in this pull request can previewed and tested using a WordPress Playground instance.

WordPress Playground is an experimental project that creates a full WordPress instance entirely within the browser.

Some things to be aware of

  • All changes will be lost when closing a tab with a Playground instance.
  • All changes will be lost when refreshing the page.
  • A fresh instance is created each time the link below is clicked.
  • Every time this pull request is updated, a new ZIP file containing all changes is created. If changes are not reflected in the Playground instance,
    it's possible that the most recent build failed, or has not completed. Check the list of workflow runs to be sure.

For more details about these limitations and more, check out the Limitations page in the WordPress Playground documentation.

Test this pull request with WordPress Playground.

e.preventDefault();

// Don't submit if both the title and content are empty.
if ( '' === t.find('#title').val() && '' === t.find('#content').val() ) {
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: Additional spaces needed in the arg passed the find() method. Might as well put each on their own line to make it easier to read:

Suggested change
if ( '' === t.find('#title').val() && '' === t.find('#content').val() ) {
if (
'' === t.find( '#title' ).val() &&
'' === t.find( '#content' ).val()
) {


// Don't submit if both the title and content are empty.
if ( '' === t.find('#title').val() && '' === t.find('#content').val() ) {
$('#title').trigger( 'focus' );
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
$('#title').trigger( 'focus' );
$( '#title' ).trigger( 'focus' );

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants