Статус для постинга недоступен


Создание приложения

A. Зарегистрироваться в Однокласниках
B. Привязать к аккаунту электронную почту
C. Получить права разработчика
D. Создать своё приложение

Е. Заполняем анкету, как заполнять описано здесь. Тип приложения выбираем External, указываем ссылки на иконки, статус приложения — Недоступное, права пока не трогаем.
F. После успешного добавления приложения на почту упадет письмо с идентификатором и ключами приложения.

Получение необходимых прав

После регистрации приложения нам необходимо получить права GROUP_CONTENT которые позволят осуществлять постинг в группу в одноклассниках. Для этого нам необходимо написать письмо на адрес [email protected], в письме необходимо указать ID приложения, указать требуемые права доступа и пояснить для каких целей они вам необходимы.

Для автопостинга в группы необходимы права GROUP_CONTENT и VALUABLE_ACCESS.
В письме укажите что VALUABLE_ACCESS необходим для публикации объявления поданного пользователем на его странице, а GROUP_CONTENT необходим для публикации объявлений в группе вашего сайта.


Внимание! Вы можете не получить ответ на ваше письмо, поэтому проверяйте настройки своего приложения, там должны появиться требуемые права доступа.

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

Публикация постов

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

Если вы решили потом поменять права, то нужно будет заново сгенерировать access_token

Я буду публиковать картинку и текст к ней в группе.
Cписок всех параметров метода mediatopic.post и типов вложений есть по ссылке.

Скрипт автопостинга

Если у вас версия PHP 5.5 и выше, то замените этот кусок кода:

$params = array(   "pic1" => "@picture.jpg",  );

На этот:

$params = array(   "pic1" => new CURLFile('picture.jpg'),  );

Приведённый ниже код работает до версии PHP 5.4 включительно.

 

  
<?php // Параметры $ok_access_token = ""; // Наш вечный токен $ok_private_key = ""; // Секретный ключ приложения $ok_public_key = ""; // Публичный ключ приложения $ok_group_id = ""; // ID нашей группы $message = ""; // Сообщение к посту, можно с переносами строки // Запрос function getUrl($url, $type = "GET", $params = array(), $timeout = 30, $image = false, $decode = true) { if ($ch = curl_init()) { curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, false); if ($type == "POST") { curl_setopt($ch, CURLOPT_POST, true); // Картинка if ($image) { curl_setopt($ch, CURLOPT_POSTFIELDS, $params); } // Обычный запрос elseif($decode) { curl_setopt($ch, CURLOPT_POSTFIELDS, urldecode(http_build_query($params))); } // Текст else { curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params)); } } curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); curl_setopt($ch, CURLOPT_USERAGENT, 'PHP Bot'); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); $data = curl_exec($ch); curl_close($ch); // Еще разок, если API завис if (isset($data['error_code']) && $data['error_code'] == 5000) { $data = getUrl($url, $type, $params, $timeout, $image, $decode); } return $data; } else { return "{}"; } } // Массив аргументов в строку function arInStr($array) { ksort($array); $string = ""; foreach($array as $key => $val) { if (is_array($val)) { $string .= $key."=".arInStr($val); } else { $string .= $key."=".$val; } } return $string; } // 1.
лучим адрес для загрузки 1 фото $params = array( "application_key" => $ok_public_key, "method" => "photosV2.getUploadUrl", "count" => 1, // количество фото для загрузки "gid" => $ok_group_id, "format" => "json" ); // Подпишем запрос $sig = md5( arInStr($params) . md5("{$ok_access_token}{$ok_private_key}") ); $params['access_token'] = $ok_access_token; $params['sig'] = $sig; // Выполним $step1 = json_decode(getUrl("https://api.ok.ru/fb.do", "POST", $params), true); // Если ошибка if (isset($step1['error_code'])) { // Обработка ошибки exit(); } // Идентификатор для загрузки фото $photo_id = $step1['photo_ids'][0]; // 2. Закачаем фотку // Предполагается, что картинка располагается в каталоге со скриптом $params = array( "pic1" => "@picture.jpg", ); // Отправляем картинку на сервер, подписывать не нужно $step2 = json_decode( getUrl( $step1['upload_url'], "POST", $params, 30, true), true); // Если ошибка if (isset($step2['error_code'])) { // Обработка ошибки exit(); } // Токен загруженной фотки $token = $step2['photos'][$photo_id]['token']; // Заменим переносы строк, чтоб не вываливалась ошибка аттача $message_json = str_replace("n", "\n", $message); // 3.
постим в группу $attachment = '{ "media": [ { "type": "text", "text": "'.$message_json.'" }, { "type": "photo", "list": [ { "id": "'.$token.'" } ] } ] }'; $params = array( "application_key" => $ok_public_key, "method" => "mediatopic.post", "gid" => $ok_group_id, "type" => "GROUP_THEME", "attachment" => $attachment, "format" => "json", ); // Подпишем $sig = md5( arInStr($params) . md5("{$ok_access_token}{$ok_private_key}") ); $params['access_token'] = $ok_access_token; $params['sig'] = $sig; $step3 = json_decode( getUrl("https://api.ok.ru/fb.do", "POST", $params, 30, false, false ), true); // Если ошибка if (isset($step3['error_code'])) { // Обработка ошибки exit(); } // Успешно echo 'OK'; ?>

Источник: shtyrlyaev.ru

Стандартные статусы в WordPress

По умолчанию в WordPress имеется 8 статусов постов. Рассмотрим каждый из них:


  • publish — опубликованный пост. Доступен на сайте для просмотра каждому. Этот статус присваивается записям при нажатии на кнопку «Опубликовать».
  • future — пост, запланированный на публикацию в будущем. Для того, чтобы присвоить записи этот статус, устанавливаем время публикации, которое ещё не наступило и нажимаем кнопку «Запланировать».
  • draft — черновики (записи, которые ещё находятся в процессе написания и не готовы к публикации). Для создания черновика нажмите кнопку «Сохранить».
  • pending — пост, ожидающий проверки редактором или администратором. Все записи пользователей с ролью «Участник» отправляются на модерацию.
  • private — посты, доступные для просмотра и редактирования только администраторам.
  • trash — посты, находящиеся в корзине. Для того, чтобы переместить пост в корзину, нажмите на ссылку «Удалить».
  • auto-draft — черновики, которые создаются автоматически в процессе редактирования постов.
  • inherit — этот статус присваивается всем вложениям, а также редакциям записей.

Создание произвольного статуса

В версии движка WordPress 3.0 появилась функция register_post_status(), позволяющая регистрировать свой собственный статус постов. Пока что возможности этой функции сильно ограничены, возможно в новых версиях WordPress появится что-то интересное.

В следующем примере создадим статус «unread» (не прочитано). Как видите, функция должна подключаться к хуку init.

Больше примеров смотрите в документации функции register_post_status().

Источник: misha.blog


You May Also Like

About the Author: admind

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

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