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

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

начальные знания 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 формы.

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



blog comments powered by Disqus
podves alebed dpbond