Intereting Posts
Хранить иерархию страниц в wp_list_pages, даже если на ребенка или внука Как я могу сделать ссылку меню видимой только для администраторов (без плагинов)? Ajax сохраняет данные в базу данных по готовому документу, данные не сохраняются Редактировать Comment_Field при использовании комментария T5 Textarea On Top-Plugin Customizer Добавить раздел аргумент 'active_callback' => "is_front_page" не работает Как добавить пользовательский шрифт в TinyMCE FontSelect в WP Admin или фильтровать доступные шрифты имена файлов get_template_part и шаблонов Автоматическое отображение имени категории с использованием кода в файле functions.php Как узнать, в каком порядке WordPress помещает файлы CSS? Переменные продукты, добавляемые в корзину с AJAX на страницах магазина и категории Ошибка: файловая система предотвращает загрузку. (ftpext) Как вставить код интеграции для CRM? Как установить значение по умолчанию в качестве сохраненного значения после сохранения формы виджета? Зашифрован ли пароль перед его отправкой? Если да, то как я шифрую его так же? Комментарий должен видеть только свои комментарии в wordpress

Можно отключить автосохранение для одного настраиваемого типа сообщения

Поэтому у меня возникла проблема с моими настраиваемыми полями в моем настраиваемом типе сообщений. По какой-то причине поля сохраняются, а затем несколько раз удаляются случайно … Я уверен, что это не случайность, но я не уверен, что это может случиться. Вот код для моего настраиваемого типа сообщений:

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

Обновление: Поэтому я сделал больше исследований и понял это. Автосохранение (aka Revisions) – метаданные сообщения удаляются

Можно ли отключить автосохранение только для одного типа сообщений, а не по всему миру?

Solutions Collecting From Web of "Можно отключить автосохранение для одного настраиваемого типа сообщения"

Это легко 🙂

 add_action( 'admin_enqueue_scripts', 'my_admin_enqueue_scripts' ); function my_admin_enqueue_scripts() { if ( 'your_post_type' == get_post_type() ) wp_dequeue_script( 'autosave' ); } 

По-видимому, де-регистрация автосохранения javascript существенно остановит работу автосохранения. Это не обязательно отключает возможность автосохранения в этом типе сообщений, но это остановит запуск собственного скрипта автосохранения.

Это не идеальное решение, но оно должно иметь желаемый эффект.

 function wpse5584_kill_autosave_on_postype( $src, $handle ) { global $typenow; if( 'autosave' != $handle || $typenow != 'your-post-type-here' ) return $src; return ''; } add_filter( 'script_loader_src', 'wpse5584_kill_autosave_on_postype', 10, 2 ); 

Надеюсь, это поможет…

EDIT: с приведенным выше кодом, когда на экране создания сообщений для этого типа вы должны увидеть следующее в источнике страницы.

 <script type='text/javascript'> /* <![CDATA[ */ var autosaveL10n = { autosaveInterval: "60", previewPageText: "Preview this Page", previewPostText: "Preview this Post", requestFile: "http://yoursite/wp-admin/admin-ajax.php", savingText: "Saving Draft&#8230;", saveAlert: "The changes you made will be lost if you navigate away from this page." }; try{convertEntities(autosaveL10n);}catch(e){}; /* ]]> */ </script> <script type='text/javascript' src=''></script> 

Переменные не являются тем, что мы здесь рассматриваем, это сценарий внизу, обратите внимание, что src теперь не указывает нигде (это первоначально указывало на файл autosave.js).

Вы видите что-то похожее на вышесказанное, или src все еще записывается по пути к файлу autosave.js?

EDIT2: Это то, что я вижу с конкатенатными скриптами.

 <script type='text/javascript' src='http://example/wp-admin/load-scripts.php?c=0&amp;load=hoverIntent,common,jquery-color,schedule,wp-ajax-response,suggest,wp-lists,jquery-ui-core,jquery-ui-sortable,postbox,post,word-count,thickbox,media-upload&amp;ver=e1039729e12ab87705c047de01b94e73'></script> 

Обратите внимание, что сценарий autosave все еще исключается (так что до сих пор я не могу воспроизвести вашу проблему).

Где вы размещаете код, который я предоставил?

У меня просто была проблема с этим в одном из плагинов, которые я поддерживаю, и мы решили просто проверить, были ли мы на наших страницах (wpsc-продукт, а не на почте или на странице), а затем мы просто отменили регистрацию автосохранения, , вне CPT это «wpsc-продукт», и наша функция (удаление несвязанного кода выглядит примерно так:

 function admin_include_css_and_js_refac( $pagehook ) { global $post_type, $current_screen; if($post_type == 'wpsc-product' ) wp_deregister_script( 'autosave' ); } add_action( 'admin_enqueue_scripts', 'admin_include_css_and_js_refac' );