根据URL参数在类别中设置复选标记

时间:2018-04-17 作者:Zeth

我创建了一个网站,每个页面都有一个类别。现在我正试图这样做,如果在给定的页面上按“创建帖子”,那么它会向URL发送一个参数,如下所示:

example.org/wp-admin/post-new.php?post_type=CPT&category=3
而且它不需要把帖子放在类别中。。。它只需要在ID=3的类别中设置复选标记,以便在发布时进行操作。

我想象着按照“create\\u post”或类似的方式挂接一些东西,然后用一些JavaScript(查找#categorydiv和.inside,然后按ID查找类别并将其标记为选中)。但我觉得有点“讨厌”。

这真的是正确的方法吗?还是WordPress提供了更好的方法?

1 个回复
最合适的回答,由SO网友:Zeth 整理而成

我自己想出来的,但用了几个不同的小东西。很抱歉“窃取信用”,但我记不清使用的所有来源:

这是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);
});
它在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\' );

结束