Форум программистов, компьютерный форум, киберфорум
WordPress
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
20 / 14 / 7
Регистрация: 20.07.2010
Сообщений: 246
1

Подскажите названия функций для создания плагина

06.10.2016, 15:04. Просмотров 913. Ответов 14
Метки нет (Все метки)

Сделал простой и полезный плагин для джумлы. Теперь хочу сделать аналог для водпресса.
Подскажите пожалуйста как сделать в водпрессе следующее:

1) вывод на экран уведомления до того как сохранен пост, и в случае если срабатывает событие - то не дать сохранить.
и вообще обработку перед сохранением
кто знаком с джумлой, имею ввиду такую конструкцию. как её сделать в вордпрессе?
Код
function onContentBeforeSave($context, $article, $isNew) {
if (....) {		
JFactory::getApplication()->enqueueMessage("замечание",'notice' );
return false;
}
return true;}
2) как узнать текущую информацию по названию статьи, её текст, кто опубликовал, когда и т.д.
в джумле делается
Код
$article->introtext
$article->fulltext
$article->title
и т.д.
а как эту информацию вытащить в вордпрессе?


3) как занести данные в базу?
в джумле это делается так, а как в ворпрессе?
Код
$db = JFactory::getDbo();
$query = $db->getQuery( true )
		->update( '#__content' )
		->set( '`какое-то поле` = \'...\'')
		->where( 'id=' .(int)$article->id );//для только что сохраненной статьи
	$db->setQuery( $query )->execute();
Добавлено через 17 минут
Нашел как выводить уведомление, но как его вывести до сохранения и не дать сохранить?
Код
function uvedomlenie_v_adminke(){ 
echo '<p>Уведомление</p>';
}
  add_action('admin_notices', 'uvedomlenie_v_adminke');
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.10.2016, 15:04
Ответы с готовыми решениями:

Подскажите названия одного плагина Visial Studio (2008,2010)
Подскажите названия одного плагина Visial Studuo (2008,2010) который читает системные файлы Visial...

Подскажите идею для плагина
Здравствуйте. Пишу плагины для wp. На данный момент как хобби выбираю интересные задачи и реализую....

Подскажите название плагина для Brackets
Плагин - интерпретирует код php, как на скриншоте.

Создание динамического названия для считывания и создания файла
Вопрос такой, необходимо сделать функцию, чтобы пользователь мог сам вводить название файла для его...

14
Заблокирован
06.10.2016, 15:07 2
как писать в базу данных в wordpress?? ищи по слову wpdb это обертка для работы с базой данных в wordpress'e
1
20 / 14 / 7
Регистрация: 20.07.2010
Сообщений: 246
06.10.2016, 15:31  [ТС] 3
Спасибо. С 3 вопросом разобрался. Там кстати возникла ошибка, о которой нигде не предупреждали, не хватало одной строчки для подключения wp-load.php
Код
require($_SERVER['DOCUMENT_ROOT'].'/wp-load.php');
function test(){
global $wpdb;
$wpdb->get_var(
"UPDATE $wpdb->posts SET `pole` = 'znachenie' WHERE `ID`=nomer;"
);
}
test();
однако, остаются еще первые 2 вопроса.
в частности как узнать айди только что сохраненной статьи?
0
Заблокирован
06.10.2016, 15:33 4
в частности как узнать айди только что сохраненной статьи?
создать таблицу mysql, в нее при сохранении писать id статьи, и потом загружать из таблицы mysql id этой статьи.

Таблицу можно создать не типа myISAM или innoDB, а например, memory.
0
20 / 14 / 7
Регистрация: 20.07.2010
Сообщений: 246
06.10.2016, 15:38  [ТС] 5
Не понял. Это вообще про что и зачем так сложно?
создать таблицу mysql, в нее при сохранении писать id статьи
таблица уже есть стандартная, в нее сохраняется пост.
как узнать какой у нее будет номер/название/автор и прочее до и после сохранения статьи?
0
Заблокирован
06.10.2016, 15:40 6
только писать в бд id после сохранения и выдергивать потом..
или писать id в sessions или cookies.
0
18 / 18 / 9
Регистрация: 20.11.2015
Сообщений: 175
06.10.2016, 15:47 7
Можно подвесить функцию на хуки вроде этого. pre_post_update

Как то я сам использовал хук transition_post_status кажется
Вообще есть несколько хуков до и после публикации.

не помню сейчас, как найду тот плагин скажу

Получается перед сохранением поста будет идти проверка, и если надо то прервать процесс.
1
20 / 14 / 7
Регистрация: 20.07.2010
Сообщений: 246
06.10.2016, 15:47  [ТС] 8
ладно, есди водпресс не дает возможности посмотреть данные по опубликованной статье. хотя бы айди можно иначе как этот айди написать, откуда он берется, как получить?
только писать в бд id после сохранения
т.е. для чего это вообще надо:
как сейчас работает у меня на джумле:
сохраняется статья
в зависимости от её названия, в базе присваивается та , или иная категория, метки и ключевые слова.
например если в названии статьи есть "салат" - значит в раздел сайта с салатами. Если суп - значит в супы.
если в списке ингредиентов блюда отсутсвуют те или иные ингредиенты, тогда к статье присваиваются метки, типа:
постное, без муки, без масла и т.д.
0
18 / 18 / 9
Регистрация: 20.11.2015
Сообщений: 175
06.10.2016, 15:49 9
Вот эту статью я публиковал на своем блоге
Про статусы постов. Не знаю может тебе поможет эта инфо.

У каждого поста в движке WordPress есть свой статус.
Статусы бывают 8 типов: Publish, Future, Draft, Pending, Private, Trash, Auto-Draft, Inherit

publish — опубликованный пост
future — запланированный на публикацию пост
draft — черновик поста который находится в процессе написания
pending — пост, ожидающий проверки редактором или администратором
private — пост, который может просмотреть и редактировать только администратор
trash — пост, находящийся в корзине.
auto-draft — черновик, который создается автоматически в момент написания поста
inherit — статус присваивается всем вложениям и редакциям записей.

Статус поста хранится в колонке post_status в таблице базы данных wp_posts.

Как можно использовать на практике статусы постов.
К примеру можно использовать хук publish_post
publish_post срабатывает когда пост публикуется, или когда пост редактируется и статус меняется на publish


PHP
1
2
3
4
5
add_action(‘publish_post’, ‘post_is_published’);
 
function post_is_published () {
// Здесь можно разместить почтовое уведомление
}
0
20 / 14 / 7
Регистрация: 20.07.2010
Сообщений: 246
06.10.2016, 15:57  [ТС] 10
пост не удалось отредактировать, потому дополню, для чего это вообще надо:

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

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


но как вытащить название статьи? текст?
выше написали, что только айди можно узнать? а все остальноев вытащить из базы после сохранения? а до сохранения невозможно?
к чему тогда эти статусы?
0
18 / 18 / 9
Регистрация: 20.11.2015
Сообщений: 175
06.10.2016, 16:04 11
Выводим ID текущего поста

$id_etogo_posta = the_ID();


Выцепляем заголовок записи для дальнейшего использования

<?php echo get_the_title( $id_etogo_posta ) ?>
1
20 / 14 / 7
Регистрация: 20.07.2010
Сообщений: 246
06.10.2016, 16:17  [ТС] 12
Ну вот, спасибо, то что и спрашивал! Правда ошибка почему-то возникает

Код
function test2(){
 $id_etogo_posta = get_the_ID();
echo 'айди статьи - '.$id_etogo_posta;
}

add_action('publish_post', 'test2');
айди статьи - 1
Warning: Cannot modify header information - headers already sent by (output started at Z:\home\wordpresstest.ru\www\wp-content\plugins\test\test.php:1) in Z:\home\wordpresstest.ru\www\wp-includes\pluggable.php on line 1174
0
87 / 87 / 41
Регистрация: 09.05.2015
Сообщений: 315
06.10.2016, 16:49 13
Лучший ответ Сообщение было отмечено nikki4 как решение

Решение

После вашего вывода где-то заголовки добавляются. Советую для дебага писать в файл или создать отдельную страницу для логов.

Добавлено через 20 минут
Чтобы изменить данные перед сохранением, используйте фильтр wp_insert_post_data. По нему есть подробная информация на wp-kama с примерами.
Подробнее как все работает можете посмотреть в wp-includes/post.php в районе 3185 строки.
Как отменить сохранение подсказать не смогу. Было бы логично использовать js для первоначальной проверки. Движок позволяет создать пустую запись и сохранить ее, следовательно нужного механизма может и не быть. Судя по коду ядра, сложно будет предотвратить запись в БД без ошибок. Как вариант - можно насильно делать запись черновиком, пока не будут удовлетворены все требования. Несоответствия хранить в post_meta и выводить при заходе на страницу редактирования, обновлять при сохранении. В случае успеха, удалить поле, опубликовать пост.
0
18 / 18 / 9
Регистрация: 20.11.2015
Сообщений: 175
06.10.2016, 18:02 14
вообще идея прикольная. Кстати как ты создаешь отдельную страницу для логов, rikitikitari

Добавлено через 2 минуты
Вот кстати есть подобный плагин
https://ru.wordpress.org/plugi... -category/
может его подрихтовать под себя и все?
0
87 / 87 / 41
Регистрация: 09.05.2015
Сообщений: 315
06.10.2016, 18:46 15
Цитата Сообщение от kilogramm Посмотреть сообщение
Кстати как ты создаешь отдельную страницу для логов
я таким не занимаюсь, я сразу все делаю
Можно создать страницу, написать функцию, которая дописывает строки в ее контент - вот и логи. Или вообще отдельный тип контента сделать
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.10.2016, 18:46

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

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

Программа для создания графиков функций
Построить графики функций.

Средство для автоматизированного создания прототипов функций из dll
есть dll, к примеру kernel32.dll, как известно можно просмотреть список экспортируемых ей функций и...

Подскажите мотивацию для создания шаблона с 0 для joomla
Написал шаблон сам для дипломного проекта,заказчик поставил задачу писать в ручную, а какова...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.