Portanto, estou tendo um problema com meus campos personalizados no meu tipo de postagem personalizada. Por qualquer motivo, os campos são salvos e limpos de forma aleatória ... Tenho certeza de que não é aleatório, mas não tenho certeza do que está causando isso. Aqui está o código para o meu tipo de postagem personalizada:
// Custom Post Type: Strategic Giving
add_action('init', 'giving_register');
function giving_register() {
$labels = array(
'name' => _x('Invest Items', 'post type general name'),
'singular_name' => _x('Item', 'post type singular name'),
'add_new' => _x('Add New', 'giving item'),
'add_new_item' => __('Add New Item'),
'edit_item' => __('Edit Item'),
'new_item' => __('New Item'),
'view_item' => __('View Item'),
'search_items' => __('Search Items'),
'not_found' => __('Nothing found'),
'not_found_in_trash' => __('Nothing found in Trash'),
'parent_item_colon' => ''
);
$args = array(
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'query_var' => true,
'menu_icon' => get_stylesheet_directory_uri() . '/images/cpt-giving.png',
'rewrite' => array( 'slug' => 'giving_items' ),
'capability_type' => 'post',
'hierarchical' => true,
'menu_position' => null,
'supports' => array('title','thumbnail','editor'),
'paged' => false,
);
register_post_type( 'givings' , $args );
}
register_post_type( 'givings' , $args );
add_action("admin_init", "giving_admin_init");
function giving_admin_init(){
add_meta_box("giving_info-meta", "Item Options", "giving_info", "givings", "side", "high");
}
function giving_info(){
global $post;
$custom = get_post_custom($post->ID);
$amount = $custom["amount"][0];
$monthly = $custom["monthly"][0];
$user_entered_value = $custom["user_entered_value"][0];
$item_name = $custom["item_name"][0];
$special = $custom["special"][0];
?>
<div style="text-align: right;">
<p>
<label for="amount"><strong>Amount:</strong></label>
<input style="width: 180px" type="text" name="amount" id="amount" value="<?php echo $amount; ?>" />
<em>Example: 30.00</em>
</p>
<p>
<label for="monthly"><strong>Monthly?</strong></label>
<?php if ($monthly == 'on') { ?>
<input type="checkbox" name="monthly" id="monthly" checked="checked" />
<?php } else { ?>
<input type="checkbox" name="monthly" id="monthly" />
<?php } ?>
</p>
<p>
<label for="special"><strong>Special Item?</strong></label>
<?php if ($special == 'on') { ?>
<input type="checkbox" name="special" id="special" checked="checked" />
<?php } else { ?>
<input type="checkbox" name="special" id="special" />
<?php } ?>
</p>
<p>
<label for="user_entered_value"><strong>Allow Giver To Enter Custom Value?</strong></label>
<?php if ($user_entered_value == 'on') { ?>
<input type="checkbox" name="user_entered_value" id="user_entered_value" checked="checked" />
<?php } else { ?>
<input type="checkbox" name="user_entered_value" id="user_entered_value" />
<?php } ?>
</p>
<p>
<label for="item_name"><strong>Item Name:</strong></label>
<input style="width: 180px" type="text" name="item_name" id="item_name" value="<?php echo $item_name; ?>" /><br />
If item is a <em>per item</em> then enter the name of the singular item. <em>Example: Chair - which will be displayed as "30.00 per Chair"</em>
</p>
<p style="text-align: left;">
Strategic Giving photo must be horizontal and uploaded/set as the <strong>Featured Image</strong> (see below).
<em>Do not add photo to content area.</em>
</p>
</div>
<?php }
add_action('save_post', 'giving_save_details_amount');
add_action('save_post', 'giving_save_details_monthly');
add_action('save_post', 'giving_save_details_user_entered_value');
add_action('save_post', 'giving_save_details_item_name');
add_action('save_post', 'giving_save_details_special');
function giving_save_details_amount(){
global $post;
update_post_meta($post->ID, "amount", $_POST["amount"]);
}
function giving_save_details_monthly(){
global $post;
update_post_meta($post->ID, "monthly", $_POST["monthly"]);
}
function giving_save_details_user_entered_value(){
global $post;
update_post_meta($post->ID, "user_entered_value", $_POST["user_entered_value"]);
}
function giving_save_details_item_name(){
global $post;
update_post_meta($post->ID, "item_name", $_POST["item_name"]);
}
function giving_save_details_special(){
global $post;
update_post_meta($post->ID, "special", $_POST["special"]);
}
add_action("manage_pages_custom_column", "givings_custom_columns");
add_filter("manage_edit-givings_columns", "givings_edit_columns");
function givings_edit_columns($columns){
$columns = array(
"cb" => "<input type=\"checkbox\" />",
"title" => "Strategic Giving Item",
"amount" => "Amount",
"monthly" => "Monthly",
"special" => "Special Item",
"giving_image" => "Image"
);
return $columns;
}
function givings_custom_columns($column){
global $post;
switch ($column) {
case "amount":
$custom = get_post_custom();
echo $custom["amount"][0];
break;
case "monthly":
$custom = get_post_custom();
$is_monthly = $custom["monthly"][0];
if ($is_monthly == "on") {
echo "Yes";
};
break;
case "special":
$custom = get_post_custom();
$is_special = $custom["special"][0];
if ($is_special == "on") {
echo "Yes";
};
break;
case "giving_image":
echo get_the_post_thumbnail(NULL, 'staff_admin');
break;
}
}
function giving_amount(){
$custom = get_post_custom();
return $custom["amount"][0];
}
function giving_monthly(){
$custom = get_post_custom();
return $custom["monthly"][0];
}
function giving_special(){
$custom = get_post_custom();
return $custom["special"][0];
}
function giving_user_entered_value(){
$custom = get_post_custom();
return $custom["user_entered_value"][0];
}
function giving_item_name(){
$custom = get_post_custom();
return $custom["item_name"][0];
}
Atualização: Então eu fiz mais pesquisas e descobri. Salvamento automático (também conhecido como revisões) - os metadados de postagem são excluídos automaticamente
É possível desativar o salvamento automático para apenas um tipo de postagem e não globalmente?
revisions
nasupports
matriz, o Autosaves deve ser desativado para o seu tipo de postagem "Givings"Respostas:
Essa é fácil :)
fonte
Aparentemente, o cancelamento do registro do javascript de salvamento automático essencialmente interromperá a execução da rotina de salvamento automático. Ele não necessariamente desabilita a capacidade de o salvamento automático ocorrer nesse tipo de postagem, mas interrompe a execução do script de salvamento automático nativo.
Não é uma solução perfeita, mas deve ter o efeito desejado.
Espero que ajude...
EDIT: Com o código acima, na tela de pós-criação desse tipo, você deverá ver o seguinte na fonte da página.
As variáveis não são o que estamos vendo aqui, é o script na parte inferior, observe que o src agora não aponta para lugar nenhum (isso estava originalmente apontando para o arquivo autosave.js).
Você vê algo semelhante ao acima, ou o src ainda está sendo gravado com o caminho para o arquivo autosave.js?
EDIT2: Isto é o que vejo com os scripts de concatenação desativados.
Observe que o script de salvamento automático ainda está sendo excluído .. (até agora não consegui reproduzir o seu problema) ..
Onde você está colocando o código que eu forneci?
fonte
Eu apenas tive um problema com isso em um dos plugins que mantenho, e decidimos apenas verificar se estávamos em nossas páginas (wpsc-product e não em post ou página) e simplesmente cancelamos o registro do script de salvamento automático. , CPT é 'wpsc-product' e nossa função (remover código não relacionado é algo como isto:
fonte