it-swarm-eu.dev

Jak přidat vlastní pole do vlastního typu příspěvku?

Ok, takže jsem zaregistroval několik vlastních typů příspěvků a několik taxonomií. Teď, pro život mě, nemohu přijít na kód, který potřebuji přidat vlastní pole do mého typu vlastního příspěvku.

Potřebuji rozevírací seznam a textovou oblast s jedním řádkem. Musím však mít i samostatná pole pro typy příspěvků. Takže, řekněme post type jeden má 3 pole a příspěvek typu 2 má 4 pole, ale pole jsou odlišná.

Jakékoli tipy by pomohly, kdybych se podíval na kodex a našel něco, ale nemůžu pochopit, co potřebuji přidat do souboru functions.php

17
xLRDxREVENGEx
16
Wyck

Přidejte/upravte argument supports (při použití register_post_type), abyste zahrnuli custom-fields, abyste mohli odeslat obrazovku úprav vlastního typu příspěvku:

'supports' => array( 
  'title', 
  'editor', 
  'excerpt', 
  'thumbnail', 
  'custom-fields', 
  'revisions' 
)

Zdroj: https://codex.wordpress.org/Using_Custom_Fields#Displaying_Custom_Fields

22
kubante

I když byste měli přidat nějaké ověření, tato akce se nezdá být komplikovaná pro aktuální verzi aplikace WordPress.

Chcete-li přidat vlastní pole do vlastního typu příspěvku, potřebujete v podstatě dva kroky:

  1. Vytvořte metabox, který drží vaše vlastní pole
  2. Uložte vlastní pole do databáze

Tyto kroky jsou zde popsány globálně: http://wordpress.org/support/topic/is-it-possible-to-add-an-extra-field-to-a-ustom-post-type

Příklad:

Přidejte vlastní pole nazvané "funkce" do vlastního typu příspěvku nazvaného "Členové předpony".

Nejprve přidejte metabox:

function prefix_teammembers_metaboxes( ) {
   global $wp_meta_boxes;
   add_meta_box('postfunctiondiv', __('Function'), 'prefix_teammembers_metaboxes_html', 'prefix_teammembers', 'normal', 'high');
}
add_action( 'add_meta_boxes_prefix-teammembers', 'prefix_teammembers_metaboxes' );

Je-li vaše přidání nebo úprava "prefix-teammembers", je spuštěn háček add_meta_boxes_{custom_post_type}. Viz http://codex.wordpress.org/Function_Reference/add_meta_box pro funkci add_meta_box(). Ve výše uvedené výzvě add_meta_box() je prefix_teammembers_metaboxes_html, zpětné volání pro přidání pole formuláře:

function prefix_teammembers_metaboxes_html()
{
    global $post;
    $custom = get_post_custom($post->ID);
    $function = isset($custom["function"][0])?$custom["function"][0]:'';
?>
    <label>Function:</label><input name="function" value="<?php echo $function; ?>">
<?php
}

Ve druhém kroku máte vlastní pole do databáze. Při ukládání háku save_post_{custom_post_type} je spuštěn (od verze 3.7, viz: https://stackoverflow.com/questions/5151409/wordpress-save-post-action-for-custom-posts ). Toto můžete připojit k uložení vlastního pole:

function prefix_teammembers_save_post()
{
    if(empty($_POST)) return; //why is prefix_teammembers_save_post triggered by add new? 
    global $post;
    update_post_meta($post->ID, "function", $_POST["function"]);
}   

add_action( 'save_post_prefix-teammembers', 'prefix_teammembers_save_post' );   
6
Bass Jobsen

Existují různé pluginy pro vlastní meta boxy a vlastní pole. Pokud se podíváte na plugin, který se zaměřuje na vývojáře, měli byste zkusit Meta Box . Je to lehký a velmi silný.

Pokud hledáte návod, jak psát kód pro meta box/vlastní pole, pak to je dobrý začátek. Je to první část série, která vám může pomoci vylepšit kód, aby bylo snadné jej rozšířit.

1
Anh Tran