web-dev-qa-db-ja.com

URLパラメータに基づいてカテゴリにチェックマークを設定する

各ページにカテゴリがあるサイトを作りました。そして今、私はそうしようとしています、あなたがその与えられたページであなたが 'Create post'を押すならば、それはそれからそのようにURLにパラメータを送るということです:

example.org/wp-admin/post-new.php?post_type=CPT&category=3

そして、それは実際にカテゴリに投稿を置く必要はありません...それはただID = 3でカテゴリにチェックマークを設定する必要があるので、投稿されたら、それはそれからそれをします。

私は 'create_post'またはそのようなものに沿って何かを引っ掛けることを想像してみてください。しかし、それは私にとって少し 'ハッキー'な気がします。

それは本当に正しいやり方ですか?それともWordPressはもっと良い方法を提供しますか?

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