I have a form in the admin-backend of a selfmade plugin, written the old fashioned style. So I'm not using the Settings API. Instead I've written a form, added nonces, wrote an endpoint checking the nonces and so on.

Now I want to utilize the Settings API of WordPress to provide a modern way of managing my plugin. But I'm stuck with handling the API according my needs for adding additional input fields dynamically (accomplished via JavaScript).

Here's my use case (simplified): I'm managing the box offices of movies. So I have a bunch of movies, I read from a custom table and create an output via foreach:

// $movies contains the result of my MySQL query
foreach ($movies as $mkey => $mvalue) {
        $moviefacts = new NT_Movie($mvalue['tmdb_id']);
        echo '<tr>
        <td style="width: 60px"><img src="'.$moviefacts->get_the_poster_url('xs') . '" width="50" /></td>
        <td><input type="hidden" name="id[]" value="' . $mvalue['id'] . '" />
        <input type="text" name="moviename[]" value="' . $moviefacts->get_the_title() . '" /></td>
        <td><input type="text" name="real_visitors[]" value="' . $moviefacts->get_the_real_visitors().'" /></td>
        <td><input type="text" name="tmdb_id[]" value="' . $mvalue['tmdb_id'].'" /></td>

For adding new movies to the list, I've created a JavaScript, which adds new rows to the form:

function AddFormField() {
    <td><input type="hidden" name="id[]" value="" />
    <input type="text" name="moviename[]" /></td>
    <td><input type="hidden" name="real_visitors[]" value="DUMMY_NEW_VALUE" /></td>
    <td><input type="text" name="tmdb_id[]" /></td>
    return false;

With this approach, I can iterate through the fields when processing the form, regardless of the amount of datasets: New datasets are recognized by the value "DUMMY_NEW_VALUE" and existing datasets get updated, if something has changed in them.

Do you have any approach, how to transform this setting to the Settings API of WordPress?

Thanks in advance.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.