Добавляем запись через сайт -- 17-мая-2009

Итак публикую небольшой ДОК: “Как добавить записи через сайт”, т.е. не придётся заходить в админку… форма будет доступна из любого места сайта.

Итак что нам потребуется:

  • начальные знания php (приветствуются)
  • html (без него будет туго)

Первое что нужно сделать - добавить форму “add post” в нужное место сайта , вот пример, кода формы

<form  method="get" action="wp-content/plugins/add-post-from-site/check.php">
<table cellspacing="20px" id="form">
<tr>
<td align="center">
<h2 align="left">Форма добавления новой записи</h2>
<div style="padding-left:10px; text-align: left;">
<input type="text" name="name"  style="color:#999999;" id="name" value="Имя пользователя" size="25" tabindex="1" /><br/>
<div style="height:5px;"></div>
<input type="text" name="pasw" id="pasw" style="color:#999999;" value="Пароль" size="25" tabindex="2" />
<div style="height:5px;"></div>
<p><h3>Название записи</h3>
<textarea name="title"  style="color:black;" tabindex="3" cols="37" rows="1"></textarea>
</p>
<p><h3>Содержание записи</h3>
<textarea name="content"  style="color:black;" tabindex="4" cols="37" rows="10"></textarea>
</p>
</div>
</td>
</tr>

</table>

<p>
<input name="submit" type="submit" id="submit" tabindex="5" value="Обработать" />
<input type="reset" value="Очистить" id="submit" />
</p>
</form>

Теперь создадим файл проверки, который будет получать данные из формы и добавлять запись в БД

Тут возможны как минимум 2 варианта

  • первый - записи создают все пользователи и они автоматически добавляются в БД от пользователя (который указан по умолчанию), тогда код файла check.php будет выглядеть след. образом
<?php
	require('../../../wp-config.php');
	require ( ABSPATH . WPINC . '/registration.php' );
?>

<?php
	if($_GET['submit']=="Обработать")
		{

							include_once "config.php";
							$date=date("Y-m-d H:i:s");

							$post = array(
							  'comment_status' => $comment_status,
							  'menu_order' => 0,
							  'ping_status' => $ping_status,
							  'post_author' => username_exists(trim($_GET['name'])),
							  'post_category' => array($post_category),
							  'post_content' => trim($_GET['content']),
							  'post_date' => $date,
							  'post_excerpt' => '',
							  'post_parent' => 0,
							  'post_password' => '',
							  'post_status' => $post_status,
							  'post_title' => trim($_GET['title']),
							  'post_type' => $post_type,
							//  'tags_input' => [ '<tag>, <tag>, <...>' ] //For tags.
							  'to_ping' => '');
								wp_insert_post( $post );

		}
			header("Location: ".$_SERVER['HTTP_REFERER'],TRUE,301);
			exit();
?>
  • второй - используется логин, который указал сам пользователь
<?php
	require('../../../wp-config.php');
	require ( ABSPATH . WPINC . '/registration.php' );
?>

<?php
	if($_GET['submit']=="Обработать" && $_GET['name']!="Имя пользователя" && $_GET['pasw']!="Пароль")
		{
			if(user_pass_ok( trim($_GET['name']), trim($_GET['pasw']) )==true)
				{
							include_once "config.php";
							$date=date("Y-m-d H:i:s");

							$post = array(
							  'comment_status' => $comment_status,
							  'menu_order' => 0,
							  'ping_status' => $ping_status,
							  'post_author' => username_exists(trim($_GET['name'])),
							  'post_category' => array($post_category),
							  'post_content' => trim($_GET['content']),
							  'post_date' => $date,
							  'post_excerpt' => '',
							  'post_parent' => 0,
							  'post_password' => '',
							  'post_status' => $post_status,
							  'post_title' => trim($_GET['title']),
							  'post_type' => $post_type,
							//  'tags_input' => [ '<tag>, <tag>, <...>' ] //For tags.
							  'to_ping' => '');
								wp_insert_post( $post );

				}

		}
			header("Location: ".$_SERVER['HTTP_REFERER'],TRUE,301);
			exit();
?>

Стоит отметить

  • после обработки информации происходит автоматическая переадресация на страницу с которой пришёл юзер.
  • В файл check.php встроена проверка пользователя, т.е. только зарегестрированный пользователь может добавлять записи вот код отвечающий за это место
if(user_pass_ok( trim($_GET['name']), trim($_GET['pasw']) )==true){}else{}

так же нужно создать файл config.php

<?php
$comment_status="closed"; //[ 'closed' | 'open' ]
$ping_status="closed";// [ 'open' | 'closed' ]
$post_category=73; //ID категории для записей
$post_status="publish";//[ 'draft' | 'publish' | 'pending' ]
$post_type="post";//[ 'post' | 'page' ]
$default_user="";//ИМЯ пользователя по умолчанию
?>

Теперь нужно указать путь до файла check.php в параметре action формы.

Да вроде и вся необходимая информация… Теперь надо просто попробовать…
В комментариях к этой записи можете задавать вопросы… Но сразу говорю я не буду за вас писать код,я готов помогать и подсказывать!

Добавляем в WordPress доменное портфолио -- 18-апреля-2009

Этот пост посвящён добавлению в WordPress простого доменного портфолио, при этом не придётся изменять файлы двига, сильно менять используемую тему, а также “играться” с бд.

 

Для реализации портфолио нам потребуется: плагин domain-portfolio + NotePad++ и немного времени.

 

  • Заходим в админку блога и добавляем новую категорию, к примеру “Доменное портфолио” и сразу же запоминаем её ID (у меня к примеру 33)
  • В папку с темой создаём файл category-ID.php, где взамен ID вставляем ID категории. Открываем файл в NotePad++ сразу же ставим кодировку UTF-8(без BOM) после этого копируем в файл category-ID.php содержимое category.php 
  • Теперь нужно настроить вывод портфолио в виде таблицы. Для этого ищем
    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>

    И до этого кода добавляем следующий код:

    <table border="0" cellpadding="0" cellspacing="10" width="100%" >
    <tr align="center">
    <td width="20px;">
     ID</td>
    <td>
     Домен</td>
    <td>
     Описание</td>
    <td>
     Тематика</td>
    <td>
     Регистратор</td>
    <td>
     Дата рег.</td>
    <td>
     Стоимость($)</td>
    <td>
     Статус</td>
    <td>
     ТИЦ</td>
    <td>
     PR</td>
    <td>
    Ссылки в  Yandex</td>
    <td>
    Ссылки в Google</td>
    <td>
     Контакт</td>
    </tr>
    <?php $count=1; ?>
    Теперь после кода
    <?php if (have_posts()) : while (have_posts()) : the_post(); ?>

    добавляем

    <?php
     $domain=null;
    
     $id = get_the_ID();
     $domain['Price'] = get_post_meta($id, 'PRICE', true);
     $domain['Reg_time'] = get_post_meta($id, 'REGTIME', true);
     $domain['Reg'] = get_post_meta($id, 'REG', true);
     $domain['url'] = get_post_meta($id, 'NAME', true);
     $domain['url'] = str_replace ( "http://" , "",$domain['url']); // адрес без http
     $domain['Theme'] = get_post_meta($id, 'THEME', true);
     $domain['Status'] = get_post_meta($id, 'STATUS', true);
    
    $domain['Tiz']= get_yandex($domain['url']);
    if($domain['Tiz']==false) {$domain['Tiz']="<span style=\"color:red\">ER</span>";}
    $domain['Pr']=PRValue("google.com",$domain['url']);
    $domain['Yandex_href']=HrefIndexYandexUTF($domain['url']);
    $domain['Google_href']=Href_Google($domain['url']);
     ?>
    

    в этом коде

    $domain['Price'] - цена домена
    $domain['Reg_time'] - дата регистрации
    $domain['Reg'] - регистратор
    $domain['url'] - домен без http://
    $domain['Theme'] - тема домена
    $domain['Status'] - статус
    $domain['Tiz'] - ТИЦ
    $domain['Pr'] - PR
    $domain['Yandex_href'] - ссылки на домен в Yandex
    $domain['Google_href'] - ссылки на домен в Google

    Для вывода домена добавляем след код:

    <tr align="center" style="min-height:32px;">
    <td width="20px;">
     <?php echo $count; ?></td>
    <td  width="10%">
     <a href="<?php echo $domain['url']; ?>" title="<?php echo $domain['url']; ?>"><b><?php echo $domain['url']; ?></b></a></td>
    <td width="20%" align="left">
     <?php the_content(); ?></td>
    <td width="10%">
     <?php echo $domain['Theme']; ?></td>
    <td width="10%">
     <?php echo $domain['Reg']; ?></td>
    <td width="5%">
     <?php echo $domain['Reg_time']; ?></td>
    <td width="5%">
     <?php echo $domain['Price']; ?></td>
    <td width="10%">
     <b><?php echo $domain['Status']; ?></b></td>
    <td width="5%">
     <?php echo $domain['Tiz']; ?></td>
    <td width="5%">
     <?php echo $domain['Pr'];?></td>
    <td width="5%">
     <?php echo $domain['Yandex_href']; ?></td>
    <td width="5%">
    <?php echo $domain['Google_href']; ?>
    </td>
    <td width="20px;">
     <a href="mailto:<?php echo mail_admin_return(); ?>?subject=<?php echo $domain['url']; ?>"><img src="<?php echo get_option('home'); ?>/wp-content/plugins/Domain Portfolio/Mail-32x32.png" border="0" title="Контактная форма"></a></td>
    </tr>
    <?php $count++;?>
    

    В итоге получается следующая структура

    dp

  • Осталось активировать плагин и указать e-mail, который будет использоваться в “Контакт”, e-mail указывается в файле DomainPortfolio.php 
    в строчке
    $mail_admin="admin@domen.zohne"; 

    После активации плагина в закладке “Добавить новую” появится след блок

    df

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

  • Пару слов о создании записей: 
  1. заполнять все поля не обязательно
  2. в поле доменное имя должно быть только имя т.е. никаких “/” , “http://” и т.д. (z.b. morfim.net)

domain-portfolio (Количество скачиваний :218)

Плагин SearchBotCall -- 12-апреля-2009

SearchBotCall - плагин мониторинга заходов поисковых ботов на сайт. Список поисковых ботов указывается в файле bot_ip.php в виде массива, по умолчанию плагин воспринимает боты “Googlebot” , “Yandex” , “KM.RU” , “Yahoo“. Ниже приведу список ботов

 

 Aport - Aport robot
Google - Google (Googlebot)
msnbot - MSN
Rambler - Rambler
Yahoo - Yahoo AbachoBOT - AbachoBOT
accoona - Accoona
AcoiRobot - AcoiRobot
ASPSeek - ASPSeek
CrocCrawler - CrocCrawler
Dumbot - Dumbot
FAST-WebCrawler - FAST-WebCrawler
GeonaBot - GeonaBot
Gigabot - Gigabot
Lycos - Lycos spider
MSRBOT - MSRBOT
Scooter - Altavista robot
AltaVista - Altavista robot
WebAlta - WebAlta
IDBot - ID-Search Bot
eStyle - eStyle
Bot Mail.Ru - Mail.Ru Bot
Scrubby - Scrubby robot
Yandex - Yandex
YaDirectBot - Yandex Direct 

Для того что бы добавить нового бота в “проверку” нужно:

  • получить его индентификатор из списка выше (то что стоит после тире)
  • добавить в bot_ip.php запись с этим идентификатором по шаблону
$bot_ip[i]="идентификатор";

Z.B. добавление бота от MSN
нужно добавить след код перед

?>

 

$bot_ip[4]="MSN";

в итоге получится

<?php
$bot_ip[0]="Googlebot";
$bot_ip[1]="Yandex";
$bot_ip[2]="KM.RU";
$bot_ip[3]="Yahoo";
$bot_ip[4]="MSN";
?>

Статистика по заходам ботов хранится в файле bot_status.txt в формате

 bot_name--||--date_call 

Права на файл bot_status.txt достаточно выставить на значение 644

 

Статистика выводится на главную страницу в админке, как отдельный виджет. При этом происходит проверка если бот бот заходил менее суток назад то “строка бота” будет зеленой, если в течении 2х дней побывал на сайте то желтой, в противном случае красная.

sp

sb

В файле sbc.php есть параметр $bot_status_file в котором указывается адрес bot_status.txt по умолчанию это папка плагина

SearchBotCall (Количество скачиваний :251)

 

N.B. плагин работает только на версиях 2.7.* и выше

Плагин AdminStatus -- 10-апреля-2009

AdminStatus - плагин добавляющий на главную страницу админки виджет редактирования статуса admin’a. Отдалённо напоминает статус в ICQ или Skype.Работает только с версиями 2.7.*

as

Для запуска плагина на хостинге в дир. wp-content/plugins/AdminStatus должен быть файл status.txt с правами на запись (или должны быть права на запись для папки плагина). В этом файле хранится статус Админа.

Что бы вывести статус админа в шаблоне в нужном месте вставьте:

 

<?php admin_status_as(); ?>

AdminStatus (Количество скачиваний :611)

P.S. пример можно увидеть у меня на главной странице

Плагин NewOldPost -- 7-апреля-2009

NewOldPost - плагин переноса записей из рубрики 1 в рубрику 2,если запись была сделана более чем N с. назад. Плагин работает не по crone, поэтому необходимо запускать его через админку, нажатием одной кнопки :)

На странице плагина в админке также можно увидеть текущие настройки (Начальная категория, Конечная категория, Интервал, Текущее время),а также статистику по работе плагина в виде таблице со следующими столбцами ID, Название поста, Автор, Дата, Старая категория, Новая категория. После этой таблице выводится “Итог” - общее количество перенесенных записей. Стоит отметить,если новая категория не существует плагин создаст её автоматически.

Настройки плагина задаются в файле config.php

  • $first_category - начальная рубрика записей
  • $last_category - конечная рубрика записей
  • $timeInterval - временной интервал в “с”

NB (по работе скрипта) Если скрипт обрабатывает не все записи, то рекомендуется увеличить значение “set_time_limit ();” ,по умолчанию стоит 1400.

nop_not

nop_yes

Заказать плагин или задать вопрос можно через контактную форму указав в теме NewOldPost

Плагин WP-search -- 7-апреля-2009

Плагин добавляет в footer admin’ки два поиска по сайту mywordpress.ru и lecactus.ru

Для того чтобы установить плагин необходимо скачать архив wp-search.7z и залить его содержимое в wp-content/plugins/

wp-search

wp-search (Количество скачиваний :207)

Плагин MovePost -- 7-апреля-2009

MovePost - плагин для переноса записей,категорий и пользователей из блога 1 в блог 2. Т.е. плагин позволяет позволяет перенести содержание блога 1 в блог 2.

Для работы плагина необходимо указать следующие данные о блоге “донере”

  • Префикс таблиц
  • Имя базы данных…
  • Пользователь базы данных…
  • Пароль базы данных…
  • Адрес сервере mysql
  • Адрес сайта без http…

menu

первые 5 пунктов необходимы для подключения к БД “донора”,последний пункт “Адрес сайта без http…” используется для замены всех вхождений url донора на новый url(текущего блога)

После нажатия “Обработать” будет доступна статистика по работе плагина, она включает в себя

  • исходные данные
  • таблица перенесенных юзеров
  • таблица перенесенных “записей”
  • таблица “итогов”

в таблице “юзеров” указываются

  • Номер - порядковый номер обработки
  • ID юзера после переноса
  • Логин
  • А также дополнительные сведения о пользователе

Если пользователь существовал до переноса то он не будет перенесен и будет выведены первые 3 поля + “Пользователь уже зарегистрирован”

user

Вторая зона статистики(перенесённых структур) это данные о перенесенных записях. Подробнее писать не буде по скриншоту всё понятно

post

В таблице итогов представлены следующие сведения

  • Количество обработанных анкет пользователей
  • Количество обработанных категорий
  • Количество обработанных записей
  • Количество произведенных sql запросов к “донору”

sql

Плагин переносит категорий любого уровня вложенности, сохраняя структуру. (название, родителя)

Рекомендации пользователям:

  • Не забывайте переносить файлы в ту же дир. где они были на блоге донере изменяя только url блога
  • Плагин работает с Русским и Английским языками, остальные не проверялись.
  • Для перевода плагина существует отдельный файл language.php
  • Если у вас обрабатываются не все записи измените параметр у set_time_limit ()

Плагин проходит тестирование, прошу в комментариях писать ваши отзывы

movepost (Количество скачиваний :230)

От Morfi
в этой категории представлен материал по работам Morfi