Intereting Posts
Проблема с сохранением настроек WordPress с текущей версией. Это ошибка? Как получить текущее имя get_post_types? Подсчитайте сообщения пользователей и сохраните их для последующего использования Как форматировать текст субтитров сайта echo wp_editor для экрана с форматированием Как установить одну установку на blog.example.com и несколько блогов в таких подпапках, как blog.example.com/userA? Можно ли использовать Категории для взлома мультисайтовой установки с одним MySql db? wp_title () пуст на статической главной странице подобно редактору, может создать любого нового пользователя, кроме администратора Кэширование и версия для rtl.css Как ускорить установку плагинов и обновление WordPress зарегистрировать дочерний класс в другом плагине Действия или фильтры запускаются, когда данные сохраняются в пользовательской таблице Удаление первых 8-10 писем из сообщения? Есть ли способ измотать update_option для модульного тестирования?

Данные метаданных не сохраняются

Я только начал работать с пользовательскими типами сообщений и метаполями / данными. Я могу получить настраиваемую почту и мета-поле. Это просто не спасет. Я смотрел на код и читал бесконечно, но ничто не мешало мне, что не так. Мне бы хотелось увидеть свежие глаза, чтобы посмотреть, что вы думаете. Как только я узнаю об этом, я уверен, что смогу масштабировать использование этих функций.

Вот код, который у меня есть для моего мета-поля:

/*Custom META Boxes for Ranch Custom Post Types*/ /*Ranch Location META Box*/ add_action( 'add_meta_boxes', 'ranch_location_meta' ); function ranch_location_meta() { add_meta_box( 'ranch_location_meta', __( 'Ranch Location', 'myplugin_textdomain' ), 'ranch_location_meta_content', 'ranch', 'side', 'high' ); } function ranch_location_meta_content( $post ) { wp_nonce_field( plugin_basename( __FILE__ ), 'ranch_location_meta_content_nonce' ); echo '<label for="ranch_location"></label>'; echo '<input type="text" id="ranch_location" name="ranch_location" placeholder="Enter Ranch Location Here" />'; } add_action( 'save_post', 'ranch_location_save' ); function ranch_location_save( $post_id ) { if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return; if ( !wp_verify_nonce( $_POST['ranch_location_meta_content_nonce'], plugin_basename( __FILE__ ) ) ) return; if ( 'page' == $_POST['post_type'] ) { if ( !current_user_can( 'edit_page', $post_id ) ) return; } else { if ( !current_user_can( 'edit_post', $post_id ) ) return; } $ranch_location = $_POST['ranch_location']; update_post_meta( $post_id, 'ranch_location', $ranch_location ); } 

Любая помощь так ценится. Благодаря!

ОБНОВЛЕНИЕ НА НЕКОТОРЫЕ УСТРАНЕНИЯ НЕИСПРАВНОСТЕЙ:

Таким образом, я играю с функцией сохранения, чтобы устранить неполадки. Поэтому я удалил всю проверку безопасности различными способами. Сначала я оставил только «nonce» в функции сохранения …

 /*Custom META Boxes for Ranch Custom Post Types*/ /*Ranch Details META Box*/ add_action( 'add_meta_boxes', 'ranch_location_meta' ); function ranch_location_meta() { add_meta_box( 'ranch_location_meta', __( 'Ranch Location', 'myplugin_textdomain' ), 'ranch_location_meta_content', 'ranch', 'side', 'high' ); } function ranch_location_meta_content( $post ) { wp_nonce_field( plugin_basename( __FILE__ ), 'ranch_location_meta_content_nonce' ); echo '<label for="ranch_location"></label>'; echo '<input type="text" id="ranch_location" name="ranch_location" placeholder="City & State" />'; } function ranch_location_save( $post_id ) { if ( !wp_verify_nonce( $_POST['ranch_location_meta_content_nonce'], plugin_basename( __FILE__ ) ) ) return; $ranch_location = $_POST['ranch_location']; update_post_meta( $post_id, 'ranch_location', $ranch_location ); } add_action( 'save_post', 'ranch_location_save' );` 

Функция сохранения по-прежнему не выполнена. В мета-окне не осталось данных.

Затем я удалил nonce все вместе, оставив это в функции сохранения …

 function ranch_location_save( $post_id ) { if ( !wp_verify_nonce( $_POST['ranch_location_meta_content_nonce'], plugin_basename( __FILE__ ) ) ) return; $ranch_location = $_POST['ranch_location']; update_post_meta( $post_id, 'ranch_location', $ranch_location ); } add_action( 'save_post', 'ranch_location_save' );` 

Все еще ничего не спасено. SOOOOOO … означает ли это, что моя проблема связана с тем, как update_post_meta находит данные для заполнения? Потому что остальная часть другого материала – это просто безопасность, не так ли? Без этого все должно просто заполнить проблему, не так ли? Извините меня, если я ошибаюсь. Я немного взломал PHP. 😉

Solutions Collecting From Web of "Данные метаданных не сохраняются"

Вы отметили, что вы проверяете, что тип сообщения является страницей, и этот пользователь может редактировать страницы и сообщения?

 if ( 'page' == $_POST['post_type'] ) { if ( !current_user_can( 'edit_page', $post_id ) ) return; } else { if ( !current_user_can( 'edit_post', $post_id ) ) return; } 

Должен быть:

 if ( 'ranch' == $_POST['post_type'] ) { if ( !current_user_can( 'edit_post', $post_id ) ) return; } else { if ( !current_user_can( 'edit_post', $post_id ) ) return; } 

Примечание . Стандартные возможности отправки по умолчанию назначаются пользовательским типам сообщений. Если вы изменили это, вы должны отрегулировать правильную силу current_user_can( 'edit_post', $post_id ) .

Кроме того, вы можете заполнить ввод метаданных предыдущим значением:

 function ranch_location_meta_content( $post ) { $previous_value = get_post_meta( $post->ID, 'ranch_location', true ); wp_nonce_field( plugin_basename( __FILE__ ), 'ranch_location_meta_content_nonce' ); echo '<label for="ranch_location"></label>'; echo '<input value="'.$previous_value.'" type="text" id="ranch_location" name="ranch_location" placeholder="Enter Ranch Location Here" />'; } 

Попробуйте basename( __FILE__ ) вместо plugin_basename( __FILE__ )

Я думаю, что ваш nonce не проверяет.

Похоже, что может случиться, что он фактически сохраняет его, но вы просто не выставляете сохраненное значение. Например, если у вас есть текстовый ввод, вам нужно сначала получить мета, а затем повторить его как атрибут value:

 <?php $my_meta = get_post_meta( $post->ID, 'meta_key', true ); ?> <input type="text" name="name" id="id" value="<?php echo esc_attr($my_meta); ?>" /> 

Это всего лишь очень простой пример, чтобы показать, что я имею в виду.