Домой Wp-Recall WP-Recall: Проблемы и решения Дополнительное поле в редактировании изображения
17ответ(ов) в теме
Роберт
не в сети 9 лет
На сайте с 31.10.2013
Участник
Сообщения 81
1
13:33

Пытаюсь добавить дополнительное поле в редактор изображений gallery recall (там где задаем заголовок и описание).
Вставить поле для ввода не проблема, а вот как сохранять значение этого поля я пока не понял.
Допустим, я создал текстовое поле "content2". Как мне заставить его работать по аналогии с полем "content" ? Как его правильно объявить?

	function step_one_redactor_image(){
		global $user_ID,$wpdb;
		$post_id = $_POST['post_id'];	
		$post_array = $wpdb->get_row("SELECT * FROM ".$wpdb->prefix."posts WHERE ID='$post_id'");
		$title = $post_array->post_title;
		$content = $post_array->post_content;

        $content2 = $post_array-> ???

0
Андрей CS
не в сети 17 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16855
2
14:27

все зависит от того куда вы хотите сохранять данные из этого поля, можно в произвольное поле, а можно, как в вашем случае использовать $post_array->post_excerpt

0
Роберт
не в сети 9 лет
На сайте с 31.10.2013
Участник
Сообщения 81
3
14:30

Спасибо, но post_excerpt уже пробовал, может что-то не так сделал, но не сработало.
А как записать в отдельное поле?

0
Андрей CS
не в сети 17 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16855
4
14:36

а что с $post_array->post_excerpt не получилось? сохранить данные?
в функции step_two_redactor_image которая ниже находится надо прописать дополнительно ниже $post_array['post_content'] = $post_content;:

$post_array['post_excerpt'] = esc_sql($_POST['post_excerpt']);

0
Роберт
не в сети 9 лет
На сайте с 31.10.2013
Участник
Сообщения 81
5
14:39

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

0
Андрей CS
не в сети 17 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16855
6
14:42

а, для фото действительно нельзя туда сохранять данные.
Значит надо использовать произвольное поле.
в первой функции получайте данные из функции $content2 = get_post_meta($post_id,'content-two',1);
а во второй фунции обновляйте данные в ней через update_post_meta($post_id,'content-two');

0
Роберт
не в сети 9 лет
На сайте с 31.10.2013
Участник
Сообщения 81
7
14:45

Спасибо! Буду пробовать.

0
Роберт
не в сети 9 лет
На сайте с 31.10.2013
Участник
Сообщения 81
8
15:02

Теперь почему-то не сохраняются данные. То-есть при нажатии на кнопку "обновить" ничего не происходит.

0
Андрей CS
не в сети 17 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16855
9
15:29

ясно, значит функции get_post_meta и update_post_meta не объявлены, что и вызывает ошибку, заменяйте их прямыми запросами к БД, по другому никак.

0
Роберт
не в сети 9 лет
На сайте с 31.10.2013
Участник
Сообщения 81
10
15:41

Странно. Ведь поля профиля вызываются как раз через get_post_meta.

Андрей, вообще суть всех манипуляций в следующем:
Мне нужен рубрикатор для галерей. Самым простым способом реализации является добавление пользовательского поля "select". То есть юзер при редактировании названия и описания определяет также и категорию для изображения. Дальше уже можно брать данные из этого поля для сортировки по категориям.

В разделе "идеи" я публиковал идею реализации рубрик, можно сделать все вышеописанным способом. Звучит не сложно, но я нуб в php, поэтому и прошу помощи.
В общем если сделаете, то идею можно закрывать, а 1500р ваши Wink.

0
Андрей CS
не в сети 17 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16855
11
22:32

я постараюсь реализовать эту идею перед обновлением.
А get_post_meta не определена, тк данные функции отрабатывают при SHORTINIT - когда функционал ВП обрезан и половины фукнций нет.

0
Роберт
не в сети 9 лет
На сайте с 31.10.2013
Участник
Сообщения 81
12
22:40

Спасибо! Буду весьма признателен.

0
Роберт
не в сети 9 лет
На сайте с 31.10.2013
Участник
Сообщения 81
13
11:36

Произвольные поля теперь должны работать, но что-то я все равно делаю не так...
Получить данные get_post_meta получается, а вот как их обновить не пойму. При редактировании формы нажатие на кнопку "обновить" ничего не происходит.
Может еще что-то надо добавить?

Вот код:

	function step_one_redactor_image(){
		global $user_ID,$wpdb;
		$post_id = esc_sql($_POST['post_id']);
		$post_array = $wpdb->get_row("SELECT * FROM ".$wpdb->prefix."posts WHERE ID='$post_id'");
		$title = $post_array->post_title;
		$content = $post_array->post_content;
		$category = get_post_meta($post_id,'category_one',1);

		if($user_ID){
			 $log['result']=100;
			 $log['content']= "
			 <div style='display:block;' class='float-window-recall'>
				 <a href='#' class='close-popup'></a>
				 <h3>Category</h3>
				 <input type='text' name='category_one' id='category_edit' style='width:95%;' value='".$category."'>
				 <h3>".__("Name",'rcl').":</h3>
				 <input type='text' name='post_title' id='post_title_edit' style='width:95%;' value='".$title."'>
				 <h3>".__("Description",'rcl').":</h3>
				 <textarea name='post_content' id='content_area_edit' rows='10' style='width:95%;'>".$content."</textarea>
				 <input type='hidden' id='post_id_edit'   value='".$post_id."'>
				 ".rcl_get_button(__('Update','rcl'),'#',array('icon'=>false,'class'=>'update-image','id'=>'add-comment','attr'=>'style=float:right;'))."
			 </div>";
		}
		echo json_encode($log);
		exit;
	}

	function step_two_redactor_image(){
		global $user_ID,$wpdb;
		if(!$user_ID) exit;

		$post_id = esc_sql($_POST['post_id']);
		$post_title = esc_sql($_POST['post_title']);
		$post_content = esc_sql($_POST['post_content']);

		$post_array = array();
		$post_array['post_title'] = $post_title;
		$post_array['post_content'] = $post_content;
		update_post_meta($post_id,'category_one');

		$post_array = apply_filters('rcl_pre_edit_post',$post_array);

		$result = $wpdb->update(
			$wpdb->prefix.'posts',
			$post_array,
			array('ID'=>$post_id)
		);

		if($result){
			$log['post_id']=$post_id;
			$log['post_title']=$post_title;
			$log['post_content']=$post_content;
			$log['otvet']=100;
		}
		echo json_encode($log);
		exit;
	}

0
Андрей CS
не в сети 17 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16855
14
12:03

При обработке ответа должно быть так
update_post_meta($post_id,'category_one', intval($_POST['category_one']));

0
Роберт
не в сети 9 лет
На сайте с 31.10.2013
Участник
Сообщения 81
15
12:13

Так get_post_meta возвращает значение 0. Отредактировать поле по-прежнему нельзя

0
Андрей CS
не в сети 17 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16855
16
12:17

а там у вас что? строка или число передается? если строка, то в коде что я указал выше надо заменить intval на esc_sql

0
Роберт
не в сети 9 лет
На сайте с 31.10.2013
Участник
Сообщения 81
17
12:43

Строка. Но esc_sql также ничего не дает.

0
Тема закрыта. Публикация новых сообщений запрещена.