WordPress 2.1 內 Page 的改變

WordPress 2.1 新增支援 Pages 的 drafting,亦因為這個原故,database 內裡分辨 Post 和 Page 的方法改變了,令到一些 plugins 出現問題。

所有 Posts 和 Pages 都是儲存在 table 'wp_posts' 內的(以預設 wp_ 為 table prefix 的話),在 2.1 以前 Page 的定義是

post_status = 'static'
但在 WordPress 2.1 後,Page 的定義變成
post_type = 'page'

post_type 在 2.1 以前是還未使用的,在 2.1 開始用作識別 Post 還是 Page,而 post_status 真的用作記錄 Post 或 Page 的狀態 - publish、draft 還是 private,之前很多 plugins 都默認 post_status = 'static' 的 record 就是 Page,post_status = 'publish' 的就是 Post,令到在 WordPress 2.1 的環境下 Page 都認作 Post,其中包括 Extended Live Archives

要怎樣修改 ELA?其實只需修改 af-extended-live-archive-include.php 和 af-extended-live-archive.php 兩個 files,對 database 及 SQL/PHP 有認識的話應該已經懂得怎樣修改,因為涉及多處改動,如在這篇文章內講解會很長篇大論,我已經將修改好的 files zip 了,有需要的朋友可自行下載,為安全起見,記著自行 backup 那兩個 files 才作覆蓋。

下載鏈結(已經下載了 475 次)

8 Responses to “WordPress 2.1 內 Page 的改變”

  1. 2447

    巧了,我也贴了一篇类似的文章

  2. 2448

    其实 WP 2.1 跟 UTW 也有相容性的问题,我也写了一篇关于怎么修补的文章

  3. 2359

    天佑,我升级到2.1后,发现所有的page都变成了post,和插件没有关系,是在wp的后台看到的page都是空的,不知道有没有什么办法把指定的post变成page?谢谢!

  4. 2350

    fallen said:

    天佑,我升级到2.1后,发现所有的page都变成了post,和插件没有关系,是在wp的后台看到的page都是空的,不知道有没有什么办法把指定的post变成page?谢谢!

    問題這麼嚴重?你是否忘記執行 wp-admin/upgrade.php 呢?

    如果你有行 upgrade.php 的話,那就要直接修改 wp_posts 內的 records 了。

    首先你要知道那些 Pages 的 ID 是什麼,再在 wp_posts 內將那些 ID 的 record(s),field 'post_type' 由 'post' 改為 'page',再檢查 field 'post_status' 是否 'publish',否的話將 'post_status' 的 value 改為 'publish' 就應該可以。

  5. 2285

    天佑:
    谢谢你的答复,我执行了upgrade.php。我查了records,那些page的post_type本来就是page,‘post_status’ 是 ‘publish’,可还是没法在后台看到,太奇怪了!

  6. 2508

    fallen said:

    天佑:
    谢谢你的答复,我执行了upgrade.php。我查了records,那些page的post_type本来就是page,‘post_status’ 是 ‘publish’,可还是没法在后台看到,太奇怪了!

    那就真的太奇怪了。

  7. 2371

    终于修好了,后来我新建了一个page,再跑去看数据库,发现原来的那几个消失的page变成了post属性,这时候改成page,再回后台就可以看见了,但在前台仍然无法访问,最后没办法,把所有page都重新保存了一下,居然都正常了!
    谢谢天佑的帮忙!!

  8. 2510

    fallen:我都沒幫過你什麼,不用這麼客氣吧。

Leave a Reply