it-swarm.dev

Vytváření standardních uživatelských polí v uživatelském rozhraní Admin

Přidal jsem několik různých custom_post_types k mé instalaci Wordpress 3. Všechny jsou trochu odlišné od sebe a měly by ukládat jedinečné informace do custom_fields. Ale zatímco jeden může uložit product_id, jiný ne. Jeden bude mít source_url a druhý ne. Namísto toho, abych dával mým redaktorům pokyn, na kterých uživatelských polích by se měly používat vlastní příspěvky, jak mohu učinit, aby každý vlastní příspěvek zahrnoval vlastní pole jako součást uživatelského rozhraní?

Pokud navštívíte "daily_cartoon", budete mít obrazovku, která se zeptá pouze na titul , titulek a média .
Pokud navštívíte stránku „daily_product“, zobrazí se obrazovka s dotazem pouze na titul , cena , souhrn atd.

7
Sampson

Ahoj @ Jonathan Sampson :

Existují několik zásuvných modulů, které usnadňují vytváření uživatelských typů příspěvků a některé umožňují definovat také vlastní pole, a to v konkrétním pořadí:

Jak jsem zmínil výše, pracoval jsem na tom, který neposkytuje uživatelské rozhraní, jako jsou tyto, namísto toho rozšiřitelné rozhraní API pro složité typy polí (a také jednoduché). pro distribuci. Možná za pár týdnů.

Tyto pluginy uvedené výše by měly splňovat vaše základní potřeby a já se pokusím, aby se moje kompatibilní s daty uloženými všemi těmito v budoucnu v případě, že se rozhodnete použít moje v budoucnu.

Můžete také najít tento příspěvek trochu pomoci také:

4
MikeSchinkel

můžete přidat meta_boxes, aby v nich byla uložena data vlastních polí. protože add_meta_box lze nastavit podle post_type, což vám umožní přidat různé meta_box do různých typů příspěvků.

podívejte se na tento příspěvek pro úplný příklad změny vlastního typu příspěvku nový/edit scree.

5
hannit cohen

Nedávno jsem potřeboval řešit velmi podobný problém při práci v rámci tématu. Základ kódu byl z tohoto příspěvku a některé kódy jsem upravil

První část kódu, kterou jsem upravil, je následující.

    add_action('init', 'limited_post_type');
function my_custom_limited_post_type() 
{
  $labels = array(
    'name' => _x('Limited Post Type', 'post type general name'),
    'singular_name' => _x('Film - DVD', 'post type singular name')
  );
  $args = array(
    'labels' => $labels,
    'public' => true,
    'publicly_queryable' => true,
    'show_ui' => true, 
    'query_var' => true,
    'rewrite' => true,
    'capability_type' => 'post',
    'hierarchical' => false,
    'menu_position' => null,
    'supports' => array('title','editor','author','thumbnail','excerpt', 'page-attributes','custom-fields' ),
    'show_in_nav_menus' => true
  ); 
  register_post_type('limited_post_type', $args);
}

Následuje druhá část kódu, kterou jsem změnil.

foreach ( $scope as $scopeItem ) {
       switch ( $scopeItem ) {
           case "post": {
             // Output on any post screen
             if ( basename( $_SERVER['SCRIPT_FILENAME'] )=="post-new.php" || $post->post_type=="post" )
             $output = true;
             break;}              
            case "page": {
                  // Output on any page screen
                  if ( basename( $_SERVER['SCRIPT_FILENAME'] )=="page-new.php" || $post->post_type=="page" )
            $output = true;
            break;}
             case "limited_post_type": {
                                // Output on limited post_type onlye
            if ((basename( $_SERVER['SCRIPT_FILENAME'] )=="post-new.php" && $post->post_type=="limited_post_type" ) || (basename( $_SERVER['SCRIPT_FILENAME'] )=="post.php" && $post->post_type=="film_dvd" ))
                   $output = true;
                   break;
                  }

Pokud se vám líbí, pošlete mi zprávu a já vám rád pošleme svůj function.php soubor pro váš odkaz. To je určitě způsob, jak to udělat, i když jsem prošel mnoha nocí tahání za vlasy jako sebe.

0
jnolte