2013-12-10 204 views
0

我想知道如何在get_posts循環之外獲得自定義帖子或其頁面的偏移量。WordPress的 - 在單個帖子頁面(循環外)獲取帖子偏移量/帖子頁面偏移量

我開發了連接到使用JSON API插件的WordPress博客外部的Web應用程序,並使用AJAX請求呈現給定的帖子頁面,如:

?json=get_posts&orderby=date&order=desc&count=x&page=n 

(這將返回X職位的第n個網頁)

這個效果很好,但現在我想在wordpress博客「single post」頁面上爲此應用程序設置一個鏈接,如「在應用程序中顯示此帖子」,並將當前頁面偏移量作爲參數。因此,我將能夠在應用程序中讀取此參數並獲取包含帖子的頁面的帖子,並突出顯示此帖子(作爲參數發送)。

如果我能得到補償,我將能夠與模運算符,以顯示正確的頁面:

如果offset = 22和count = 10,顯示第3頁和亮點後N°2

page = Math.ceil(offset/count); 
post_to_highlight_position = offset % count; 

你知道我該怎麼做嗎?或者如果有更好的方法來實現這一目標?

回答

0

做了一些研究後,我終於找到了一種方法來做到這一點與自定義SQL查詢。 這是我如何實現這一點:

首先,我加入這個代碼WP_QUERY生成的SQL查詢:

$query = new WP_Query($query_args); 

//write the SQL query 
echo $query->request; 

我有一樣的東西:

SELECT wp_posts.ID 
FROM wp_posts 
WHERE 1=1 
AND wp_posts.post_type = 'work' 
AND (wp_posts.post_status = 'publish') 
ORDER BY wp_posts.post_date DESC 

它返回完整帖子列表,由最新的第一個排序。然後,我通過簡單的聲明位移變量,並增加它的每一行中,這樣增加了offset

SET @offset=0; 
SELECT wp_posts.ID, 
     @offset := @offset + 1 AS offset 
FROM wp_posts 
WHERE 1=1 
AND wp_posts.post_type = 'work' 
AND (wp_posts.post_status = 'publish') 
ORDER BY wp_posts.post_date DESC 

最後一步,我過濾的ID名單+郵寄ID偏移協會和添加自定義行(pageposition):

SET @offset=0; 
SELECT ID, 
     offset - 1 AS offset, 
     CEIL(offset/10) AS page, 
     (offset - 1) % 10 AS position 
FROM (SELECT wp_posts.ID, 
     @offset := @offset + 1 AS offset 
     FROM wp_posts 
     WHERE 1=1 
     AND wp_posts.post_type = 'work' 
     AND (wp_posts.post_status = 'publish') 
     ORDER BY wp_posts.post_date DESC) 
     AS OFFSETS 
WHERE ID = 83 

(其中83搜索帖子ID和每頁顯示10個)

我以前offset - 1 AS offset從0獲得補償,但你可以只使用的數從1得到偏移量。

因此,這將返回如下表:

ID = 83,每頁帖= 10:

ID | offset | page | position 
83 | 16 | 2 | 6  

- 第2頁

ID上>第6位= 10,每頁帖子= 5:

ID | offset | page | position 
10 | 33 | 7 | 3  

- >第7頁的第3位