@Shimpanze

Почему не сохраняется содержимое поля в базу данных WordPress?

Здравствуйте!

Мне необходимо сохранять в базу не содержимое поля textarea, а содержимое div'а.

Что я делаю:
1) Создаю необходимый div (создаётся и выводится, с этим проблем нет);
2) получаю id и содержимое моего div'а через DOMDocument;
3) сохраняю через стандартную функцию update_post_meta().

// Регистрация/создание

add_action( 'add_meta_boxes', function() {
  add_meta_box(
    'my-div-container',
    'My div',
    function( $post ) {
      wp_nonce_field( basename( __FILE__ ), 'my_div_nonce' );
      $my_html = '<div id="my-div"></div>';
      echo $my_html;
    },
    'post',
    'normal',
    'high'
  );
});

// Сохранение

add_action( 'save_post', function( $post_id ) {
  if ( !isset( $_POST['my_div_nonce'] ) || !wp_verify_nonce( $_POST['my_div_nonce'], basename( __FILE__ ) ) )
    return $post_id;

  if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE )
    return $post_id;

  if ( !current_user_can( 'edit_post', $post_id ) )
    return $post_id;

  $post = get_post( $post_id );
  if ( $post->post_type == 'post' ) {

    // Получаем id и содержимое div'а
    $my_dom = new DOMDocument;
    if ( !empty( $my_html ) )
      $my_dom->loadHTML( $my_html );
    $my_id = $my_dom->getElementById( 'my-div' );
    $my_value = $my_dom->getElementById( 'my-div' )->nodeValue;

    update_post_meta(
      $post_id,
      $my_id,
      $my_value
    );

  }

  return $post_id;
});

echo $post_id;


К сожалению, не сохраняется.

Как заставить сохраняться?

Спасибо!
  • Вопрос задан
  • 184 просмотра
Решения вопроса 1
wppanda5
@wppanda5 Куратор тега WordPress
WordPress Mедведь
потому, что $my_id содержит объект с DOOM деревом, а не строку с ключом поля,
надо как
update_post_meta(
      $post_id,
      'field_key',
      $my_value
    );
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы