[英]Swift Wordpress Posts Fetch Page
我是編程和快速的初學者。 我正在為我的小型企業開發一個應用程序。 它幾乎完成了,但我完全被博客頁面困住了。 我只想從我的 wordpress 網站中獲取數據,然后將我的帖子放到我的 tableview 中。 我正在搜索,但找不到正確的答案。 請至少我告訴我從哪里開始
謝謝
您需要使用稱為WP REST API的WordPress很棒的新API,它將以JSON格式提供您需要的所有數據。 看看這個網址開始: http : //v2.wp-api.org/
在您的WordPress網站中使用此官方插件: https : //wordpress.org/plugins/rest-api/
更新:您不需要安裝上述插件,因為它已從v4.4合並到WordPress核心中。
首先,您應該定義用於解析 JSON 響應的模型,例如,如下所示。
import Foundation
struct Title: Decodable {
let rendered: String
}
struct Content: Decodable {
let rendered: String
}
struct WPFeaturedMedia: Decodable {
let sourceURLString: String
var url: URL? {
.init(string: sourceURLString)
}
enum CodingKeys: String, CodingKey {
case sourceURLString = "source_url"
}
}
struct Embedded: Decodable {
let medias: [WPFeaturedMedia]?
enum CodingKeys: String, CodingKey {
case medias = "wp:featuredmedia"
}
}
struct PostHeader: Decodable, Identifiable {
let id: Int
let date: Date
let title: Title
let embedded: Embedded
enum CodingKeys: String, CodingKey {
case date = "date"
case title = "title"
case embedded = "_embedded"
case id = "id"
}
}
struct Post: Decodable, Identifiable {
let id: Int
let date: Date
let title: Title
let content: Content
let embedded: Embedded
enum CodingKeys: String, CodingKey {
case date = "date"
case title = "title"
case content = "content"
case embedded = "_embedded"
case id = "id"
}
}
您可以使用Combine
輕松獲取帖子。
import Combine
import SwiftUI
final class ViewModel: ObservableObject {
@Published var postHeaders: [PostHeader] = []
@Published var error: Error?
private var cancellable: AnyCancellable?
init() {
let url = URL(string: "https://PUT_YOUR_HOST_HERE/wp-json/wp/v2/posts?_fields=id,date,title,_links,_embedded&_embed”)!
cancellable = URLSession.shared.dataTaskPublisher(for: url)
.map { $0.data }
.decode(type: [PostHeader].self, decoder: JSONDecoder())
.receive(on: DispatchQueue.main)
.sink(
receiveCompletion: { completion in
switch completion {
case .failure(let error):
self.error = error
case .finished:
break
}
},
receiveValue: { posts in
self.postHeaders = posts
}
)
}
}
你可以在這里找到完整的資源: https : //github.com/fuzzzlove/SwiftUIWordpressClient
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.