Rohani

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

8 پست در این موضوع قرار دارد

سلام ممنون میشم که با تابع 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 );

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

0

به اشتراک گذاری این پست


لینک به پست

سلام


<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');
?>

4

به اشتراک گذاری این پست


لینک به پست

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


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

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

0

به اشتراک گذاری این پست


لینک به پست

فایل رو پیوست کنید

1

به اشتراک گذاری این پست


لینک به پست


<?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'>

0

به اشتراک گذاری این پست


لینک به پست

نوع نوشتن فرمتون اشتباهه ولی این اروری که گذاشتنید مربوط به این فایل فکر نکنم باشه خط 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>

3

به اشتراک گذاری این پست


لینک به پست

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


<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

0

به اشتراک گذاری این پست


لینک به پست

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

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


<?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>';
}
?>

1

به اشتراک گذاری این پست


لینک به پست

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری