사용자 정의 분류 입력의 모양 변경


14

나는 몇 가지 사용자 정의 분류법 (사용자 정의 게시물 유형)을 사용하는 사이트를 만들고 있습니다. 이 사이트에서는 값을 입력하는 방법 (체크 박스)이 비 계층 적 분류 체계의 자유 형식 입력보다 바람직하기 때문에 분류 체계 중 일부를 계층 적으로 선택했습니다. 그러나 실제로 원하는 것은 확인란 대신 라디오 버튼 입력을 사용할 수 있다는 것입니다. 또한 분류에서 상위 항목을 선택하는 데 사용되는 드롭 다운을 제거하고 싶습니다. 스크린 샷

나는 이것에 대해 잘못 가고 있습니까? 비 계층 분류법으로 시작하여 입력 방식을 대신 수정해야합니까? 나는 입력에 완전히 개방되어 있으며 기꺼이 질문에 대답하거나 더 많은 정보를 제공 할 것입니다.


+1 좋은 질문입니다. 이것은 또한 내가 작업중 인 프로젝트에도 좋을 것입니다. 또한 사용자 정의 분류 체계를 "범주"목록 대신 드롭 다운 메뉴로 설정하십시오.

예, 드롭 다운도 좋습니다.
트래비스 노스 컷

1
이 두 가지는 매우 유사한 문제를 다루는 것 같습니다 : Custom Post Type-Taxonomy Dropdown Menu? 저장 분류 약관의 도움이 필요
마이클 마우

기존 메타 박스를 수정하려는 것이 아니라 주어진 분류 체계에 대한 기본 메타 박스를 제거한 다음 라디오 그룹에 용어를 표시하는 사용자 정의 함수를 호출하도록 사용자 고유의 등록을하는 것입니다. maugly에 의해 위에 제공된 두 개의 링크.
t31os

답변:


13

물론 CSS와 'admin_head'후크를 사용하여 사라지게하십시오. 나는 이것이 당신이 찾고있는 것이라고 믿습니까?

부모가없는 WordPress 게시물 페이지의 계층 구조 분류 항목
(출처 : mikeschinkel.com )

테마 functions.php파일 또는 .php작성중인 플러그인 파일에 다음을 추가하십시오 . "홈" 게시물 유형과 "욕조" 분류법 'init'을 정의 하는 후크를 포함하여 다른 사람들이 예제를 더 쉽게 따를 수 있습니다. 또한 분류 체계의 이름이 Baths 인 경우 CSS 선택기를 다음 대신에 변경해야합니다 .#newbaths_parent#newbath_parent

add_action('admin_head','remove_bath_parents');
function remove_bath_parents() {
  global $pagenow;
  if (in_array($pagenow,array('post-new.php','post.php'))) { // Only for the post add & edit pages
    $css=<<<STYLE
<style>
<!--
#newbath_parent {
  display:none;
}
-->
</style>
STYLE;
    echo $css;
  }
}
add_action('init','add_homes_and_baths');
function add_homes_and_baths() {
  register_post_type('home',
    array(
      'label'           => 'Homes',
      'public'          => true,
      'rewrite'         => array('slug' => 'homes'),
      'hierarchical'    => false,
    )
  );
  register_taxonomy('bath', 'home', array(
    'hierarchical'    => true,
    'label'           => 'Baths',
    'rewrite'         => array('slug' => 'baths' ),
    )
  );
}

최신 정보

그래서 질문 의 라디오 버튼 부분 을 놓친 것 같습니다 . 불행히도 WordPress는 이것을 쉽게하지는 않지만 PHP 출력 버퍼링 ( ob_start()ob_get_clean()기능을 통해) 을 사용하여이를 수행 할 수 있습니다 . 메타 박스가 출력되기 전에 후크를 찾고 ( 'add_meta_boxes') 출력 후 후크 'dbx_post_sidebar'를 찾은 다음 캡처 된 것을 검색하십시오. 에 대한 HTML 'checkbox'및로 대체 'radio'하여 화면에 에코하고 완료하십시오! 코드는 다음과 같습니다.

add_action('add_meta_boxes','mysite_add_meta_boxes',10,2);
function mysite_add_meta_boxes($post_type, $post) {
  ob_start();
}
add_action('dbx_post_sidebar','mysite_dbx_post_sidebar');
function mysite_dbx_post_sidebar() {
  $html = ob_get_clean();
  $html = str_replace('"checkbox"','"radio"',$html);
  echo $html;
}

그리고 증거 :

라디오 버튼을 사용하여 분류법을 보여주는 스크린 샷
(출처 : mikeschinkel.com )


1
"부모님이 없어요, 엄마!" 마이크, 웃게 했어요! : D
Michal Mau

@maugly-이것이 내 기본값입니다. : D
MikeSchinkel

@haha-당신이 좋아서 기쁘다. :)
MikeSchinkel

언제나처럼 환상적입니다.
트래비스 노스 컷

1
@tnorthcutt-솔직히 메타 박스를 코딩하는 것이 좋습니다. 그것이 내가 한 일이며 실제로 어렵지 않습니다. 보기 소스와 일치 <input><select>이름 만 지정하면 분류법을 캡처하기 위해 아무 것도 할 필요가 없습니다. 워드 프레스가 해드립니다. 또는 사용자 정의 필드를 사용하고 과도하게 분류 될 수있는 분류법을 무시하십시오.
MikeSchinkel

2

또는 게으른 경우이 플러그인을 사용할 수 있습니다 : 단일 값 분류법 UI

(대부분이 동일한 작업을 수행하므로 Mike의 답변에 주석으로 이것을 추가했지만 아직 주석을 추가 할 수는 없습니다)


불행히도 2 년 동안 업데이트가 없습니다 :( 이것은 옵션이된다면 많은 사람들이 객체 당 하나의 용어 분류법을 사용할 것이므로 (즉, 쿼리 성능이 중요 할 때 메타가 아닌 분류 체계를 사용하기 때문에) WP는 실제로 핵심 지원을 추가해야합니다.
jerclarke
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.