Özel sınıflandırma girdilerinin görünümünü değiştirme


14

Birkaç özel sınıflandırma (özel yazı türleri için) kullanacak bir site üzerinde çalışıyorum. Bazı sınıflandırmaların hiyerarşik olmasını seçtim, çünkü değerleri girme yöntemi (onay kutuları) bu site için hiyerarşik olmayan sınıflandırmaların serbest form girişinden daha arzu edilir. Ancak, gerçekten istediğim , onay kutuları yerine radyo düğmesi girişlerini kullanabilmektir. Ayrıca, sınıflandırmada üst öğeyi seçmek için kullanılan açılır menüyü kaldırmak istiyorum. ekran görüntüsü

Buna yanlış mı gidiyorum? Hiyerarşik olmayan sınıflandırmalarla başlamalı ve bunun yerine giriş yöntemlerini değiştirmeli miyim? Girişe tamamen açığım ve herhangi bir soruyu memnuniyetle cevaplayacağım veya eğer yapabilirsem daha fazla bilgi sağlayacağım.


+1 İyi Soru. Bu, üzerinde çalıştığım bir proje için de iyi olurdu. Ayrıca, özel sınıflandırma "kategoriler" listesi yerine bir açılır menü olsun.
Zack

Evet, bir açılan menü de harika olurdu.
Travis Northcutt

1
Bu ikisi çok benzer bir konuyla ilgileniyor gibi görünüyor: Özel Yazı Tipi - Taksonomi Açılır Menüsü? Şartlarını Kaydetmede Yardım
Michal Mau

Mevcut meta kutuyu değiştirmeye çalışmak yerine, göz önünde bulundurabileceğiniz şey, verilen sınıflandırma için varsayılan meta kutuyu kaldırmak, daha sonra radyo grubundaki terimleri görüntüleyen özel bir işlevi çağırmak için kendiniz kaydetmektir ve bu, maugly tarafından sağlanan iki bağlantı.
t31os

Yanıtlar:


13

Tabii ki, sadece 'admin_head'kaybolmak için CSS ve kanca kullanın. Aradığın şey olduğuna inanıyorum?

Üst öğe olmadan WordPress yazı sayfasındaki hiyerarşik sınıflandırma girişi
(kaynak: mikeschinkel.com )

Aşağıdakileri temanızın functions.phpdosyasına veya .phpyazdığınız bir eklentinin dosyasına ekleyin . "Ev" direk tipi ve "Banyo" taksonomisini 'init'tanımlamak için bir kanca eklediğimi ve diğerlerinin örneği daha kolay takip edebileceğini unutmayın. Ayrıca, sınıflandırmanız Baths olarak adlandırılırsa " yerine CSS seçiciyi şu şekilde değiştirmeniz gerekir :#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' ),
    )
  );
}

GÜNCELLEME

Görünüşe göre sorunun radyo düğmesi bölümünü kaçırdım . Ne yazık ki WordPress bunu kolaylaştırmıyor, ancak PHP çıkış arabelleğini kullanarak ( ob_start()ve ob_get_clean()işlevleri aracılığıyla) bunu yapabilirsiniz . Metabox çıktısı ( 'add_meta_boxes') olmadan bir kanca ve çıktısı ( ) sonra bir kanca 'dbx_post_sidebar'bulun ve sonra yakalanan arama HTML için 'checkbox've yerine 'radio', ekrana yankı ve yer bitti! Kod aşağıdaki gibidir:

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;
}

Ve kanıtlar:

Radyo düğmelerini kullanarak sınıflandırmaları gösteren ekran görüntüsü
(kaynak: mikeschinkel.com )


1
"Bak anne, üst alan yok!" Mike, beni güldürdün! : D
Michal Mau

@maugly - Bu benim varsayılanım. : D
MikeSchinkel

@haha - Beğendiğine sevindim. :)
MikeSchinkel

Her zamanki gibi harika.
Travis Northcutt

1
@tnorthcutt - Açıkçası, kendi meta kutunuzu kodlamanızı öneririm. Ben de öyle yaptım ve bunun için gerçekten zor değil. Sadece bir görünüm kaynağı ve eşleştirme <input>ve <select>adlar yapın ve sınıflandırma yakalamak için hiçbir şey yapmanız gerekmez; WordPress bunu sizin için yapacak. VEYA, bunun için gereğinden fazla olabilecek özel bir alan ve bypass sınıflandırması kullanın.
MikeSchinkel

2

veya tembelseniz şu eklentiyi kullanabilirsiniz: Tek Değerli Sınıflandırma Kullanıcı Arayüzü

(Bunu çoğunlukla aynı şeyi yaptığı için Mike'ın cevabına yorum olarak eklemeyi tercih ederim - ama henüz yorum ekleyemiyorum)


Ne yazık ki 2 yıl içinde güncelleme yok :( Bu, WP'nin aslında bir seçenek olsaydı, birçok kişi nesne başına bir terim sınıflandırma kullanacağı için temel destek eklemesi gereken bir şeydir (yani, sorgu performansı önemli olduğunda meta yerine taksonomileri kullanın).
jerclarke
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.