J'ai fait un site, où il y a une catégorie pour chaque page. Et maintenant, j'essaie de faire en sorte que si vous sur cette page donnée, cliquez sur "Créer un message", il envoie alors un paramètre à l'URL, en tant que tel:
example.org/wp-admin/post-new.php?post_type=CPT&category=3
Et il n’est pas nécessaire de placer réellement le message dans la catégorie ... Il suffit de cocher la case correspondant à la catégorie avec ID = 3. Ainsi, lorsqu’elle est publiée, elle le fait ensuite.
J'ai imaginé accrocher quelque chose du type 'create_post' ou quelque chose du genre et le faire simplement avec du JavaScript (recherchez #categorydiv et .inside, recherchez la catégorie par ID et marquez-la comme étant cochée). Mais cela me semble un peu "hacky".
Est-ce vraiment la bonne façon de le faire - ou WordPress offre-t-il un meilleur moyen?
Je l'ai compris moi-même, mais en utilisant plusieurs petites choses différentes. Je suis désolé de "voler le crédit", - mais je ne me souviens pas de toutes les sources utilisées:
C'est le JavaScript:
jQuery(document).ready(function() {
function GetURLParameter(sParam) {
var sPageURL = window.location.search.substring(1);
var sURLVariables = sPageURL.split('&');
for (var i = 0; i < sURLVariables.length; i++) {
var sParameterName = sURLVariables[i].split('=');
if (sParameterName[0] == sParam) {
return sParameterName[1];
} // Endif
} // Endfor
} // Endfor
var just_the_category_ID = GetURLParameter('category'); // Get the category-parameter from the URL
jQuery('#in-category-' + just_the_category_ID ).prop('checked', true);
});
Et il a appelé avec cette fonction dans functions.php
:
function custom_enqueue_admin_scripts( ) {
global $page_category_mapping;
$screen = get_current_screen(); // Which page we're on
if ( in_array( $screen->id, array( 'page' ) ) && $screen->action == 'add' ) {
wp_enqueue_script( 'mark-default-category', get_stylesheet_directory_uri() . '/assets/js/THE-LOCATION-OF-THE-JS-FROM-ABOV.js', array( 'jquery' ) );
}
}
add_action( 'admin_footer', 'mss_enqueue_admin_scripts' );