最近在写WordPress的APP程序,遇到一个小问题记录下。今天我在写APP接口时取文章内容数据发现,如果文章中使用了<!--nextpage-->
进行分页的话,取出来的数据并不完整,准确的说只能取到第一页的数据。无论是get_post
还是wp_query
都试过。后来发现是WordPress的输出内容函数都执行了转换,所以不能有这些关键词。
我这人有点死脑筋,写这个接口我并不想自己写查表这些操作,所以我想使用WordPress自带的函数来处理。然而我百度了好久,各大交流群里问了个遍。都没找到解决办法,于是只好使用了终极手段,直接查表。
使用wp_query方式可以看到查询数据库的语句,你也可以自己写。如下:
复制
SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.ID = " . $id . " AND wp_posts.post_type = 'post' ORDER BY wp_posts.post_date DESC
其中的id是我需要传入的参数。这句sql语句其实有点长,如果你会写sql,你也可以精简下。
接下来是重点了,由于分页标识是存在数据库中的,所以如果我们查询得到的文章内容不处理还是会被WordPress分页,所以我们需要使用PHP的字符串替换或者正则匹配将分页符删掉,这里为了方便,就用字符串替换了。
复制
$content = str_replace("<!--nextpage-->", "", $singlepost->post_content);
你以为到此就完了吗?还早呢!为了不让WordPress文章中的短代码失效,我们还需要执行下WordPress的短代码转换,让它把WordPress文章内容全部转换为HTML。
复制
$content = apply_filters('the_content', $content); $content = str_replace(']]>', ']]>', $content);
后面这个替换我没看懂,不过我是复制的WordPress的the_content
函数,不会错用上。
现在应该没问题了,使用查表的方式让我有点膈应,始终感觉哪儿不妥……
评论 (5)