AdminWeb

ایجاد یک فایل xml برای هر پست در وردپرس. امکان پذیره؟

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

سلام عرض شد

یه سوالی دارم اگه دوستان وردپرسی و برنامه نویس اطلاعی دارن لطفا همفکری کنند

اینکه چطور و با چه تابعی میشه به ازای هر پست که در وردپرس ارسال میشه، یک فایل xml تولید بشه ؟

مرحله اول تولید فایل xml برای هر پست هست.

بعدش مقدار دادن به این فایل هست که اون رو یکاریش میکنیم

0

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


لینک به پست

سلام

محتویات فایل قراره چی باشه؟ چرا xml ؟

2

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


لینک به پست

فایل xml که برالی هر پست ایجاد می شه ولی بصورت مجازی نه واقعی مثل خود پست که به صورت مجازی تولید می شه

سئوالتون رو اگه دقیق و واضح بپرسید شاید بشه بهش جواب داد

2

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


لینک به پست

سلام

محتویات فایل قراره چی باشه؟ چرا xml ؟

فایل xml قراره برای ذخیره و تبادل یه سری اطلاعات بین سایت و برنامه های تحت ویندوز استفاده بشه

یه آموزش هست، نمیدونم با این چطور میشه چیزی که توی پست اول گفتم رو پیاده سازی کرد :

http://wordpress.stackexchange.com/questions/6840/make-wordpress-generate-a-custom-xml-filenot-a-sitemap-that-is-updated-only-wh

************************

احتمال میدیم با این روش بتونیم کارمونو انجام بدیم.

اما اگه جواب نده باز باید دنبال روشهای دیگه باشم

فایل xml که برالی هر پست ایجاد می شه ولی بصورت مجازی نه واقعی مثل خود پست که به صورت مجازی تولید می شه

سئوالتون رو اگه دقیق و واضح بپرسید شاید بشه بهش جواب داد

در حالت عادی فایل xml ایجاد میشه ؟

طریقه فراخوانیش چطور هست ؟

0

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


لینک به پست

اگر می خواهید از سیستم شخصی اطلاعاتی را مستقیم به سایت بدید این صفحه را بخوانید


http://codex.wordpress.org/XML-RPC_Support

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


http://codex.wordpress.org/XML-RPC_WordPress_API

و برای شخصی سازی خروجی


http://codex.wordpress.org/XML-RPC_Extending

اگر از لینکها نتیجه گرفتید که فبها وگر نه شرح دقیق و کامل کاری که می خواهید بکنید را بگذارید تا بشه راهنمایی درستی کرد

معمولا اینجور کارها را با json انجام می دن

2

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


لینک به پست

ببینید

هدف من اینه که

فرض کنید یک نرم افزار یا بازی تحت ویندوز داریم که نسخه trial هست ( که با .NET نوشته شده. توی .NET توسط xml reader میشه فایل های xml رو باز کرد و چک کرد و پردازش کرد )

برای هر پست(نرم افزار) توی فروشگاه میخوایم یک فایل xml داشته باشیم که از طریق اون نرم افزار یه ریکوئست فرستاده بشه به فایل xml و اگر نرم افزار خریداری شده بود یه شماره سریال بفرسته . در غیر این صورت هم که هیچی.

البته این متدی هست که برنامه نویس ویندوز ما پیشنهاد داده. من دقیقا نمیدونم که آیا با وردپرس چنین کاری قابل انجام هست یا خیر ؟!

0

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


لینک به پست

در چنین مواردی خودتون باید یه سیستم براش بنویسید و وردپرس توصیه نمیشه

0

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


لینک به پست

مرحله اولیه رو با همون لینکی که توی پست 4 داده بودم تونستم اجرا کنم

فعلا سوال دیگه ای نیست

با تشکر

1

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


لینک به پست

استاد فخار یه سوال دارم

ببینید یه حلقه داریم به این صورت :


for($i=0; $i<count($post_array); $i++){

$post_title = $post_array[$i]->post_title;
$post_date = $post_array[$i]->post_date;
$post_link = $post_array[$i]->guid;
$post_name = $post_array[$i]->post_name;
$post_id = $post_array[$i]->ID;
$post_permalink = "?p=" . $post_id;

$post_en = $post_array[$i]-> echo . $post_enname .
$content .= "<post>
<title>$post_title</title>
<date>$post_date</date>
<link>$post_link</link>
<enname>$post_en</enname>
</post>" . PHP_EOL;

}

میخوام خط <enname>$post_en</enname> مقدار زمینه دلخواهی مثلا با نام size رو نمایش بده

چند روش رو تست کردم. اما چون یکم کدها تو در تو هست، با خطا مواجه میشه

0

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


لینک به پست

راه حل اینو هم یافتم .

1

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


لینک به پست

دوست عزیز خیلی خوبه که خودتون به جواب سوالاتتون رسیدید ولی اگه امکانش هست مختصرا روشی که استفاده کردید رو اینجا بیان کنید تا بعدها اگر کسی همچین مشکلی داشت و به این تایپیک رسید بتونه با راهنمایی شما مشکل رو برطرف کنه.

(اینجا همه جمع شدیم تا مشکلات هم رو حل کنیم.)

موفق باشید.

5

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


لینک به پست

دوست عزیز خیلی خوبه که خودتون به جواب سوالاتتون رسیدید ولی اگه امکانش هست مختصرا روشی که استفاده کردید رو اینجا بیان کنید تا بعدها اگر کسی همچین مشکلی داشت و به این تایپیک رسید بتونه با راهنمایی شما مشکل رو برطرف کنه.

(اینجا همه جمع شدیم تا مشکلات هم رو حل کنیم.)

موفق باشید.

شرمنده من الان این پست رو دیدم

برای اینکه برای هر پست در وردپرس یک آدرس xml اختصاصی ( نمیگم فایل xml . چون بصورت فیزیکی ایجاد نشده ) داشته باشید باید مراحل زیر انجام بشه :

اینجا یه مثال می زنیم و هرکسی می تونه بنا به نیاز خودش ، تغییرات مورد نظرش رو اعمال کنه.

یک فایل درست میکنیم که عنوان ، تاریخ و لینک 4 پست آخر رو به صورت xml خروجی بده .

فایل myxml.php رو در روت وردپرستون بسازید و UTF8-withoutBOM رو براش انتخاب کنید .

کد های زیر رو داخلش قرار بدید :


<?php
require('wp-blog-header.php');

$id = (isset($_GET['p'])) ? (intval($_GET['p'])) : '0';
$content = '<?xml version="1.0" encoding="UTF-8"?>' . PHP_EOL;

$defaults = array(
'numberposts' => 5, 'offset' => 0,
'category' => 0, 'orderby' => 'post_date',
'order' => 'DESC', 'include' => '',
'exclude' => '', 'meta_key' => '',
'meta_value' =>'', 'post_type' => 'post',
'suppress_filters' => true
);

$args = array(
'numberposts' => 4
);
$post_array = query_posts("p=$id");

$content .= '<posts>' . PHP_EOL;
for($i=0; $i<count($post_array); $i++){

$post_title = $post_array[$i]->post_title;
$post_date = $post_array[$i]->post_date;
$post_link = $post_array[$i]->guid;
$post_name = $post_array[$i]->post_name;
$post_id = $post_array[$i]->ID;
$post_permalink = "?p=" . $post_id;

$content .= "<post>
<title>$post_title</title>
<date>$post_date</date>
<link>$post_link</link>
</post>" . PHP_EOL;

}
$content .= '</posts>' . PHP_EOL;
Header('Content-type: text/xml');
echo $content;
?>

در خط اول


require('wp-blog-header.php');

ما فایل wp-blog-header.php که فانکشن های مورد نیاز مارو تامین میکنه رو ضمیمه کردیم .

در این قسمت :


$content = '<?xml version="1.0" encoding="UTF-8"?>' . PHP_EOL;

ما متغیر content رو ایجاد میکنیم .

بقیه قسمت هاش هم استفاده از فانکشن های وردپرس هست .

تا اینجا مربوط میشد به اینکه یه سری اطلاعات از هر پست رو توی یه فایل xml داشته باشیم .

********************************************************************************

حالا پاسخ سوالی که اینجا مطرح کرده بودم :

استاد فخار یه سوال دارم

ببینید یه حلقه داریم به این صورت :


for($i=0; $i<count($post_array); $i++){

$post_title = $post_array[$i]->post_title;
$post_date = $post_array[$i]->post_date;
$post_link = $post_array[$i]->guid;
$post_name = $post_array[$i]->post_name;
$post_id = $post_array[$i]->ID;
$post_permalink = "?p=" . $post_id;

$post_en = $post_array[$i]-> echo . $post_enname .
$content .= "<post>
<title>$post_title</title>
<date>$post_date</date>
<link>$post_link</link>
<enname>$post_en</enname>
</post>" . PHP_EOL;

}

میخوام خط <enname>$post_en</enname> مقدار زمینه دلخواهی مثلا با نام size رو نمایش بده

چند روش رو تست کردم. اما چون یکم کدها تو در تو هست، با خطا مواجه میشه

برای انجام این کار ، حلقه ی for که توی کدهای بالا هست رو به این صورت تغییرش میدیم :


for($i=0; $i<count($post_array); $i++){

$post_title = $post_array[$i]->post_title;
$post_date = $post_array[$i]->post_date;
$post_link = $post_array[$i]->guid;
$post_name = $post_array[$i]->post_name;
$post_id = $post_array[$i]->ID;
$post_permalink = "?p=" . $post_id;
$custom_field = get_post_meta($post_id, 'size', true);
$content .= "<post>
<title>$post_title</title>
<date>$post_date</date>
<link>$post_link</link>
<custom>$custom_field</custom>
</post>" . PHP_EOL;

}

تمام .

ضمن اینکه یه تشکر ویژه باید بکنم از دوست خوبم EM4D-M ( از دوستان توی شاپکیپر ) که کمک خیلی خوبی توی این مورد بهم کرد .

2

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


لینک به پست

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

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

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

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


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

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

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


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