Beste Forumers,

Te weinig bezig met PHP en kom er niet uit.
Het probleem is het volegende;

In een array probeer ik een dropdown menu te maken.
Dat lijkt deels te lukken maar krijg met de foreach opeens een tweede dropdown menu en krijg de goede niet gevuld met data.
Misschien kan iemand mij de goede kant op helpen.
Deze code gebruik ik;

echo '<select>';
$fields['job']['job_doelgroep_info'] = array(
'label' => __( 'Target information: ', 'extra-field' ),
'type' => 'select',
'required' => false,
'placeholder' => '',
'omschrijving' => '',
'priority' => 8,
);

echo '<option id="$fields">Please Choose</option>';
foreach ($fields as $key => $value) {
echo "$key = $value\n";
}
echo "</select>";
return $fields;

}
Waar is de <option> in je foreach?
Okay dan zou het dit worden. Het probleem is nog steeds dat ik dit niet in het array $fields['job']['job_doelgroep_info'] maar krijg.

Er komt opeens wel een extra dropdown veld bij met deze opties.


echo '<select>';
$fields['job']['job_doelgroep_info'] = array(
'label' => __( 'Target information: ', 'extra-field' ),
'type' => 'select',
'required' => false,
'placeholder' => '',
'omschrijving' => '',
'priority' => 8,
);

echo '<option id="$fields">Please Choose</option>';
foreach ($fields as $key => $value) {

echo "<option>Test</option>";
echo "<option>Test2</option>";
echo "<option>Test3</option>";

}
echo "</select>";
return $fields;

}
Je herhaalt nu dus steeds Test1, Test2 en Test3.

Je weet wat foreach doet?
Na gepuzzel en try en error een oplossing gevonden.
Wie weet heeft iemand anders ook wat aan deze manier.
Bedankt voor de input.

$fields['job']['job_doelgroep_info'] = array(
'label' => 'Select',
'type' => 'select',
'required' => false,
'placeholder' => '',
'omschrijving' => '',
'priority' => '8',
'options' => array(
'option 1' => 'Kies een optie',
'option 2' => 'optie 1',
'option 3' => 'optie 2'
)
);

return $fields;
}

'option 2' => 'optie 1',
'option 3' => 'optie 2'

Heerlijk dit soort logica ...
Fijn dit soort sarcasme, lekker opbouwend. :=(
Haha, het was ook best grappig toch ;-) Het was goed bedoeld hoor ;-) En wellicht voor jou ook een reminder om altijd de logica een beetje in de gaten te houden. Overigens zeg ik niet dat het fout is om een 'option 2' een waarde 'optie 1' te geven, maar je maakt het jezelf op die manier niet echt gemakkelijk.

Hier een voorbeeldje van hoe een formulier met dropdown er in html uitziet:

https://www.w3schools.com/tags/tryit.asp?filename=tryhtml_select

Dan heb je een beetje houvast.
'Kies een optie' zou ik eerder gewoon standaard in de HTML defineren, en niet als opvulling via PHP.
Beste forumers,

De code maakt deel uit van een plugin tbv de jobmanager in wordpress. De hier getoonde code is als voorbeeld genomen . Ga geen bedijfsinfo tonen op een forum en is ook niet van belang bij het oplossen.
De totale plugin bestaat uit extra velden met een tekst editor een upload voor pdf bestanden en inderdaad een keuze menu. Dit om de sollicitant meer informatie te geven dan standaard aanwezig in de jobmanager. Om dezelfde aanpak als de jobmanger doet heb ik gekozen voor deze manier van codering. De code is open source en wordt tzt gepubliceerd op de site van github.
Mijn dank voor de input en commentaar.
Arend

De totale code tot dusver en wederom tekst zijn aangepast;

<

<?php
/**
* Plugin Name: Extra fields
* Description: Creates extra fields in the add a job of the Job Manager.
* Version: 1.0.3
* Author: Clown
* Author URI: https://nu.nl
* Requires at least: 5.2
* Requires PHP: 7.2
* License: GPL v2 or later
*/

/**
* Prevent direct access data leaks
**/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}

add_action( 'plugin_action_links_' . plugin_basename( __FILE__ ), 'gma_wpjmef_add_support_link_to_plugin_page' );

// Submit form filters
add_filter( 'submit_job_form_fields', 'gma_wpjmef_frontend_add_omschrijving_field');
add_filter( 'submit_job_form_fields', 'gma_wpjmef_frontend_add_doelgroep_info_field');
// Text fields filters
add_filter( 'job_manager_job_listing_data_fields', 'gma_wpjmef_admin_add_omschrijving_field' ); // #
add_filter( 'job_manager_job_listing_data_fields', 'gma_wpjmef_admin_add_doelgroep_info_field' );
// Single Job page filters
add_action( 'single_job_listing_meta_end', 'gma_wpjmef_display_job_omschrijving_data' );
add_action( 'single_job_listing_meta_end', 'gma_wpjmef_display_doelgroep_info_data' );
// Dashboard: Job Listings > Jobs filters
add_filter( 'manage_edit-job_listing_columns', 'gma_wpjmef_retrieve_omschrijving_column' );
add_filter( 'manage_job_listing_posts_custom_column', 'gma_wpjmef_display_omschrijving_column' );

/**
* Sets the job_omschrijving metadata as a new $column that can be used in the back-end
**/
function gma_wpjmef_retrieve_omschrijving_column($columns){

$columns['job_omschrijving'] = __( 'omschrijving', 'extra-field' );
return $columns;

};

/**
* Adds a new case to WP-Job-Manager/includes/admin/class-wp-job-manager-cpt.php
**/

function gma_wpjmef_display_omschrijving_column($column){

global $post;

switch ($column) {
case 'job_omschrijving':

$omschrijving = get_post_meta( $post->ID, '_job_omschrijving', true );

if ( !empty($omschrijving)) {
echo $omschrijving;
} else {
echo '-';

}
break;
}

return $column;

};


/**

* Adds a new optional "omschrijving" text field at the "Submit a Job" form, generated via the [submit_job_form] shortcode
**/
function gma_wpjmef_frontend_add_omschrijving_field( $fields ) {

$fields['job']['job_omschrijving'] = array(
'label' => __( 'Job vacancy information', 'extra-field' ),
'type' => 'file',
'required' => false,
'placeholder' => '',
'omschrijving' => '',
'priority' => '7',
);

return $fields;

}

/**
* Adds a new optional "doelgroep Information" text field at the "Submit a Job" form, generated via the [submit_job_form] shortcode
**/
function gma_wpjmef_frontend_add_doelgroep_info_field( $fields ) {

$fields['job']['job_doelgroep_info'] = array(
'label' => 'Select',
'type' => 'select',
'required' => false,
'placeholder' => '',
'omschrijving' => '',
'priority' => '8',
'options' => array(
'option1' => 'Kies een optie',
'ww.nu.nl' => 'www.nu.nl',
'www.buienradar.nl' => 'www.buienradar.nl'
)
);


return $fields;
}

/**
* Adds a text field to the Job Listing wp-admin meta box named “omschrijving”
**/
function gma_wpjmef_admin_add_omschrijving_field( $fields ) {

$fields['_job_omschrijving'] = array(
'label' => __( 'Job vacancy information', 'extra-field' ),
'type' => 'file',
'placeholder' => '',
'omschrijving' => ''
);

return $fields;

}

/**
* Adds a text field to the Job Listing wp-admin meta box named "doelgroep Information"
**/
function gma_wpjmef_admin_add_doelgroep_info_field( $fields ) {

$fields['_job_doelgroep_info'] = array(
'label' => __( 'Target information', 'extra-field' ),
'type' => 'select',
'placeholder' => '',
'omschrijving' => ''
);

return $fields;

}

/**
* Displays "omschrijving" on the Single Job Page, by checking if meta for "_job_omschrijving" exists and is displayed via do_action( 'single_job_listing_meta_end' ) on the template
**/
function gma_wpjmef_display_job_omschrijving_data() {

global $post;

$omschrijving = get_post_meta( $post->ID, '_job_omschrijving', true );
$doelgroep_info = get_post_meta( $post->ID, '_job_doelgroep_info', true );

if ( $omschrijving ) {

echo '<a href="'.( $omschrijving ). ' " target="_blank">Vacature informatie</a><br>';
}

}

/**
* Displays the content of the "doelgroep Information" text-field on the Single Job Page, by checking if meta for "_job_doelgroep_info" exists and is displayed via do_action( 'single_job_listing_meta_end' ) on the template
**/
function gma_wpjmef_display_doelgroep_info_data() {

global $post;

$doelgroep_info = get_post_meta( $post->ID, '_job_doelgroep_info', true );

if ( $doelgroep_info ) {
echo '<a href= "'.($doelgroep_info). ' " target="_blank">Doelgroep</a><br>';
}

}

/**
* Display an error message notice in the admin if WP Job Manager is not active
*/
function gma_wpjmef_admin_notice__error() {

$class = 'notice notice-error';
$message = __( 'An error has occurred. WP Job Manager must be installed in order to use this plugin', 'extra-field' );

printf( '<div class="%1$s"><p>%2$s</p></div>', esc_attr( $class ), esc_html( $message ) );

}

>
Waarom zou je die -kies een optie - in PHP definiëren?

Reageren