web-dev-qa-db-fra.com

Définir une coche dans une catégorie basée sur un paramètre URL

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?

1
Zeth

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' );
0
Zeth