Select/foreach
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;
}
Gewijzigd op 04/01/2022 19:20:17 door - Ariën -
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 weet wat foreach doet?
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;
}
Quote:
'option 2' => 'optie 1',
'option 3' => 'optie 2'
'option 3' => 'optie 2'
Heerlijk dit soort logica ...
Fijn dit soort sarcasme, lekker opbouwend. :=(
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.
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;
<
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
<?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 ) );
}
>
/**
* 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?
Zoals aangegeven heb ik teksten aangepast, ook de tekst in option heb maar wat neer gezet. Wat daar hoort te staan zijn url's maar mij lijkt dat niet verstandig om dat op een forum te zetten. Dus in die zin heb je gelijk dat zoiets beter in html kan.
Deze code lijkt goed samen te werken met de job manager en WordPress. Hoewel zowel jobmanager als een beetje wordpress mij flink hebben dwarsgezeten met allerlei overrides verborgen in bijna ondoorgrondelijke folders. Elke codering die maakte gaf weer een foutmelding.
Bijvoorbeeld de foreach gaf geen krimp in de code.
Gelukkig met vereende krachten toch tot werkende plugin voor wordpress gekomen.
Groet
Arend