รับการนับโพสต์ใน wp rest API v2 และรับหมวดหมู่ทั้งหมด


10

ฉันต้องการนับจำนวนการโพสต์ของฉัน ฉันคิดว่าใช้

wp-json / wp / v2 / categories? page = 1 >> นับว่าเป็นวิธีที่ดีที่จะไป แต่การใช้วิธีแก้ปัญหาข้างต้นไม่ใช่ถ้วยชาในแง่ของความเร็วและฉันไม่รู้วิธีรับหมวดหมู่ทั้งหมดด้วยการโทรเพียงครั้งเดียว (ถ้าคุณรู้ว่ามันจะมีประโยชน์มากถ้าคุณแชร์มัน) มีวิธีใดบ้าง / tutorial / ... ทำให้ฉันสามารถเพิ่มจำนวนการโพสต์ในการโทรหลักได้หรือไม่ ชอบเส้นทางนี้: wp-json / wp / v2 / posts ....

คำตอบ:


21

WP Rest API ส่งคุณสมบัติการนับทั้งหมด ( found_posts ) จาก WP_Query X-WP-Totalในส่วนหัวที่เรียกว่า

สำหรับ POSTS:คุณสามารถโทรไปยังจุดปลายทางของ REST API ได้

http://demo.wp-api.org/wp-json/wp/v2/posts

X-WP-Totalคุ้มค่าสำหรับการนับการโพสต์จะถูกส่งกลับในส่วนหัวเป็น ด้านล่างคือตัวอย่างการตอบกลับจากการสาธิตที่โฮสต์

Access-Control-Allow-Headers:Authorization, Content-Type
Access-Control-Expose-Headers:X-WP-Total, X-WP-TotalPages
Allow:GET
Cache-Control:max-age=300, must-revalidate
Connection:keep-alive
Content-Encoding:gzip
Content-Type:application/json; charset=UTF-8
Date:Wed, 28 Dec 2016 12:48:50 GMT
Last-Modified:Wed, 28 Dec 2016 12:48:50 GMT
Link:<https://demo.wp-api.org/wp-json/wp/v2/posts?page=2>; rel="next"
Server:nginx/1.4.6 (Ubuntu)
Transfer-Encoding:chunked
Vary:Cookie
Via:1.1 dfa2cbb51ec90b28f03125592b887c7d.cloudfront.net (CloudFront)
X-Amz-Cf-Id:ri4C3e-AdixwqGv_wYNdGRq9ChsIroy1Waxe2GqkiTqbk4CpiSIQfw==
X-Batcache:MISS
X-Cache:Miss from cloudfront
X-Content-Type-Options:nosniff
X-EC2-Instance-Id:i-198c7e94
X-Powered-By:PHP/7.0.11-1+deb.sury.org~trusty+1
X-Robots-Tag:noindex
X-WP-Total:71
X-WP-TotalPages:8

บันทึก:

นอกจากนี้คุณยังสามารถ จำกัด การโพสต์ต่อหน้าคุณกำลังดึง 1 เพื่อให้คุณไม่ได้รับการโพสต์ wordpress ทั้งหมดของคุณเพียงเพื่อให้ได้จำนวนการโพสต์

http://demo.wp-api.org/wp-json/wp/v2/posts?per_page=1

เพื่อรับหมวดหมู่ทั้งหมด

สิ่งที่คุณต้องทำคือส่งคำขอ GET ไปยังจุดสิ้นสุดหมวดหมู่ที่:

http://demo.wp-api.org/wp-json/wp/v2/categories

สิ่งนี้จะส่งคืนหมวดหมู่ทั้งหมดและจำนวนหมวดหมู่ทั้งหมดสามารถพบได้ในX-WP-Totalส่วนหัว


7

ในกรณีที่ยังไม่ชัดเจนเกี่ยวกับวิธีการเข้าถึงส่วนหัว (ด้วยจำนวนการโพสต์) จากคำขอ Ajax ต่อไปนี้เป็นวิธีการทำกับ jQuery .get กุญแจสำคัญคือฟังก์ชั่นการโทรกลับมีพารามิเตอร์ทางเลือกที่มีการร้องขอซึ่งรวมถึงส่วนหัว

$.get( 'http://demo.wp-api.org/wp-json/wp/v2/posts', function( data, status, request ) {
numPosts = request.getResponseHeader('x-wp-total');
console.log( numPosts ); //outputs number of posts to console
});

1

ลองตอบคำถามของคุณ จำนวนของการโพสต์ wp rest api v2 ที่ส่งคืนในส่วนหัว คุณสามารถรับค่าบางอย่างเช่นนี้:

headers('X-WP-Total')

นับโพสต์ต่อหน้า:

wp-json/wp/v2/categories?page=1&per_page=5

0

ฉันใช้เวลาหลายชั่วโมงในการค้นหาจำนวนโพสต์ด้วย WP REST API แม้แต่ v2 ผ่าน Google และ WordPress หรือเอกสารอย่างเป็นทางการของห้องสมุด แต่น่าเสียดายที่ไม่มีอะไรเกิดขึ้น

ดังนั้นฉันจึงพยายามรับโพสต์ด้วยการเพิ่มจำนวนหน้าจนกว่าความยาวอาร์เรย์ JSON ที่ส่งคืนจะกลายเป็น0ซึ่งหมายความว่าไม่มีหน้าเพิ่มเติมที่โพสต์ในหมวดหมู่และหยุดเพิ่มหมายเลขหน้า

แต่ถ้าคุณต้องการได้จำนวนโพสต์ต่อหน้าด้วย WP REST API คุณสามารถใช้filter[posts_per_page]={$numberOfPosts}พารามิเตอร์ได้อย่างง่ายดายในขณะที่ส่งคำขอ

หวังว่ามันจะช่วย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.