Dmitry Kohan
Ответы в темах
-
@yube , благодарю вас
Разобрался — действительноedit_post_link ()
всего лишь выводит ссылку в админку, но впрочем там уже и можно изменить все произвольные поля записи, опять-таки да — это админка, доступ к которой получен из лицевой стороны сайта, не фронт-энд, спасибо за пояснение.
По поводу post_content_filtered вы писали:Я о том, что какой-нибудь плагин может записать в это поле свою информацию, затерев Вашу.
Даже если запись добавляется из фронт-энда пользователем и в поле post_content_filtered в этот же момент вносится некая информация — даже используя приведённый мной фильтр выше всё равно некий плагин сможет переписать данное поле ?
или несмотря на любые фильтры это поле всё же лучше не использовать для хранения данных (пусть даже и промежуточных, но которые всё равно могут когда-нибудь пригодиться) ?@yube , но ведь моя «конструкция» ниже позволяет редактировать post_title и post_content из фронт-энда:
the_title('<header><h2>','</h2></header>'); the_content(); edit_post_link("Изменить запись № $i",'','','','button special small');
Вот я и подумал, что может быть имеются схожие алгоритмы и для метаданных записи ?
<br>
По поводу использования post_content_filtered вы писали:Конечно можно. Но ровно до момента активации плагина, автор которого тоже подумал «зачем полю пропадать?»
А если в functions.php использовать фильтр, приведённый здесь. Тогда ведь независимо от каких-либо плагинов поле post_content_filtered сохранится, верно ?
@yube , спасибо ещё раз
Подскажите ещё, пожалуйста, а если редактировать произвольные поля из фронт-энда ? в WP есть какая-то специальная функция подобно следующей для поста
edit_post_link("Изменить запись № $i",'','','','button special small');
?
Также наткнулся на вопрос касательно поля post_content_filtered таблицы posts — временный контент записи, нашел его объяснение:Там хранится временный контент… WordPress не использует это поле вообще, оно для плагинов. Оно устанавливается как пустое при каждом обновлении записи, кроме случаев, когда оно не указано. Т.е. если при обновлении записи это поле указано, оно будет записано, но если при другом обновлении оно не указано, оно сотрется.
Записал в post_content_filtered данные, потом изменил название поста, рубрику. Поле post_content_filtered не очистилось, оно теперь не очищается и в принципе его можно использовать для хранения неких данных ?
@yube , по поводу отображения в админке произвольных полей вы писали:
Справа вверху «настройки экрана» для классики
Но там нет ничего подобного: http://prntscr.com/sfuyop
Из учебника по WP:WordPress добавляет метаполе произвольных полей на экран редактирования записи по умолчанию, как показано здесь: http://prntscr.com/sfuznu
Если я открываю запись на редактирование (запись типа post, произвольные поля добавлены с помощью
update_post_meta()
) — произвольных полей нет, вижу следующее: http://prntscr.com/sfv27j
Подскажите, пожалуйста, что я делаю не так или что-то упустил и не сделал ?@yube , спасибо
Как раз с id поста у меня заминка. «Чужие» мета выводить не планирую. Но как быть с id данного текущего поста ? Добавляется пост через фронт-энд пользователем после отправки формы:$post_data = array( 'post_title' => "$heat_name_object", 'post_content' => "<table class='table table-bordered'> <tr><td>Дата</td> <td>[post id=$post_id key='meta_name'</td></tr></table>", 'post_status' => 'publish' ); $post_id = wp_insert_post( wp_slash($post_data) ); update_post_meta( $post_id, 'meta_name', "$heat_region" );
т.е. на момент формирования $post_data ещё ведь неизвестно $post_id, его можно в принципе не указывать ? или пост сначала нужно добавить, а потом уже обновить и прописать в post_content данный шорт-код и в нем указать getID() ? Этот момент не понял (т.е. если не указать id, система возьмет текущий?)
<br>
ps Можно также вопрос, как в админке для постов отобразить блок «Произвольные поля»? Нужно писать код, или это делается средствами админки ? (не могу понять)и соответственно при изменении meta_value в таблице
postmeta
автоматом при посещении пользователем страницы с данной записью изменится при выводе её post_content. Верно я рассуждаю ?@yube , спасибо большое за ответ, понял свою ошибку
Поясню свою идею:
я пытаюсь, чтобы поле post_content при выводе пользователю зависело от содержимого полей meta_value данного поста в таблицеpostmeta
;
Вопрос:
имеет ли право на жизнь реализация данной идеи посредством шорт-кодов ?
т.е. в поле post_content среди прочего текста будет прописано что-то вроде[post id=8 meta_1='meta_name' meta_2='meta_name_2']
где
id
— это id данной записи,
meta_n
— это некий meta_key записи.
В functions.php темы размещаю соответствующую функцию, которая будет извлекать все meta_value соответствующей записи из базы посредством
$meta = get_post_meta($id,$meta_n,true);
и подставлять их вместо шорт-кода при выводе поля post_content.
Вроде всё расставил. Имеет ли право на жизнь такая реализация ?@yube , извините ещё раз за беспокойство
Что я имел ввиду:
Вы не подскажете, можно ли из поляpost_content
обратиться к конкретному произвольному полю данной записи в таблице postmeta посредством функцииget_post_meta()
и вывести таким образом значение данного метаполя здесь же в полеpost_content
таблицы posts ?Спасибо огромное, применяю данный вариант — всё работает
@yube , можно ещё вопрос по поводу хранения данных в таблицах posts и postmeta: если параметры передаваемые из формы хранить отдельно в postmeta, могу ли я выводить данные параметры также в полеpost_content
соответствующей записи таблицы posts ?Спасибо огромное ! Столкнулся с ещё одной трудностью
@yube , подскажите, пожалуйста, а как быть с промежуточными данными, которые пользователь не вводит в форму, а которые вычисляются через ajax-запрос в зависимости от его выбора ? (если вкратце: пользователь выбирает дату, на основе этой даты я лезу в базу и нахожу нужный коэффициент, в functions.php вывожу его черезecho "$index_build";
и записываю посредством ajax из custom.js в элемент формы span:function (response) {$span.text(response);}
Но как эту переменную передать в обработчик формы /forms/form_1.php ? при прямом обращении к $index_build из form_1.php естественно возникает ошибка, может есть какой-то другой вариант обращения к этой переменной? или нужно записывать её в <input type=»hidden»> и затем передавать в form_1.php ?
@yube , прошу прощения, перечитал ещё раз Ваши последние ответы и вот:
А файл может быть любой, в т.ч. тот, который вообще не подключался во время вывода формы.
Но как тогда система «поймёт» из какого файла брать код обработки формы ?Спасибо огромное! Буду пробовать
@yube , и если форм несколько и все находятся в author.php, и все они записывают в базу индивидуальные посты, т.е. пользователь сам решает какую форму из n заполнить, я ведь всё равно могу здесь в author.php разместить код обработки всех форм — и просто проверять какую из n форм отправил пользователь: скажем по индивидуальному параметру $_POST формы вот так:
if (isset($_POST['form_1'])) { ... }
и таким образом в определенный момент времени обрабатывать одну из форм ?
@yube , т.е. если код обработки формы находится в том же файле, что и сама форма, то в action можно ничего не прописывать ?
@yube , можно задать ещё один вопрос касательно записи в базу:
форма ввода в моём случае находится на странице архива автора author.php, можно ведь разместить код, который принимает и записывает в базу данные введённые пользователем в форме, прямо в author.php, т.е. форму ввода прописать так:
<form class="form-horizontal" action="author.php" method="post">
или же в параметре action нужно прописывать скажем functions.php и соответствующий код обработки размещать там в functions.php?