گزشتہ چند سالوں میں، ورڈپریس کے لئے ایک آرام API کی ترقی ڈویلپرز کے لئے نئے دروازوں کو کھول دیا ہے. ڈویلپرز جو پہلے سے ہی پی ایچ پی میں ایک ورڈپریس طاقتور منصوبے لکھنے کے لئے محدود تھے اب اب زیادہ لچکدار اور کنٹرول ہے کہ وہ ان کی ویب سائٹ کے ٹیکنالوجی اسٹیک سے کیسے رابطہ کرسکتے ہیں.
اس کا مطلب یہ ہے کہ شاندار ورڈپریس کنٹرول پینل کے تمام فوائد کو برقرار رکھنا ممکن ہے، جس میں مقبول کی طرف سے انتہائی لچکدار بنایا جاتا ہے ورڈپریس پلگ ان اس طرح اعلی درجے کی اپنی مرضی کے شعبوں کے طور پر، اور ایک مکمل طور پر اپنی مرضی کے مطابق تعمیراتی فرنٹ اینڈ ہے جو صرف اس وقت ورڈپریس کے ساتھ بات چیت کرتا ہے جب اسے ضرورت ہوتی ہے.
اس میں ورڈپریس ٹیوٹوریل ہم ایک سادہ بلاگ اے پی پی میں ورڈپریس آرام API کو کس طرح لاگو کرنے کے لئے تلاش کریں گے، جو فی الحال مقامی JSON فائل کا ڈیٹا ذریعہ کے طور پر استعمال کر رہا ہے، اور مقبول جاوا اسکرپٹ فریم ورک کا استعمال کرتے ہوئے ایک ہی صفحے کی درخواست (سپا) کے طور پر بنایا گیا ہے. vue.js. . اس میں ویو ایکس کے عمل میں شامل ہوں گے، جس میں ہم اس کے عمل اور بدعت کے طریقوں کے ایک مجموعہ کا استعمال کرتے ہوئے ایک ورڈپریس سے درخواست کرتے ہیں.
مکمل ہونے کے بعد، آپ کو ایک دباؤ، سادہ سپا پیدا کرنا چاہئے، جس میں VUE.js کی تمام ردعمل ہے، جبکہ ورڈپریس کی طرف سے حاصل کردہ خطوط کی نمائش اور ورڈپریس کی طرف سے منظم.
مزید خوفناک APIs کے لئے تلاش کرنے کے لئے، ہمارے رہنماؤں کو بہترین کرنے کے لئے ایک نظر ڈالیں جاوا اسکرپٹ API. ، ایچ ٹی ایم ایل API. اور Google Apis. .
سب سے پہلے سب سے پہلے چیزیں، آپ کو ہونا چاہئے پروجیکٹ کی فائلوں کو ڈاؤن لوڈ کریں اور انہیں اپنے پسندیدہ ایڈیٹر میں کھولیں.
کنسول میں، سی ڈی میں ویب سائٹ ٹیمپلیٹ اور اس منصوبے کے نوڈ انحصار انسٹال کرنے کے لئے ذیل میں کمانڈ چلائیں (اگر آپ کے پاس نوڈ انسٹال نہیں ہے تو، وہ سب سے پہلے ). ہم مکمل طور پر کام کر رہے ہیں SRC. یہاں سے یہاں سے ڈائرکٹری.
npm install
اگلا، ذیل میں کمانڈ کا استعمال کرتے ہوئے، ہم انسٹال کریں گے ویو ، جو VUE.js ایپلی کیشنز کے لئے ریاستی مینجمنٹ پیٹرن اور لائبریری ہے. یہ تمام ویو اجزاء کے لئے مرکزی معلومات کی دکان کے طور پر کام کرے گا جو ہم ورڈپریس API سے حاصل کردہ اعداد و شمار پر منحصر ہے. ردعمل سے واقف ڈویلپرز کے لئے، ویو ایکس بہت زیادہ بہاؤ کی طرف سے حوصلہ افزائی کی جاتی ہے.
npm install vuex --save
کنسول میں، ترقیاتی سرور شروع کرنے کے لئے ذیل میں کمانڈ چلائیں. یہ vue.js منصوبے کو مرتب کرے گا کیونکہ اس وقت اس وقت کھڑا ہوتا ہے اور اسے یو آر ایل میں تفویض کرتا ہے لہذا آپ اسے رسائی حاصل کرسکتے ہیں. یہ عام طور پر ہے مقامی ہسٹسٹ: 8080. .
ایک بڑا فائدہ یہ لاتا ہے کہ وہ زندہ رہیں گے، لہذا ایک بار جب آپ اپلی کیشن میں تبدیلی کرتے ہیں اور بچاتے ہیں تو، آپ کے براؤزر میں صفحہ خود کو دستی طور پر دوبارہ لوڈ کرنے کی ضرورت کے بغیر اپ ڈیٹ کرے گا.
npm run dev
میں SRC. ، ایک ڈائرکٹری بنائیں اسٹور اور اس کے اندر ایک نئی فائل ہے index.js. . یہ ہو گا کہ ہمارے ویو ایکس اسٹور کی وضاحت کی جائے گی. اگرچہ ہم اس سے پہلے کہ ہم سب سے پہلے اس بات کا یقین کرنے کی ضرورت ہے کہ ہمارے VUE.js ایپ اس کے وجود سے آگاہ ہے. ایسا کرنے کے لئے، کھولیں main.js. اور اسٹور درآمد کریں اور اسے ایک انحصار کے طور پر شامل کریں، جیسا کہ ذیل میں ٹکڑوں میں.
'ویو' سے درآمد ویو
'./App' سے اپلی کیشن درآمد کریں
'./router' سے روٹر درآمد کریں
'./store' سے درآمد اسٹور
vue.config.productiontip = غلط
/ * eslint غیر فعال NO-NO * /
نیو ویو ({
EL: '#App'،
راؤٹر،
اسٹور،
سانچہ: 'اور ایل ٹی؛ اے پی پی / اور جی ٹی؛
اجزاء: {اے پی پی}
})
AJAX کی درخواستوں کو آسان بنانے میں ہماری مدد کرنے کے لئے ہماری اسٹور ورڈپریس API میں بنائے جائیں گے، ہم Axios انسٹال کریں گے، جو وعدہ پر مبنی HTTP کلائنٹ ہے. ایسا کرنے کے لئے، ایک علیحدہ کنسول ونڈو کھولیں، پر جائیں ویب سائٹ ٹیمپلیٹ ڈائرکٹری اور رن این پی ایم انسٹال axios - محفوظ کریں .
اگلا، چلو ایک نئی خالی ویو ایکس اسٹور اعتراض کو فوری طور پر اسٹور کو چالو کرنے لگے. اس وقت، یہ کچھ نہیں کر رہا ہے، لیکن کم از کم ویو اس سے آگاہ ہونا چاہئے.
'axios' سے درآمد axios
'ویو' سے درآمد ویو
'ویویکس' سے VUEX درآمد کریں
vue.use (vuex)
Const Store = New Vuex.Stort ({
حالت: {}،
اعمال: {}،
متغیرات: {}
})
برآمد ڈیفالٹ سٹور
VUEX میں، ریاستی اعتراض کی درخواست کی معلومات رکھتا ہے، جس میں اس صورت میں ورڈپریس پوسٹ ڈیٹا ہو گا جسے ہم API کا استعمال کرتے ہوئے قبضہ کریں گے. اس اعتراض کے اندر، خطوط نامی ایک نئی جائیداد بنائیں اور اسے نپل کی قیمت تفویض کریں.
ریاست: {
مراسلات: نپل
}
ویوز میں، اعمال اہم طریقہ ہیں جس میں عیسی علیہ السلام کی درخواستوں کو سنبھالا جاتا ہے. یہ عام طور پر اسٹور میں بیان کردہ طریقوں ہیں، جو اس کے بعد اپلی کیشن کی ضرورت ہوتی ہے.
خالی میں اعمال اعتراض، ہم اس کی وضاحت کرتے ہیں کہ اگر ہماری پوزیشن ریاست اب بھی سست ہے تو، Axios ورڈپریس API پر AJAX کی درخواست انجام دینے اور خطوط کی ایک فہرست واپس کرنے کے لئے استعمال کیا جاتا ہے. ایک بار جب ہم نے مثبت جواب موصول ہو چکا ہے، تو پھر ہم وعدہ حل کریں گے اور اس کا استعمال کرتے ہوئے خطوط انجام دیں گے SUPSTSOSTS اختلاط
GetPosts: فنکشن (سیاحت) {
نیا وعدہ واپس لو ((حل، ردعمل) = & gt؛ {
اگر (context.state.posts) {
حل ()
}
اور {
axios.get ('http://lukeharrison.net/
Webdesigner / WP-JSON / WP / V2 / خطوط ')
.یہ ((جواب) = & gt؛ {
Context.commit ('SORSTPOSTS'،
جواب دیں .data)
حل ()
}) پکڑو ((غلطی) = & gt؛ {
ردعمل (غلطی)؛
})؛
}
})
}
ویو ایکس کی طرف سے متعارف کرایا ایک اور تصور متغیرات ہے، جو عام طور پر اسٹور میں بیان کردہ طریقوں ہیں. ایک ویو ایکس اسٹور میں ریاست کو تبدیل کرنے کا ایک واحد طریقہ ہے، جس میں ڈیبگنگ جب ریاست آسانی سے ٹریک کرنے کی اجازت دیتا ہے.
خالی میں mutations. اعتراض، چلو کی وضاحت کرتے ہیں SUPSTSOSTS ہم پچھلے مرحلے میں حوالہ دیتے ہیں اور یہ کسی بھی ڈیٹا کے ساتھ ریاستی آبجیکٹ میں پوسٹ کی جائیداد کو اوورائڈ کرتے ہیں جس میں تبدیلی موصول ہوتی ہے.
اسٹورپوسٹ (ریاست، جواب) {
State.posts = جواب}
ہم نے اس عمل اور بدعت کے طریقوں کو تخلیق کیا ہے جو ورڈپریس API سے خطوط قبضہ کر لیتے ہیں اور انہیں ویو ایکس ریاست پر قابو پاتے ہیں، لیکن اب ہمیں اصل میں اس عمل کو کہیں بھی ٹرگر کرنے کی ضرورت ہے. سب سے اوپر سطح vue.js اجزاء میں App.vue. ذیل میں ٹکڑا شامل کریں.
پیدا کیا () ایک لائف سائیکل سائیکل ہک ہے جو کوڈ کو چلاتا ہے جیسے ہی ویو جزو بوجھ پر پیدا ہوتا ہے، جبکہ عالمی کے استعمال کے دوران $ سٹور متغیر ہمیں اپنے VUEX اسٹور کے مواد تک رسائی حاصل کرنے اور بھیجنے کی اجازت دیتا ہے GetPosts. مرحلہ 7 سے ایکشن.
پیدا ہوا () {
یہ. $ Store.Dispatch ('GetPosts')}
اگر آپ کروم یا فائر فاکس میں کام کر رہے ہیں اور ہیں vue.js devtools توسیع (اگر نہیں، تو میں سفارش کرتا ہوں کہ آپ ایسا کرتے ہیں جیسے یہ بہت مفید ہے)، اب آپ کو اب لوڈ کردہ ورڈپریس خطوط کو دیکھنے کے قابل ہونا چاہئے بیس ریاست کے نیچے ویو ٹیب.
اپلی کیشن پر واپس /components/posts/posts.vue. ، ٹیمپلیٹ ایچ ٹی ایم ایل کو اس اعداد و شمار کی نشاندہی کرنے کی ضرورت ہے، لہذا چلو میں سے کچھ خاصیت کے راستے کو چالو کریں.
'پوسٹ. title' کو 'پوسٹ. title.rendeed'
'POST.PREVIEW' 'POST.ACF.PREVIEW' کو سوئچ کریں
'POST.PREVIEWIMAGE' 'POST.ACF.HEADER_IMAGE_SMALL' کو سوئچ کریں
خطوط اجزاء میں، استعمال میں ایک vue.js ہدایت ہے وی کے لئے . یہ تمام خطوط کے ذریعے اور ہر ایک کے لئے پوسٹ اجزاء کی ایک مثال پرنٹ کرتا ہے، ان کی فہرست میں ان کی نمائش کرتا ہے.
ہمیں اس ہدایت پر منظور شدہ راستے کو اپ ڈیٹ کرنے کی ضرورت ہے کیونکہ یہ ابھی تک مقامی ڈمی ٹیسٹ کے اعداد و شمار کا استعمال کر رہا ہے. VUEX اسٹور میں ہمارے ذخیرہ کردہ خطوط کی نشاندہی کرنے کے لئے ذیل میں اسکرین کے لئے V- ہدایت کو اپ ڈیٹ کریں.
v-for = "اس میں پوسٹ کریں. $ store.state.posts"
ورڈپریس خطوط کی ایک فہرست اب ظاہر کرنا چاہئے. جیسا کہ ہم اب مقامی پوسٹ کے اعداد و شمار کا استعمال نہیں کرتے ہیں، چلو چلے جاتے ہیں SRC / ڈیٹا . پھر خطوط اجزاء میں، ہٹا دیں مراسلات: پوسٹڈیٹا .data. اجزاء میں جائیداد مقامی ڈیٹا اسٹور اور پھر پوسٹڈاٹا درآمد.
آپ یہ محسوس کر سکتے ہیں کہ ہر پوسٹ کے لئے مصنف ایک نمبر کے طور پر ظاہر ہوتا ہے. یہ اس وجہ سے ہے کہ ورڈپریس API ایک نام کے بجائے ایک مصنف کی شناخت کی واپسی کرتا ہے. ہمیں اس ID کو مکمل مصنف کی معلومات کے لئے ورڈپریس سے متعلق سوالات کے بارے میں استعمال کرنے کی ضرورت ہے. ہمارے ویو ایکس اسٹور میں اس کی دکان میں ذخیرہ کرنے کے لئے ایک جگہ بنانا شروع کرو، ہماری پوسٹ کی معلومات کے ساتھ اسٹور / index.js. .
ریاست: {
مصنفین: نپل،
مراسلات: نپل}
جیسا کہ خطوط کے ساتھ، ہم ایک کارروائی کریں گے /store/index.js. ورڈپریس API سے متعلق سوال کرنے کے لئے AJAX کی درخواست کو ٹرگر کرنے کے لئے. ایک بار کامیاب جواب موصول ہونے کے بعد، وعدہ پھر حل اور ٹرگر کرے گا معتبر بدمعاش، جسے ہم اگلے تخلیق کریں گے.
Gettauthors: فنکشن (سیاحت) {
axios.get ('http://lukeharrison.net/
Webdesigner / WP-JSON / WP / V2 / صارفین ')
.یہ (فنکشن (جواب) {
context.commit ('storeautors'،
جواب دیں .data)
})
}
VUEX اسٹور کے متغیرات کے اندر اندر، تخلیق کریں معتبر ذیل میں ٹکڑوں کا استعمال کرتے ہوئے تبدیلی. اس طرح کی طرح SUPSTSOSTS مرحلہ 8 سے، یہ پے لوڈ اس کے پاس گزرتا ہے اور ہمارے اسٹور کی ریاست میں مصنفین کی جائیداد کی قیمت کے طور پر مقرر کرتا ہے.
معروف (ریاست، جواب) {
State.aututhors = جواب}
ہمیں ورڈپریس سے مصنف کی معلومات حاصل کرنے کی ضرورت ہے جیسے ہی اے پی پی لوڈ کرنا شروع ہوتا ہے. چلو اعلی سطح کے اجزاء میں ترمیم کریں App.vue. پھر اور ڈسپلے Getauthors. اسی میں کارروائی پیدا کیا () زندگی کے طور پر لائف سائیکل ہک GetPosts. عمل.
پیدا ہوا () {
یہ. $ Store.Dispatch ('بدھ')
یہ. $ Store.Dispatch ('GetPosts')}
اب ہم ورڈپریس کے بارے میں معلومات کے بارے میں معلومات کے بارے میں معلومات کے بارے میں معلومات حاصل کر رہے ہیں، ہم سب کو کرنے کی ضرورت ہے کہ ہم اپنے پیغامات کے اجزاء میں ایک طریقہ کی وضاحت کرتے ہیں جو ہمیں ایک مصنف کی شناخت کو منتقل کرنے اور واپسی میں ایک نام حاصل کرنے کی اجازت دیتا ہے. موجودہ ذیل میں خطوط اجزاء کے طریقوں میں مندرجہ بالا نمونے کاپی کریں GetSinglepost. طریقہ.
GetUsername: فنکشن (UserID) {
وار صارف نام = 'نامعلوم'؛
یہ. $ store.state.
مصنفین. فلٹر (فنکشن (صارف) {
اگر (user.id === UserID) {
صارف نام = صارف. نام
}
})؛
صارف کا نام واپس لو
}
اب ہمیں صرف فون کرنے کی ضرورت ہے GetSername. . پھر بھی خطوط اجزاء میں، ٹیمپلیٹ میں، مصنف کی خاصیت کے حوالہ کو تبدیل کریں پوسٹ لہذا یہ ذیل میں ٹکڑا کی عکاسی کرتا ہے. مصنف کا نام اب ہر اشاعت کے لئے صحیح طریقے سے ظاہر کرنا چاہئے.
: مصنف = "getusername (post.author)"
جیسا کہ ہم پوسٹ کے اعداد و شمار کو غیر معمولی طور پر لوڈ کررہے ہیں، درخواست مکمل کرنے سے قبل ایک لمحہ ہے جہاں درخواست خالی ہے. اس کا مقابلہ کرنے کے لئے، ہم ایک لوڈنگ ریاست کو لاگو کریں گے جب تک کہ بلاگ مکمل طور پر آباد نہ ہو. خطوط اجزاء میں، افتتاحی کے بعد صرف اس کے نیچے کا ٹکڑا پیسٹ کریں & lt؛ سکرپٹ اور جی ٹی؛ شبیہیں درآمد کرنے کے لئے ٹیگ ہم استعمال کریں گے.
'@ / اجزاء / شبیہیں / شبیہیں' سے درآمد آئکن
'./.. /../ سے لوڈنگ درآمد
اثاثوں / img / loading.svg '
اگلا، اب بھی خطوط کے اندر، اجزاء اشیاء میں آئکن کا حوالہ شامل کریں. اس سے ہمارے حال ہی میں درآمد شدہ آئکن جزو کے خطوط کے اجزاء کو آگاہ کرتا ہے.
اجزاء: {
آئکن،
پوسٹ}
اب ہم صرف خطوط ٹیمپلیٹ میں لوڈنگ عناصر کو شامل کرنے کی ضرورت ہے لہذا یہ صفحہ پر ظاہر ہوتا ہے. سب سے پہلے، دو ڈوی کے ارد گرد اس کے ساتھ دوسرے ڈیوپیٹ میں لپیٹ کریں V-if. اس بات کا یقین کرنے کے لئے ہدایات کو یقینی بنانے کے لئے کوئی اشاعت نہیں دکھائے جائیں جب تک لوڈنگ مکمل ہوجائے.
اس کے بعد اس کے اوپر اسپیپیٹ سے پہلے ڈیو شامل کریں. اس میں لوڈنگ آئکن اور اے پر مشتمل ہے V-if. ہدایت، جس کا مطلب یہ ہے کہ یہ صرف اس وقت تک نظر آتا ہے جہاں اپلی کیشن مکمل طور پر بھری ہوئی ہے. ایک بار پھر، لوڈ کر رہا ہے اب لاگو کیا جانا چاہئے.
& lt؛ div v-if = "! یہ. $ store.state.posts"
کلاس = "یو-سیدھ سینٹر" اور جی ٹی؛
& lt؛ آئکن کلاس = "سی آئکن لوڈنگ"
استعمال = "لوڈنگ" اور GT؛ & lt؛ / icon & gt؛
& lt؛ / div & gt؛
& lt؛ div v-if = "یہ. $ store.state.posts" & gt؛
[...]
& lt؛ / div & gt؛
ایسا کرنے کے لئے چھوڑ دیا صرف ایک چیز یہ یقینی بنانا ہے کہ واحد خطوط صحیح طریقے سے قائم کیے جائیں تاکہ وہ ویو ایکس اسٹور میں ورڈپریس پوسٹ ڈیٹا کا استعمال کررہے ہیں. پہلے قدم کے اندر اندر خطوط اجزاء ٹیمپلیٹ میں خاصیت کے راستے کو اپ ڈیٹ کرنا ہے v-if = "it.type === 'سنگل' ڈیو، جو واحد خطوط کے ڈسپلے کو ہینڈل کرتا ہے.
'singlepost.title' singlepost.title.rendeed 'کو سوئچ کریں.
'singlepost.author' کو 'getusername (singlepost.author)' سوئچ کریں.
'singlepost.fullimage' کو 'singlepost.acf.header_image' سوئچ کریں
singlepost کے لئے 'singlepost.conent' سوئچ کریں. مواد. کریڈٹ '
ہمیں خطوط اجزاء کو بھی رد کرنے کی ضرورت ہے GetSinglepost. طریقہ. یہ ایک وعدہ واپس کرنے کی ضرورت ہے جو ڈسپلے کرتا ہے GetPosts. عمل. پیروی میں پھر فنکشن، ہم یو آر ایل میں منظور ہونے والے ایک سلگ کے ساتھ ایک اندراج کے ساتھ ایک اندراج کے لئے Vuex اسٹور کے خطوط تلاش کریں گے. اگر مل گیا تو، ہم ڈیٹا کو اپنے اجزاء کے مقامی ریاست میں کاپی کریں گے اور وعدہ کو حل کریں گے. اگر یہ نہیں ملا، تو وعدہ رد کر دیا جائے گا.
GetSinglepost: فنکشن () {
نیا وعدہ واپس لو
((حل، مسترد) = & gt؛ {
یہ. $ store.dispatch ('getposts')
.یہ (() = & gt؛ {
var foundpost = غلط؛
یہ. $ store.state.posts.
فلٹر ((پوسٹ) = & gt؛ {
اگر (post.slug ===.
یہ. $ ROUTE.PARAMS.SLUG) {
یہ. linglepost = پوسٹ؛
Foundpost = سچ؛ }
})؛
فاؤنڈیشن؟ حل (): مسترد ()؛
})
})
}
اگلا، ہمیں ریفریجریشن کی ضرورت ہے پیدا کیا () خطوط اجزاء میں لائف سائیکل ہک. اگر ہمیں ایک ہی پوسٹ ظاہر کرنے کی ضرورت ہے، تو ہک کو فون کرنا چاہئے GetSinglepost. پچھلے مرحلے سے طریقہ، اور اگر اس کا وعدہ مسترد ہوجاتا ہے، صارف کو 404 'صفحہ نہیں ملا' کے صفحے پر بھیجیں. یہ منظر نامے کے لئے اکاؤنٹ ہے جہاں صارفین URL میں غیر موجود پوسٹ سلگ درج کرتے ہیں.
پیدا ہوا () {
اگر (یہ type === 'سنگل') {
یہ.getsinglepost (). پھر (نول، () = & gt؛ {
یہ. $ روٹر. push ({نام: 'pagenotfound'}
})؛
}
}
حتمی مرحلہ اس کے اندر اندر پوسٹ اجزاء میں مندرجہ ذیل نمونہ شامل کرنا ہے v-if = "it.type === 'سنگل' ٹیمپلیٹ میں ڈیو. یہ ہدایت کا مطلب یہ ہے کہ پوسٹ صرف اس وقت ظاہر کرے گا جب مقامی پوسٹ ڈیٹا دستیاب ہے GetSinglepost. طریقہ آباد ہے. یہ ویو سے پہلے سے ہی جزو انجام دینے سے روکنے اور اس طرح کی غلطیوں کی وجہ سے ہے.
v-if = "singlepost"
اب ہر چیز کے ساتھ کام کرنے والے، کنسول میں، منسوخ کریں این پی ایم رن ڈرائیو کمانڈ یا ایک نیا کنسول کھولیں اور اپنے سرور پر اپ لوڈ کرنے کے لئے پیداوار کے لئے تیار ورژن پیدا کرنے کے لئے مندرجہ ذیل کمانڈ چلائیں. یہ میں ظاہر ہوگا ڈم ڈائرکٹری.
این پی ایم رن تعمیر
یہ مضمون 268 ویب ڈیزائنر، تخلیقی ویب ڈیزائن میگزین - ماہر ٹیوٹوریلز، جدید ترین رجحانات اور مفت وسائل کی پیشکش میں شائع ہوا. ویب ڈیزائنر اب سبسکرائب کریں.
مزید پڑھ:
کچھ سال پہلے، لوکڈ کھیلوں کے آرٹ ڈائریکٹر نے مجھ سے پوچھا کہ ان میں سے 4x4..
تم جانتے ہو لوگوں کو کس طرح ڈراؤ ، لیکن ڈیجیٹل پورٹریٹ کی تخلیق ..
آپ کے لینڈنگ کا صفحہ آپ میں ایک اہم عنصر ہے ویب سائٹ کی ترتیب . ی�..
اینٹی وارڈ آپ کے مخصوص سوالات کا جواب دینے والے ہمارے فنکاروں میں سے ..
مواد مارجولین ایک درمیانے درجے کے طور پر لیسڈ تیل کا استعم�..
The. Vecteezy ایڈیٹر کیا آپ کے براؤزر میں صحیح ویکٹر ترمیم سوٹ ہے. یہ �..
اس کی بات سے پہلے لندن پیدا 21 ستمبر کو ہم نے پکڑ لیا پیٹرک ح�..
اس سبق میں، میں آپ کو دکھاتا ہوں کہ کس طرح صوفیانہ رنوں کو چمکتا ہے جو چم..