Hoe en vooral, waar, inbouwen in Wordpress
Alles werkt top en ook het 'indelen' van de berichten gaat prima.
Het nadeel is weer: er gaan totale noobs mee werken.
En als zij een bericht maken, is het heel belangrijk dat het in de juiste categorie komt.
Nu wil ik dat zij (gebruikers) VOORDAT ze ook maar een letter typen, de juiste categorie kiezen.
En het liefst ook nog maar uit een beperkte keuze die ik aan hun 'rol' hang.
Nu vond ik deze pagina:
http://wordpress.stackexchange.com/questions/14403/force-category-choice-before-creating-new-post
Code ziet er prima uit en het zal waarschijnlijk exact doen wat ik wil.
Maar hoe bouw ik dat in?
In posts-new.php iets... maar wat?
Weet iemand dat of kan iemand mij dat vertellen?
Uiteraard heb ik de auteur van dat bericht bericht, maar ik heb nog geen bericht terug gehad en na alle hulp die ik hier probeer te bieden leek het mij gepast hier zelf eens een hulpvraag neer te zetten.
Stel jouw theme heet twentyfourteen dan ga je naar
wordpress/wp-content/themes/twentyfourteen/functions.php
Voeg daar ergens de code toe en voila klaar
Nadeel, als jouw theme een update heeft ben je de gewijzigde code kwijt. Het beste is dus om een plugin er van te maken ( http://www.wplounge.nl/wordpress-plugins-maken/ )
Gewijzigd op 20/10/2014 23:47:26 door Ceasar Feijen
Dit is te voorkomen door een kopie te maken van de theme map en deze een andere naam te geven. Zodoende creëer je je 'eigen' theme gebaseerd op een ander theme.
Bedankt Ceasar! Ik ga gewoon een eigen plugin maken hiervoor.
Toevoeging op 21/10/2014 11:14:27:
Ik heb nu dit in:
<root>/wp-content/plugins/force_choose_category_first/code.php
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
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
<?php
/*
Plugin Name: Force category choice before creating new post
Plugin URI: http://www.hervormdgiessenburg.nl/wp/
Description: Bij het maken van een nieuw bericht moet eerst een categorie gekozen worden.
Version: 1.0
Author: Jan Fabry, toegepast door Eddy Erkelens
Author URI: http://wordpress.stackexchange.com/questions/14403/force-category-choice-before-creating-new-post
License: GPL2
*/
/** Widget Class */
class force_category_choice_before_creating_post extends WP_Widget {
function wpse14403_load_post_new()
{
$post_type = 'post';
if ( isset( $_REQUEST['post_type'] ) ) {
$post_type = $_REQUEST['post_type'];
}
// Only do this for posts
if ( 'post' != $post_type ) {
return;
}
if ( array_key_exists( 'category_id', $_REQUEST ) ) {
add_action( 'wp_insert_post', 'wpse14403_wp_insert_post' );
return;
}
// Show intermediate screen
extract( $GLOBALS );
$post_type_object = get_post_type_object( $post_type );
$title = $post_type_object->labels->add_new_item;
include( ABSPATH . 'wp-admin/admin-header.php' );
$dropdown = wp_dropdown_categories( array(
'name' => 'category_id[]',
'hide_empty' => false,
'echo' => false,
'hierarchical' => 1,
) );
$dropdown = str_replace("<select ", '<select size="26" ', $dropdown);
$category_label = __( 'Categorie:' );
$continue_label = __( 'Doorgaan' );
echo <<<HTML
<div class="wrap">
<h2>Maak een keuze uit de <span style="color: green;">groene</span> categorieën waarin het bericht moet komen.</h2>
<p>Alle berichten moeten een categorie hebben waar het bericht onder valt.<br>
Voor allerlei geautomatiseerde taken is het noodzakelijk dat het bericht in de juiste categorie valt.<br>
<br>
U kunt hier slecht één <span style="color: green;">groene</span> categorie kiezen.<br>
De <span style="color: red;">rode</span> categorieën moet u <span style="color: red;"><b>niet</b></span> kiezen.<br>
Voor meer categorieën kunt u terecht in het volgende scherm.</p>
<form method="get">
<input type="hidden" name="post_type" value="{$post_type}" />
<table class="form-table" style="max-width: 600px;">
<tbody>
<tr valign="top">
<th valign="top" scope="row">{$category_label}</th>
<td valign="top">{$dropdown}</td>
<td style="vertical-align: top;"><input name="continue" type="submit" class="button-primary" value="{$continue_label}" /></td>
</tr>
</tbody>
</table>
<style>
option { color: green;}
option.level-0 { color: red;}
select { height: auto !important; min-width: 250px !important;}
</style>
</form>
</div>
HTML;
include( ABSPATH . 'wp-admin/admin-footer.php' );
exit();
}
// This function will only be called when creating an empty post,
// via `get_default_post_to_edit()`, called in post-new.php
function wpse14403_wp_insert_post( $post_id )
{
wp_set_post_categories( $post_id, $_REQUEST['category_id'] );
}
} // end class
add_filter( 'default_content ', 'wpse14403_load_post_new' );
?>
/*
Plugin Name: Force category choice before creating new post
Plugin URI: http://www.hervormdgiessenburg.nl/wp/
Description: Bij het maken van een nieuw bericht moet eerst een categorie gekozen worden.
Version: 1.0
Author: Jan Fabry, toegepast door Eddy Erkelens
Author URI: http://wordpress.stackexchange.com/questions/14403/force-category-choice-before-creating-new-post
License: GPL2
*/
/** Widget Class */
class force_category_choice_before_creating_post extends WP_Widget {
function wpse14403_load_post_new()
{
$post_type = 'post';
if ( isset( $_REQUEST['post_type'] ) ) {
$post_type = $_REQUEST['post_type'];
}
// Only do this for posts
if ( 'post' != $post_type ) {
return;
}
if ( array_key_exists( 'category_id', $_REQUEST ) ) {
add_action( 'wp_insert_post', 'wpse14403_wp_insert_post' );
return;
}
// Show intermediate screen
extract( $GLOBALS );
$post_type_object = get_post_type_object( $post_type );
$title = $post_type_object->labels->add_new_item;
include( ABSPATH . 'wp-admin/admin-header.php' );
$dropdown = wp_dropdown_categories( array(
'name' => 'category_id[]',
'hide_empty' => false,
'echo' => false,
'hierarchical' => 1,
) );
$dropdown = str_replace("<select ", '<select size="26" ', $dropdown);
$category_label = __( 'Categorie:' );
$continue_label = __( 'Doorgaan' );
echo <<<HTML
<div class="wrap">
<h2>Maak een keuze uit de <span style="color: green;">groene</span> categorieën waarin het bericht moet komen.</h2>
<p>Alle berichten moeten een categorie hebben waar het bericht onder valt.<br>
Voor allerlei geautomatiseerde taken is het noodzakelijk dat het bericht in de juiste categorie valt.<br>
<br>
U kunt hier slecht één <span style="color: green;">groene</span> categorie kiezen.<br>
De <span style="color: red;">rode</span> categorieën moet u <span style="color: red;"><b>niet</b></span> kiezen.<br>
Voor meer categorieën kunt u terecht in het volgende scherm.</p>
<form method="get">
<input type="hidden" name="post_type" value="{$post_type}" />
<table class="form-table" style="max-width: 600px;">
<tbody>
<tr valign="top">
<th valign="top" scope="row">{$category_label}</th>
<td valign="top">{$dropdown}</td>
<td style="vertical-align: top;"><input name="continue" type="submit" class="button-primary" value="{$continue_label}" /></td>
</tr>
</tbody>
</table>
<style>
option { color: green;}
option.level-0 { color: red;}
select { height: auto !important; min-width: 250px !important;}
</style>
</form>
</div>
HTML;
include( ABSPATH . 'wp-admin/admin-footer.php' );
exit();
}
// This function will only be called when creating an empty post,
// via `get_default_post_to_edit()`, called in post-new.php
function wpse14403_wp_insert_post( $post_id )
{
wp_set_post_categories( $post_id, $_REQUEST['category_id'] );
}
} // end class
add_filter( 'default_content ', 'wpse14403_load_post_new' );
?>
Dus ik heb een class.
Ik roep het filter aan (onderaan).
Alleen of dat daarvoor 'default_content ' moet staan, weet ik niet. Lijkt mij wel, gezien http://codex.wordpress.org/Plugin_API/Filter_Reference
Reden dat ik dit plaats is natuurlijk, dat er niets gebeurt.
Gewijzigd op 21/10/2014 11:17:00 door Eddy E