WordPress.org

Make WordPress Core

Opened 5 years ago

Last modified 4 months ago

#38097 new enhancement

Add ability to Settings API to assign positioning

Reported by: dartiss Owned by:
Milestone: Future Release Priority: normal
Severity: normal Version: 4.7
Component: Administration Keywords: has-patch
Focuses: administration Cc:

Description

When using the Settings API to add a settings field, particularly if adding to an existing settings screen, it would be nice to have some way of positioning the new field, as you can with add_menu_page, for instance.

So, I've just updated a plugin in which I've added a single settings to the existing "General" settings screen. It's date related and it would sit nicely in a specific position on that screen, but I have no control over it. So, a "position" field, as add_menu_page has, would be a nice addition to provide a more nuanced result.

Attachments (3)

38097.diff (2.6 KB) - added by kapilpaul 4 months ago.
Created patch.
38097.2.diff (1.8 KB) - added by kapilpaul 4 months ago.
Updated patch.
38097.3.diff (1.0 KB) - added by kapilpaul 4 months ago.
fix: coding standards

Download all attachments as: .zip

Change History (12)

This ticket was mentioned in Slack in #core by peterwilsoncc. View the logs.


6 months ago

#2 @peterwilsoncc
6 months ago

  • Milestone changed from Awaiting Review to 5.8

#3 @ribaricplusplus
6 months ago

Hi @dartiss,

We discussed this issue during a triage and agreed that this should be done.

For anyone interested in implementing a patch, here is a suggestion how it could be done:

Add $position to add_settings_field arguments, and then save it in $wp_settings_fields[ $page ][ $section ][ $id ] alongside other settings. Then before outputting fields in do_settings_fields we can do a sort so that the fields are output in accordance with $position.

#4 @dartiss
6 months ago

Thanks.

Having recently re-looked at this, the built-in core settings are hard-coded (i.e. they're not added by the Settings API), so these would need to be modified too, to allow more precise positioning of additional options.

#5 @poena
4 months ago

  • Milestone changed from 5.8 to Future Release

Moving to future release since no patch has been submitted yet.

@kapilpaul
4 months ago

Created patch.

This ticket was mentioned in PR #1311 on WordPress/wordpress-develop by kapilpaul.


4 months ago

  • Keywords has-patch added

This PR will add the ability to assign a position in settings API

Trac Ticket: https://core.trac.wordpress.org/ticket/38097

_Custom Settings added with Position_

https://i0.wp.com/user-images.githubusercontent.com/9963909/120040590-abe3f400-c028-11eb-90b3-af605c4d10e4.jpg

_Output_

https://i0.wp.com/user-images.githubusercontent.com/9963909/120040661-c918c280-c028-11eb-8262-a160250f8f5c.jpg

@kapilpaul
4 months ago

Updated patch.

#7 @kapilpaul
4 months ago

  • Focuses administration added

@ribaricplusplus

Hi,

I have added a patch for this issue. But still could not fulfill as @dartiss mentioned in the issue.

https://github.com/WordPress/wordpress-develop/blob/24a70204db8d9ca5c6ddfc2c22247418fa0af5a1/src/wp-admin/options-general.php#L64

In options-general.php file settings fields are hardcoded. So there is no positioning that can be set as of now. Do we want to modify this as well to support the position? If so, then can you please guide/explain, so that I can implement it.

Thanks

#8 @dartiss
4 months ago

Hi 👋🏼

Thank you @kapilpaul for the patch.

I see these as two issues but put them into one ticket as one was reliant on the other - I'm not sure if you want to split it or not.

The first stage, which you've done, is to add a positioning parameter to the Settings API so that we could define where on a screen a particular options should appear.

However, this doesn't allow you to do this with the existing default settings, as they're all hard-coded, rather than using the API. Let me give you an example - if I created a plugin that was to do with Pingbacks and I wanted to add a new option next to the existing Pingback option then, even with this new positioning parameter, you couldn't do it as the core settings isn't using the API.

So, the second stage is to modify the core settings so that they too using the API - it not only allows for the example that I just gave but is, well, let's be honest, it's just right that WordPress should be using its own APIs, where possible, to provide a standardised design.

I hope this explains it a little further.

@kapilpaul
4 months ago

fix: coding standards

#9 @kapilpaul
4 months ago

@dartiss

Hi

Thanks for explaining the issue. I was also thinking the same. But before changing the core things I thought It'll be better if I get a good direction for that.

Note: See TracTickets for help on using tickets.