SHET32

وصل کردن وردپرس به اپ اندروید با REST API

وصل کردن وردپرس به اپ اندروید با REST API

برای وصل کردن وردپرس به اپ اندروید لازم نیست افزونه‌ای برای ساخت API نصب کنید. وردپرس یک REST API داخلی داره که اطلاعات سایت رو با قالب JSON در اختیار اپ می‌ذاره. توی این آموزش از بررسی فعال بودن API شروع می‌کنیم، نوشته‌ها و تصویر شاخص رو می‌گیریم و بعد سراغ جستجو، صفحه‌بندی و عملیات وروددار می‌ریم.

مثال‌ها برای یک اپ اندرویدی نوشته شدن، ولی منطق اصلی توی هر ابزار ساخت اپ یکسانه: اپ یک درخواست HTTPS می‌فرسته، وردپرس پاسخ JSON برمی‌گردونه و اپ اطلاعات لازم رو نمایش می‌ده. برای آشنایی با یک روش دیگه هم می‌تونید آموزش ساخت اپلیکیشن موبایل و مدیریت اون با وردپرس رو ببینید.

آنچه در این مقاله می‌خوانید

برای وصل کردن وردپرس به اپ اندروید به چی نیاز دارید؟

REST API وردپرس چیه و چه کاری انجام می‌ده؟

REST API وردپرس یک راه استاندارد برای ارتباط برنامه‌های بیرونی با وردپرسه. API یعنی رابطی که اپ از راه اون با سایت حرف می‌زنه. JSON هم قالب متنی ساده‌ایه که اطلاعاتی مثل عنوان، متن، شناسه و تاریخ نوشته رو مرتب نگه می‌داره.

مثلاً وقتی اپ نشانی https://example.com/wp-json/wp/v2/posts رو درخواست می‌کنه، وردپرس فهرست نوشته‌های قابل‌نمایش رو برمی‌گردونه. به‌جای example.com باید دامنه سایت خودتون رو بذارید.

پیش‌نیازهای سایت وردپرسی و اپ اندروید

  • یک سایت وردپرسی در دسترس که گواهی HTTPS معتبر داشته باشه
  • دسترسی مدیریتی به وردپرس برای تنظیم عملیات وروددار
  • یک پروژه اندروید و آشنایی مقدماتی با Kotlin
  • دسترسی اپ به اینترنت و یک کتابخانه برای ارسال درخواست شبکه
  • یک دستگاه یا شبیه‌ساز برای آزمایش پاسخ‌ها و خطاها

تفاوت دریافت اطلاعات عمومی با تغییر محتوای سایت

نوشته‌ها، برگه‌ها و دسته‌های عمومی معمولاً بدون ورود قابل‌دریافت هستن. ولی ساخت، ویرایش یا حذف نوشته به احراز هویت نیاز داره. احراز هویت یعنی وردپرس هویت کاربر و اجازه انجام کار رو بررسی می‌کنه. پس برای یک اپ فقط‌خواندنی اصلاً نباید اطلاعات ورود کاربر مدیر رو داخل اپ بذارید.

چطور مطمئن بشید REST API سایتتون فعاله؟

آزمایش نشانی اصلی REST API در مرورگر

مرورگر رو باز کنید و نشانی زیر رو با دامنه خودتون وارد کنید:

https://example.com/wp-json/

اگه یک متن JSON شامل نام سایت و مسیرهای API دیدید، مسیر اصلی در دسترسه. ظاهر این پاسخ مهم نیست؛ اپ بعداً داده‌های موردنیازش رو از همین ساختار جدا می‌کنه.

نمونه پاسخ JSON مسیر اصلی REST API وردپرس در مرورگر
نمونه پاسخ JSON مسیر اصلی REST API وردپرس در مرورگر

آشنایی ساده با Endpoint یا نشانی دریافت اطلاعات

Endpoint یعنی نشانی مشخصی که یک کار مشخص انجام می‌ده. برای نمونه، مسیر نوشته‌ها /wp-json/wp/v2/posts هست و مسیر برگه‌ها /wp-json/wp/v2/pages هست. بخش wp/v2 فضای نام و نسخه API رو مشخص می‌کنه.

رفع خطاهای رایج مثل ۴۰۴ و دسترسی مسدودشده

خطای ۴۰۴ معمولاً به نشانی اشتباه، تنظیمات پیوند یکتا یا قانون‌های بازنویسی سرور مربوطه. اول از پیشخوان وردپرس وارد «تنظیمات ← پیوندهای یکتا» بشید و بدون تغییر، تنظیمات رو ذخیره کنید. اگه مشکل باقی موند، فایل .htaccess و تنظیمات وب‌سرور رو بررسی کنید. آموزش ساخت فایل htaccess پیش‌فرض وردپرس هم برای این مرحله کمکتون می‌کنه.

صفحه پیوندهای یکتا در پیشخوان فارسی وردپرس برای ذخیره دوباره تنظیمات
صفحه پیوندهای یکتا در پیشخوان فارسی وردپرس برای ذخیره دوباره تنظیمات

اگه خطای ۴۰۳ دیدید، افزونه امنیتی، فایروال هاست یا سرویس محافظ سایت ممکنه درخواست رو بسته باشه. مسیر API رو موقتاً با افزونه‌های امنیتی غیرفعال آزمایش نکنید مگر اینکه محیط آزمایشی امن داشته باشید؛ بهتره گزارش فایروال رو ببینید و فقط قانون مشکل‌ساز رو اصلاح کنید.

دریافت نوشته‌های وردپرس در اپ اندروید

آزمایش مسیر نوشته‌ها در مرورگر

این نشانی رو اول در مرورگر امتحان کنید:

https://example.com/wp-json/wp/v2/posts?per_page=10

پارامتر per_page تعداد نتیجه‌های هر درخواست رو مشخص می‌کنه. هر نوشته فیلدهایی مثل id، link، title.rendered، excerpt.rendered و content.rendered داره.

ساخت پروژه اندروید و اضافه کردن دسترسی اینترنت

در فایل AndroidManifest.xml و قبل از تگ application، مجوز اینترنت رو اضافه کنید:

<uses-permission android:name="android.permission.INTERNET" />

این مجوز پیام تأیید جداگانه‌ای به کاربر نشون نمی‌ده، ولی بدون اون اپ نمی‌تونه به سایت وصل بشه. برای سایت واقعی فقط از نشانی HTTPS استفاده کنید.

اضافه کردن Retrofit و مبدل JSON

در فایل وابستگی‌های ماژول اپ، کتابخانه‌های Retrofit و converter-gson رو اضافه کنید. Retrofit درخواست شبکه رو می‌فرسته و مبدل Gson پاسخ JSON رو به مدل‌های Kotlin تبدیل می‌کنه. شماره نسخه رو از صفحه رسمی نسخه‌های Retrofit بردارید و نسخه‌ای رو انتخاب کنید که با پروژه‌تون سازگاره:

dependencies {
    implementation("com.squareup.retrofit2:retrofit:VERSION")
    implementation("com.squareup.retrofit2:converter-gson:VERSION")
}

عبارت VERSION یک جایگزینه و نباید همون‌طور داخل پروژه بمونه. قبل از اجرای نمونه، اون رو با شماره نسخه پایدار و سازگار با پروژه‌تون عوض کنید. نسخه دقیق کتابخانه‌ها و نسخه اندرویدی که آزمایش کردید رو هم قبل از انتشار نهایی آموزش ثبت کنید.

ساخت مدل داده و رابط REST API

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

import com.google.gson.annotations.SerializedName
import retrofit2.http.GET
import retrofit2.http.Query

data class RenderedText(
    val rendered: String = ""
)

data class MediaDetails(
    @SerializedName("source_url")
    val sourceUrl: String? = null
)

data class EmbeddedData(
    @SerializedName("wp:featuredmedia")
    val featuredMedia: List<MediaDetails>? = null
)

data class Post(
    val id: Int,
    val link: String = "",
    val title: RenderedText = RenderedText(),
    val excerpt: RenderedText = RenderedText(),
    val content: RenderedText = RenderedText(),
    @SerializedName("_embedded")
    val embedded: EmbeddedData? = null
)

interface WordPressApi {
    @GET("wp-json/wp/v2/posts")
    suspend fun getPosts(
        @Query("page") page: Int = 1,
        @Query("per_page") perPage: Int = 10,
        @Query("_embed") embed: Boolean = true
    ): List<Post>
}

علامت سؤال بعد از نوع متغیر، مثل String?، یعنی مقدار اون ممکنه خالی باشه. این حالت که بهش nullable می‌گن، جلوی بسته شدن اپ رو وقتی یک نوشته تصویر یا مقدار موردنظر رو نداره می‌گیره.

ساخت نمونه Retrofit و ارسال درخواست

حالا یک نمونه Retrofit بسازید. نشانی پایه باید به اسلش ختم بشه و به‌جای example.com دامنه خودتون رو بذارید:

import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory

object ApiClient {
    private const val BASE_URL = "https://example.com/"

    val api: WordPressApi by lazy {
        Retrofit.Builder()
            .baseUrl(BASE_URL)
            .addConverterFactory(GsonConverterFactory.create())
            .build()
            .create(WordPressApi::class.java)
    }
}

درخواست شبکه نباید روی رشته اصلی رابط کاربری اجرا بشه. رشته اصلی همون بخشی از اپه که لمس دکمه‌ها و نمایش صفحه رو مدیریت می‌کنه. اگه کار شبکه اونجا انجام بشه، صفحه ممکنه گیر کنه. برای همین می‌تونید درخواست رو داخل ViewModel و با Coroutine اجرا کنید. Coroutine رو ساده بخوایم بگیم، راهیه برای انجام کار زمان‌بر بدون قفل کردن صفحه:

import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.launch

sealed interface PostsState {
    data object Loading : PostsState
    data class Success(val posts: List<Post>) : PostsState
    data class Error(val message: String) : PostsState
}

class PostsViewModel : ViewModel() {
    private val _state = MutableStateFlow<PostsState>(PostsState.Loading)
    val state: StateFlow<PostsState> = _state

    fun loadPosts() {
        viewModelScope.launch {
            _state.value = PostsState.Loading

            try {
                val posts = ApiClient.api.getPosts()
                _state.value = PostsState.Success(posts)
            } catch (error: Exception) {
                _state.value = PostsState.Error(
                    error.message ?: "دریافت نوشته‌ها انجام نشد."
                )
            }
        }
    }
}

وابستگی‌های ViewModel، Coroutine و روش نمایش وضعیت به ساختار پروژه اندرویدتون بستگی دارن. بعد از ساخت صفحه، تابع loadPosts() رو یک بار اجرا کنید و مقدار state رو در رابط کاربری بخونید. برای حالت Loading نشانه بارگذاری، برای Success فهرست نوشته‌ها و برای Error یک پیام قابل‌فهم نشون بدید.

تبدیل پاسخ JSON به اطلاعات قابل‌نمایش

مبدل JSON پاسخ رو به مدل‌های Kotlin تبدیل می‌کنه. اسم فیلدهای مدل باید با پاسخ API هماهنگ باشه. اگه نام داخل JSON با نام متغیر Kotlin فرق داره، می‌تونید با SerializedName ارتباط بین اون‌ها رو مشخص کنید. بهتره فیلدهایی که ممکنه توی پاسخ نباشن، مقدار پیش‌فرض یا حالت خالی‌پذیر داشته باشن تا اپ با یک پاسخ متفاوت بسته نشه.

نمایش عنوان، خلاصه و متن نوشته‌ها

مقدارهای title.rendered و excerpt.rendered ممکنه تگ HTML داشته باشن. اگه فقط متن ساده می‌خواید، در رابط کاربری قدیمی اندروید می‌تونید از Html.fromHtml استفاده کنید. در رابط‌های مبتنی بر Jetpack Compose هم بهتره HTML رو اول با یک تبدیل‌کننده قابل‌اعتماد به متن یا ساختار قابل‌نمایش تبدیل کنید.

برای نمایش متن کامل داخل WebView، JavaScript رو فقط وقتی واقعاً لازمه فعال کنید، رفتن به دامنه‌های ناشناس رو کنترل کنید و محتوای دریافت‌شده از منبع نامطمئن رو مستقیم اجرا نکنید. اگه نوشته فقط متن، تیتر و تصویر ساده داره، تبدیل اون به اجزای بومی اپ معمولاً کنترل بیشتری بهتون می‌ده.

دریافت تصویر شاخص نوشته‌ها

اضافه کردن اطلاعات تصویر به پاسخ REST API

ساده‌ترین راه برای یک نمونه اولیه، اضافه کردن پارامتر _embed به درخواست نوشته‌هاست:

https://example.com/wp-json/wp/v2/posts?_embed&per_page=10

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

پیدا کردن نشانی تصویر شاخص

شناسه تصویر در فیلد featured_media قرار می‌گیره. در مدل نمونه، نشانی تصویر جاسازی‌شده از مسیر _embedded → wp:featuredmedia → source_url خونده می‌شه. برای گرفتن اولین نشانی تصویر می‌تونید این کد رو استفاده کنید:

val imageUrl = post.embedded
    ?.featuredMedia
    ?.firstOrNull()
    ?.sourceUrl

بعضی نوشته‌ها تصویر شاخص ندارن و گاهی هم اطلاعات رسانه به‌خاطر سطح دسترسی یا شکل پاسخ داخل _embedded نمیاد. پس اگه imageUrl خالی بود، یک تصویر جایگزین محلی داخل اپ نشون بدید.

نمایش تصویر داخل اپ

نشانی تصویر رو با یک کتابخانه بارگذاری تصویر نمایش بدید تا دانلود، کش و آزاد کردن حافظه درست مدیریت بشه. کش یعنی اپ یک نسخه موقت از تصویر رو نگه می‌داره تا مجبور نباشه هر بار اون رو دوباره دانلود کنه. اندازه متناسب با کارت نوشته رو انتخاب کنید؛ دریافت فایل اصلی و خیلی بزرگ، مصرف اینترنت و حافظه کاربر رو بی‌دلیل بالا می‌بره.

دریافت یک نوشته، برگه، دسته و جستجو

  • یک نوشته: شناسه رو آخر مسیر بذارید؛ مثل /wp-json/wp/v2/posts/123.
  • برگه‌ها: از مسیر /wp-json/wp/v2/pages استفاده کنید.
  • دسته‌بندی‌ها: مسیر /wp-json/wp/v2/categories فهرست دسته‌ها رو می‌ده. برای محدود کردن نوشته‌ها به یک دسته، شناسه اون رو با پارامتر categories بفرستید.
  • جستجو: عبارت کاربر رو با پارامتر search بفرستید؛ مثل ?search=وردپرس. مقدار جستجو باید URL Encode بشه؛ یعنی فاصله‌ها و نویسه‌های فارسی به شکل قابل‌ارسال داخل نشانی تبدیل بشن. Retrofit وقتی مقدار رو با @Query می‌فرستید، این تبدیل رو براتون انجام می‌ده.
  • صفحه‌بندی: با page و per_page نتیجه‌ها رو بخش‌بندی کنید. تعداد کل نتیجه‌ها و صفحه‌ها هم در هدرهای X-WP-Total و X-WP-TotalPages برمی‌گرده. هدر اطلاعات جانبی پاسخ HTTP هست و جدا از بدنه JSON فرستاده می‌شه.

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

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

چه زمانی احراز هویت لازمه؟

برای دیدن محتوای عمومی معمولاً احراز هویت لازم نیست. ولی پیش‌نویس‌ها، نوشته‌های خصوصی، ساخت محتوا، ویرایش، حذف و مسیرهای مدیریتی به کاربر واردشده با مجوز مناسب نیاز دارن.

ساخت رمز عبور برنامه در وردپرس

رمز عبور برنامه وردپرس یک رمز جدا برای اتصال نرم‌افزار بیرونیه. وارد پیشخوان بشید، از «کاربران» شناسنامه کاربر موردنظر رو باز کنید و بخش «رمزهای عبور برنامه» رو پیدا کنید. یک نام قابل‌شناسایی مثل «اپ اندروید آزمایشی» بنویسید، رمز رو بسازید و همون لحظه در جای امن نگه دارید.

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

اگه این بخش رو نمی‌بینید، اول HTTPS، نقش کاربری و تنظیمات افزونه‌های امنیتی رو بررسی کنید. برای هر اپ یا دستگاه بهتره رمز جدا بسازید تا بتونید دسترسی همون اتصال رو مستقل لغو کنید. دیده شدن این بخش و عبور درست هدر ورود ممکنه به تنظیمات نسخه وردپرس، وب‌سرور و افزونه‌های امنیتی هم وابسته باشه؛ پس اون رو روی هاست واقعی آزمایش کنید.

ارسال درخواست امن با HTTPS

رمز عبور برنامه معمولاً با Basic Authentication روی HTTPS فرستاده می‌شه. در این روش، نام کاربری و رمز برنامه داخل هدر Authorization قرار می‌گیرن. HTTPS ارتباط بین اپ و سرور رو رمزنگاری می‌کنه. درخواست وروددار رو هرگز با HTTP نفرستید، چون اطلاعات ورود می‌تونه در مسیر افشا بشه.

چرا نباید رمز اصلی وردپرس رو داخل اپ ذخیره کنید؟

فایل نصب اپ قابل‌بررسیه و یک رمز ثابت داخل کد می‌تونه استخراج بشه. رمز اصلی مدیر دسترسی خیلی گسترده‌ای داره و تغییر اون روی ورودهای دیگه هم اثر می‌ذاره. برای یک اپ عمومی، قرار دادن رمز عبور برنامه داخل خود اپ هم امن نیست.

اگه اپ فقط برای خودتون یا اعضای محدود تیمه، اطلاعات ورود رو با امکانات امن سیستم‌عامل نگه دارید و امکان لغو رمز برنامه رو داشته باشید. اگه قراره کاربران زیادی اپ رو نصب کنن، طراحی ورود به نوع کاربران و اطلاعات پروژه بستگی داره. معمولاً یک سرور واسط یا سامانه ورود اختصاصی درخواست‌ها رو بررسی می‌کنه و به‌جای رمز ثابت، دسترسی محدود و قابل‌لغو می‌ده. این معماری باید جداگانه طراحی و آزمایش امنیتی بشه؛ پس یک نمونه عمومی رو بدون بررسی متخصص، مستقیم وارد اپ واقعی نکنید.

ساخت، ویرایش و حذف نوشته از داخل اپ

بررسی نقش کاربری و سطح دسترسی

وردپرس قبل از هر تغییر، سطح دسترسی کاربر رو بررسی می‌کنه. یک کاربر با کمترین دسترسی لازم بسازید و از حساب مدیر کل برای اپ استفاده نکنید. مثلاً کاربری که فقط باید نوشته خودش رو ثبت کنه، نباید اجازه نصب افزونه یا مدیریت کاربران رو داشته باشه.

ساخت یک نوشته آزمایشی

برای ساخت نوشته، یک درخواست POST به مسیر نوشته‌ها بفرستید. بدنه JSON می‌تونه شبیه نمونه زیر باشه:

{
  "title": "نوشته آزمایشی از اپ",
  "content": "متن نوشته آزمایشی",
  "status": "draft"
}

در شروع، وضعیت رو draft یعنی پیش‌نویس بذارید تا محتوا مستقیم منتشر نشه. بعد از موفقیت، وردپرس کد وضعیت و اطلاعات نوشته ساخته‌شده رو برمی‌گردونه. قبل از استفاده واقعی، این درخواست رو با یک حساب محدود و روی محیط آزمایشی امتحان کنید.

ویرایش یا حذف نوشته با REST API

برای ویرایش، درخواست POST رو به مسیر نوشته همراه شناسه بفرستید؛ مثل /wp-json/wp/v2/posts/123. فقط فیلدهایی رو بفرستید که می‌خواید تغییر کنن. برای حذف هم درخواست DELETE به همین مسیر می‌ره. رفتار انتقال به زباله‌دان یا حذف کامل به پارامتر درخواست و مجوز کاربر بستگی داره، پس حذف کامل رو پشت یک تأیید واضح قرار بدید و نتیجه اون رو روی محیط آزمایشی بررسی کنید.

مدیریت خطاهای ورود و دسترسی

خطای ۴۰۱ معمولاً به نبودن یا پذیرفته نشدن اطلاعات ورود مربوطه. خطای ۴۰۳ هم معمولاً وقتی دیده می‌شه که درخواست مجوز کافی نداره یا یک لایه امنیتی اون رو بسته. ولی معنی دقیق این کدها می‌تونه با مسیر API، افزونه امنیتی و تنظیمات سرور فرق کنه. پس علاوه بر کد وضعیت HTTP، مقدارهای code و message داخل بدنه پاسخ وردپرس رو هم بررسی کنید.

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

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

محدودیت مسیرهای ابزارک‌ها و نوارهای کناری

وردپرس مسیرهای رسمی /wp-json/wp/v2/widgets و /wp-json/wp/v2/sidebars رو داره، ولی اطلاعات مدیریتی این بخش‌ها معمولاً به احراز هویت و مجوز مناسب نیاز دارن. پاسخ دقیق این مسیرها رو با نقش کاربری موردنظر روی سایت خودتون آزمایش کنید. این مسیرها انتخاب خوبی برای فرستادن مستقیم اطلاعات مدیریتی به یک اپ عمومی نیستن.

چه زمانی Endpoint اختصاصی انتخاب بهتریه؟

اگه اپ فقط به چند داده مشخص مثل شماره پشتیبانی، بنر فعال یا نسخه حداقل اپ نیاز داره، یک Endpoint اختصاصی تمیزتره. توسعه‌دهنده وردپرس می‌تونه این مسیر رو با register_rest_route بسازه و فقط فیلدهای لازم رو برگردونه.

ساخت خروجی فقط‌خواندنی برای اپ عمومی

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

نکات امنیتی و بهینه‌سازی اتصال اپ به وردپرس

  • همیشه HTTPS داشته باشید: گواهی معتبر و تنظیم درست دامنه، پایه اتصال امنه.
  • دسترسی رو محدود کنید: برای هر کاربر و رمز برنامه فقط کمترین مجوز لازم رو در نظر بگیرید.
  • ورودی رو اعتبارسنجی کنید: نوع، طول و مقدار داده رو هم در اپ و هم در وردپرس بررسی کنید. بررسی داخل اپ به‌تنهایی کافی نیست.
  • فقط فیلدهای لازم رو بگیرید: صفحه‌بندی، اندازه مناسب تصویر و پارامتر _fields حجم پاسخ رو کمتر می‌کنن. پارامتر _fields به وردپرس می‌گه فقط فیلدهای مشخص‌شده رو برگردونه.
  • کش داشته باشید: داده‌های کم‌تغییر رو موقتاً روی دستگاه نگه دارید و هنگام قطع اینترنت آخرین نسخه قابل‌استفاده رو نشون بدید.
  • اطلاعات ورود رو امن نگه دارید: رازها رو داخل کد، فایل تنظیمات عمومی یا گزارش خطا نذارید. برای داده حساس از امکانات امن سیستم‌عامل استفاده کنید.
  • محدودیت درخواست داشته باشید: جستجو رو با کمی تأخیر بعد از تایپ بفرستید و درخواست تکراری نسازید.

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

  • REST API پاسخ نمی‌ده: نشانی /wp-json/ رو در مرورگر آزمایش کنید، گواهی HTTPS و پیوندهای یکتا رو ببینید و گزارش خطای سرور رو بررسی کنید.
  • اپ خطای ۴۰۱ نشون می‌ده: نام کاربری، رمز عبور برنامه، هدر احراز هویت و رسیدن هدر به وردپرس رو بررسی کنید. مقدارهای code و message پاسخ رو هم ببینید.
  • اپ خطای ۴۰۳ نشون می‌ده: نقش کاربر، مالک نوشته و قانون‌های افزونه امنیتی یا فایروال رو بررسی کنید. بدنه پاسخ مشخص می‌کنه خطا از وردپرس اومده یا باید لایه‌های دیگه سرور رو هم بررسی کنید.
  • نوشته‌ها نمایش داده نمی‌شن: مطمئن بشید نوشته منتشرشده‌ست، مدل داده با پاسخ هماهنگه و خطای تبدیل JSON ثبت می‌شه.
  • تصاویر نمایش داده نمی‌شن: مقدار تصویر شاخص، پاسخ _embed، مسیر _embedded → wp:featuredmedia → source_url، HTTPS نشانی تصویر و کد وضعیت دانلود رو بررسی کنید.
  • پاسخ ناقص یا خیلی حجیمه: صفحه‌بندی و _fields رو به کار ببرید و فقط اطلاعات مرتبط لازم رو با _embed بگیرید.
  • فایروال اتصال رو مسدود می‌کنه: گزارش درخواست مسدودشده رو پیدا کنید و مسیر، روش HTTP، هدرها و IP آزمایشی رو با پشتیبانی هاست بررسی کنید. کل فایروال رو برای حل یک قانون خاموش نکنید.

برای پیدا کردن مشکل، کد وضعیت HTTP، بدنه پاسخ و زمان درخواست رو در نسخه آزمایشی ثبت کنید. رمز، هدر Authorization و اطلاعات شخصی رو وارد گزارش نکنید.

جمع‌بندی مراحل وصل کردن وردپرس به اپ اندروید

برای وصل کردن وردپرس به اپ اندروید، اول /wp-json/ و مسیر نوشته‌ها رو در مرورگر آزمایش کنید. بعد دسترسی اینترنت و کتابخانه‌های شبکه رو به اپ اضافه کنید، پاسخ JSON رو به مدل‌های Kotlin تبدیل کنید و عنوان، خلاصه و تصویر شاخص رو با صفحه‌بندی نمایش بدید.

برای ساخت یا ویرایش محتوا، یک کاربر با دسترسی محدود و رمز عبور برنامه بسازید و همه درخواست‌ها رو روی HTTPS بفرستید. اگه اپ عمومی منتشر می‌شه، هیچ رمز ثابتی رو داخل فایل نصب قرار ندید. در آخر هم حالت اینترنت ضعیف، پاسخ خالی، خطاهای ۴۰۱ و ۴۰۳، نوشته بدون تصویر و عبور هدر ورود از سرور رو روی دستگاه واقعی آزمایش کنید.

سؤال‌های متداول

برای اتصال اپ اندروید به وردپرس باید افزونه نصب کنید؟

برای دریافت نوشته‌ها، برگه‌ها و داده‌های استاندارد معمولاً نه؛ چون REST API داخل خود وردپرس هست. فقط وقتی داده یا روش ورود اختصاصی می‌خواید، ممکنه به کدنویسی یا افزونه معتبر نیاز داشته باشید.

آیا REST API وردپرس رایگانه؟

بله، REST API بخشی از هسته وردپرسه و هزینه جداگانه‌ای نداره. البته هزینه هاست، دامنه، توسعه اپ یا سرویس‌های جانبی همچنان به انتخاب‌های پروژه‌تون بستگی داره.

آیا می‌تونید بدون ورود، نوشته‌های سایت رو داخل اپ نشون بدید؟

بله، نوشته‌های منتشرشده و عمومی معمولاً بدون ورود از مسیر REST API قابل‌دریافت هستن. پیش‌نویس‌ها، نوشته‌های خصوصی و عملیات مدیریتی به احراز هویت نیاز دارن.

برای انتشار نوشته از داخل اپ به چی نیاز دارید؟

به یک کاربر وردپرس با مجوز مناسب، روش احراز هویت امن، اتصال HTTPS و درخواست POST نیاز دارید. بهتره اول نوشته رو به‌شکل پیش‌نویس بسازید و بعد از بررسی منتشرش کنید.

چطور امنیت اتصال اپ و وردپرس رو حفظ کنید؟

همیشه از HTTPS استفاده کنید، دسترسی کاربر رو محدود نگه دارید، رمز اصلی مدیر رو داخل اپ نذارید، ورودی‌ها رو روی سرور بررسی کنید و اطلاعات حساس رو وارد گزارش خطا نکنید. برای اپ عمومی هم روش ورود باید متناسب با پروژه طراحی، قابل‌لغو و قبل از انتشار آزمایش امنیتی بشه.

نظر شما در این مورد چیه؟

  1. U396075۲۴ آذر ۱۴۰۴

    سلام وقتتون بخیر
    بنده روی یک سایتی کار میکنم که توی اون اکانت یه نرم افزار پزشکی فروخته میشه. نرم افزار برای خودمونه ولی برای ورود نیازه که پس از خرید یک API به کاربر داده شه که بتونه وارد نرم افزار بشه. میشه بگید توی ووکامرس چیکار باید کنم و یه توضیح کلی درباره روش پیاده سازی این فرآیند بگین؟ خیلی ممنون

    • رضا راد۲۴ آذر ۱۴۰۴

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

  2. U360878۳۰ آبان ۱۴۰۳

    سلام خسته نباشید
    من برای تمرین سایتی رو روی لوکال هاست ایجاد کردم اما میخام صفحه رو ویرایش کنم و متن و عکس بهش اضافه کنم خطا میده و مینویسه (یک پاسخ josn) افزونه ها و اسم سایت وURI روهم چک کردم همشون درست بود میشه راهنماییم کنید باید چیکار کنم؟

  3. U354710۲۲ مهر ۱۴۰۳

    سلام و درود فراوان
    اگر اطلاعات اصلی وبسایتمون توی یک سایت ساز رو از پشتیبانی اون سایت ساز به جای Sql یا php به صورت فایل های json دریافت کرده باشیم، میتونیم به همین روش اطلاعات رو به هاست جدیدمون برای سایت ووردپرسیمون انتقال بدیم؟

  4. U40136۸ خرداد ۱۴۰۰

    سلام. وقتتون بخیر. برای قرار گرفتن محصولات فروشگاهمون تو سایت ایمالز، باید لینکی مشابه لینک زیر براشون بفرستیم که ربات ایمالز محصولات مارو شناسایی کنه. چگونه با استفاده از api این کار رو انجام بدیم؟

    • رضا راد۱۰ خرداد ۱۴۰۰

      درود بر شما باید با php برای اینکار یک پلاگین با api بسازید. البته ساختش رو نمیشه توی چند جمله یا چند پاراگراف توضیح داد.

  5. کاربر مهمان۱۹ اردیبهشت ۱۳۹۸

    سلام وقتتون بخیر
    ما همین مراحل رو انجام دادیم ولی خطا میده لطفا در مورد خطاهای افزونه هم توضیح بدید.
    {“status”:”error”,”error”:”You must include a ‘nonce’ value to create posts. Use the `get_nonce` Core API method.”}

    • رضا راد۲۰ اردیبهشت ۱۳۹۸

      درود باید از متد get_nonce استفاده کنید.

  6. کاربر مهمان۲۶ مهر ۱۳۹۷

    سلام
    وقت بخیر
    سایتی که من دارم از افزونه های زیر استفاده می کند
    آیا از دیتابیس افزونه های فوق خروجی اطلاعات به صورت Json را میشه دریافت کرد یا خیر ؟

    WooCommerce
    • WP Job Manager – Bookmarks
    • WP Job Manager – Claim Listing
    • WP Job Manager – Tags
    افزونه مدیریت آگهی (dj-classifieds)
    افزونه گالری تصاویر (dj mediatools)
    افزونه ارسال نظر روی آگهی (dj reviews)
    درگاه پرداخت بانک ملت (پلاگین)

    • رضا راد۲۷ مهر ۱۳۹۷

      سلام باید کدنویسی اختصاصی انجام بدید

  7. کاربر مهمان۲۳ مهر ۱۳۹۷

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

    • رضا راد۲۴ مهر ۱۳۹۷

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

  8. U11168۶ فروردین ۱۳۹۷

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

    برای فروشگاه خودمان
    مثل طراحی ۰تا۱۰۰ قالب

    • تیم پشتیبانیتیم پشتیبانی۶ فروردین ۱۳۹۷

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

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

در حال بارگذاری...

هر سوالی دارید بپرسید.پاسخگوی شما هستیم.