رفتن به مطلب

مثال کوچک برای wp_insert_post


پست های پیشنهاد شده

سلام ممنون میشم که با تابع wp_insert_post یک مثال ساده بزنید که فقط عنوان و مطلب را ثبت کند.


// Create post object
$my_post = array(
'post_title' => 'My post',
'post_content' => 'This is my post.',
'post_status' => 'publish',
'post_author' => 1,
'post_category' => array(6)
);
// Insert the post into the database
wp_insert_post( $my_post );

یه فرم می خوام که به کد های بالا وصل بشه و عنوان و محتوا رو بگیره و یه دکمه برا ارسال.

لینک به ارسال

سلام


<form action="" method="post">
<input type="text" name="title">
<textarea name="text"></textarea>
<button name="add">Submit</button>
<span><?php do_action('add_post_mori'); ?></span>
</form>
<?php
function add_post(){

if(isset($_POST['add']))
{
$title=$_POST['title'];
$text=$_POST['text'];
$my_post = array(
'post_title' => $title,
'post_content' => $text,
'post_status' => 'publish',
'post_author' => 1,
'post_category' => array(6)
);
wp_insert_post( $my_post );
}
add_action('add_post_mori','add_post');
?>

لینک به ارسال

خطای زیر رو میده


Parse error: syntax error, unexpected $end in C:\wamp\www\medical\wp-content\themes\nt-medical\send-post.php on line 127

خط 127 اصلا نداره

لینک به ارسال


<?php
/*
Template Name: Send Post
*/
?>
<?php get_header(); ?>
<div class="body-top-bg"></div>
<div class="middle">
<div class="content">
<div class="bg-line"></div>
<div class="single-main">
<?php
$my_fancy_new_post = array();
$my_fancy_new_post['post_title'] = $_POST['post_title'];
$my_fancy_new_post['post_content'] = $_POST['post_content'];
$my_fancy_new_post['comment_status'] = 'closed';
$my_fancy_new_post['post_author'] = 2;
$my_fancy_new_post['post_category'] = array(30);
$my_fancy_new_post['post_status'] = 'draft';
$writer_name = $_POST['letter_name'];
$writer_school = $_POST['school'];
$writer_year = $_POST['letter_year'];
$writer_email = $_POST['email'];
$writer_phone = $_POST['telephone'];
if (!isset($_POST['submit'])) {
?>
<form method="post" action="">
<table>
<tr>
<th><label for="id_title">عنوان</label></th>
<td><input id="id_title" type="text" name="post_title" maxlength="100" /></td>
</tr>
<tr>
<th><label for="id_text">پرسش</label></th>
<td><textarea id="id_text" rows="10" cols="40" name="post_content"></textarea></td>
</tr>
<tr>
<td><input type="submit" value="ثبت پرسش" name="submit"/></td>
</tr>
</table>
</form>
<?php
} else {
echo '<p>';
$new_post_ID = wp_insert_post( $my_fancy_new_post );
if( $new_post_ID ) {
add_post_meta($new_post_ID, 'writer', $writer_name);
add_post_meta($new_post_ID, 'letter_school', $writer_school);
add_post_meta($new_post_ID, 'letter_year', $writer_year);
add_post_meta($new_post_ID, 'letter_email', $writer_email);
add_post_meta($new_post_ID, 'letter_phone', $writer_phone);
echo 'ارسال شد.';
}
else {
?>
An error occured while submitting your letter. Please go back and try again.
</p>
<p>Potentially useful debug information:<br />
<strong>$_POST['post_title']</strong> <?php echo $_POST['post_title']; ?><br />
<strong>$_POST['post_content']</strong> <?php echo $_POST['post_content']; ?><br />
<?php
}
echo '</p>';
}
?>
</div>
<div class="left-sidebar">
<div class="archive-tab">
<ul class='tabs'>
<li class="tab1"><a href='#tab1'>آخرین مطالب</a></li>
<li class="tab2"><a href='#tab2'>مطالب محبوب</a></li>
</ul>
<div id='tab1'>
<?php
$my_custom_query= new WP_Query(array(
'post_type' => 'post',
'post_status' => 'publish',
'order' => 'DESC',
'orderby' => 'ID',
'posts_per_page' =>'10',
)); ?>
<?php
if($my_custom_query->have_posts()) : ?>
<ul class="archive-tab2">
<?php
while($my_custom_query->have_posts()) : $my_custom_query->the_post();?>
<li>
<h2><a href="<?php the_permalink();?>" title="<?php the_title_attribute('echo=1'); ?>" rel="bookmark">
<?php the_title(); ?>
</a></h2>
</li>
<?php endwhile; ?>
</ul>
<?php endif; ?>
<?php wp_reset_query(); ?>
</div>
<div id='tab2'>
<?php
$popular = new WP_Query( array(
'post_type' => array( 'post' ),
'showposts' => 10,
'ignore_sticky_posts' => true,
'orderby' => 'comment_count',
'order' => 'dsc',
'date_query' => array(
array(
'after' => '1 month ago',//1 day ago, 1 week ago, 2 weeks ago, 1 month ago, 1 year ago, all time
),
),
) );
?>
<ul class="archive-tab2">
<?php while ( $popular->have_posts() ): $popular->the_post(); ?>
<li>
<h2><a href="<?php the_permalink();?>" title="<?php the_title_attribute('echo=1'); ?>" rel="bookmark">
<?php the_title(); ?>
</a></h2>
</li>
<?php endwhile; ?>
</ul>
<?php wp_reset_query();?>
</div>
</div>
<div class="Articles-last">
<?php
$my_custom_query= new WP_Query(array(
'post_type' => 'post',
'post_status' => 'publish',
'cat' => '4',
'order' => 'DESC',
'orderby' => 'ID',
'posts_per_page' =>'5',
)); ?>
<?php
if($my_custom_query->have_posts()) : ?>
<h3>آخرین مقالات</h3>
<div class="title"></div>
<ul>
<?php
while($my_custom_query->have_posts()) : $my_custom_query->the_post();?>
<li>
<h2><a href="<?php the_permalink();?>" title="<?php the_title_attribute('echo=1'); ?>" rel="bookmark">
<?php the_title(); ?>
</a></h2>
</li>
<?php endwhile; ?>
</ul>
<?php endif; ?>
<?php wp_reset_query(); ?>
</div>
</div>
</div>
</div>
<?php get_footer(); ?>

داخل آیدی زیر است

<div id='tab1'>

لینک به ارسال

نوع نوشتن فرمتون اشتباهه ولی این اروری که گذاشتنید مربوط به این فایل فکر نکنم باشه خط 127 این فایل مشکلی نداره

صورت کلی استفاده از wp_insert_post


<?php
if(isset($_POST['post_title']) && isset($_POST['post_content'])) {
$my_post = array(
'post_type' => 'post',
'post_title' => $_POST['post_title'],
'post_content' => $_POST['post_content'];
);
$new_post_id = wp_insert_post($my_post);
}
?>
<form>
...
</form>

لینک به ارسال

تشکر من با توجه به یک مثال اماده توانستم این کار را انجام بدهم. با کد زیر


<div id='tab1'>
<table class="porsesh">
<?php
$my_fancy_new_post = array();
$my_fancy_new_post['post_title'] = $_POST['post_title'];
$my_fancy_new_post['post_content'] = $_POST['post_content'];
$my_fancy_new_post['comment_status'] = 'closed';
$my_fancy_new_post['post_author'] = 1;
$my_fancy_new_post['post_category'] = array(6);
$my_fancy_new_post['post_status'] = 'draft';

if (!isset($_POST['submit'])) {
?>
<form method="post" action="">

<tr>
<td>عنوان سوال</td>
<td><input type="text" name="post_title" class="text"></td>
</tr>
<tr>
<td>محتوای سوال</td>
<td><textarea class="textarea" name="post_content"></textarea></td>
</tr>
<tr>
<td><input type="submit" value="ارسال" class="submit" name="submit"></td>
<td>محل نمایش پیام ها</td>
</tr>
</table>
</form>
<?php
} else {
echo '<p>';
$new_post_ID = wp_insert_post( $my_fancy_new_post );
if( $new_post_ID ) {

echo 'سوال شما با موفقیت ثبت شد.';
}
else {
?>
لطفاً تمامی گزینه ها پر شود.
<?php
}
echo '</p>';
}
?>
</div>

همه چیز به خوبی کار می کند و هیچ مشکلی نیست.

فقط میخواهم دو جمله زیر به جای عبارت "محل نمایش پیام ها" لود شوند. و پیش فرض خالی باشد. الان به صورت اجاکسی توی یک صفحه سفید این دو پیام طبق اتفاق رخ داده شده کار میکنند.

سوال شما با موفقیت ثبت شد.

لطفاً تمامی گزینه ها پر شود.

post-3445-0-53899100-1437347663_thumb.pn

لینک به ارسال

کد آژاکستون کجاست؟

این کدهاتون آژاکسی نیستند برای اجرای آژاکسی باید اینجو.ری تغییرشون بدید


<?php
if (!isset($_POST['submit'])) { ?>
<div id='tab1'>
<form method="post" action="<?php echo $_SERVER['REQUEST_URI'];?>" onsubmit="return ajaxysubmitform()" id="insert-form">
<table class="porsesh">
<?php
$my_fancy_new_post = array();
$my_fancy_new_post['post_title'] = $_POST['post_title'];
$my_fancy_new_post['post_content'] = $_POST['post_content'];
$my_fancy_new_post['comment_status'] = 'closed';
$my_fancy_new_post['post_author'] = 1;
$my_fancy_new_post['post_category'] = array(6);
$my_fancy_new_post['post_status'] = 'draft';
?>

<tr>
<td>عنوان سوال</td>
<td><input type="text" name="post_title" id="post-title" class="text"></td>
</tr>
<tr>
<td>محتوای سوال</td>
<td><textarea class="textarea" name="post_content" id="post-content"></textarea></td>
</tr>
<tr>
<td><input type="submit" value="ارسال" class="submit" name="submit"></td>
<td id="msg">محل نمایش پیام ها</td>
</tr>
</table>
</form>
<script>
function ajaxysubmitform() {
var post_title = $("#post-title").val();
var post_content = $("#post-content").val();
var link = $("#insert-form").attr("action");
$.ajax({
type:"POST",
url:link,
data:{post_title:post_title,post_content:post_content}
})
.done(function(msg){
$("#msg").html(msg);
});
return false;
}
</script>
</div>
<?php
} else {
echo '<p>';
$new_post_ID = wp_insert_post( $my_fancy_new_post );
if( $new_post_ID ) {
echo 'سوال شما با موفقیت ثبت شد.';
}
else {
echo ' لطفاً تمامی گزینه ها پر شود.';
}
echo '</p>';
}
?>

که البته کل کدهای صفحه باید داخل شرط اول باشند یعنی از get_header تا get_footer


<?php
if (!isset($_POST['submit'])) {
get_header();
?>
<div id='tab1'>
<form method="post" action="<?php echo $_SERVER['REQUEST_URI'];?>" onsubmit="return ajaxysubmitform()" id="insert-form">
<table class="porsesh">
<?php
$my_fancy_new_post = array();
$my_fancy_new_post['post_title'] = $_POST['post_title'];
$my_fancy_new_post['post_content'] = $_POST['post_content'];
$my_fancy_new_post['comment_status'] = 'closed';
$my_fancy_new_post['post_author'] = 1;
$my_fancy_new_post['post_category'] = array(6);
$my_fancy_new_post['post_status'] = 'draft';
?>

<tr>
<td>عنوان سوال</td>
<td><input type="text" name="post_title" id="post-title" class="text"></td>
</tr>
<tr>
<td>محتوای سوال</td>
<td><textarea class="textarea" name="post_content" id="post-content"></textarea></td>
</tr>
<tr>
<td><input type="submit" value="ارسال" class="submit" name="submit"></td>
<td id="msg">محل نمایش پیام ها</td>
</tr>
</table>
</form>
<script>
function ajaxysubmitform() {
var post_title = $("#post-title").val();
var post_content = $("#post-content").val();
var link = $("#insert-form").attr("action");
$.ajax({
type:"POST",
url:link,
data:{post_title:post_title,post_content:post_content}
})
.done(function(msg){
$("#msg").html(msg);
});
return false;
}
</script>
</div>
<?php
get_footer();
} else {
echo '<p>';
$new_post_ID = wp_insert_post( $my_fancy_new_post );
if( $new_post_ID ) {
echo 'سوال شما با موفقیت ثبت شد.';
}
else {
echo ' لطفاً تمامی گزینه ها پر شود.';
}
echo '</p>';
}
?>

لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...