gpt4 book ai didi

php - 如何像 Wordpress 循环一样制作我自己的 while 循环?

转载 作者:行者123 更新时间:2023-12-04 13:52:25 24 4
gpt4 key购买 nike

我是新手,也是 PHP 新手..

只是想知道如何像在 Wordpress 中一样制作我自己的灵活循环...注意我不是在谈论 wordpress..我想在我自己的 PHP 应用程序上实现它...

我们回顾一下WP中,有这样一段代码:

while (have_post() : thepost())// .. bla bla...

echo the_title();
echo the_content();

endwhile; // this is just an ilustration

你能弄清楚 have_post() 或 the_post() 是如何与数据库交互的吗?这样它们就可以循环..

谢谢..

最佳答案

WordPress 使用这些函数在遍历循环时修改的全局变量。例如:

var $posts = null;
var $post = null;
var $post_count = 0;
var $post_index = 0;

function have_post() {
global $posts, $post_count, $post_index;

$post_index = 0;

// do a database call to retrieve the posts.
$posts = mysql_query('select * from posts where ...');

if ($posts) {
$post_count = count($posts);
return true;
} else {
$post_count = 0;
return false;
}
}

function thepost() {
global $posts, $post, $post_count, $post_index;

// make sure all the posts haven't already been looped through
if ($post_index > $post_count) {
return false;
}

// retrieve the post data for the current index
$post = $posts[$post_index];

// increment the index for the next time this method is called
$post_index++;

return $post;
}

function the_title() {
global $post;
return $post['title'];
}

function the_content() {
global $post;
return $post['content'];
}

不过,我肯定会推荐使用 OOP 风格编码而不是 WordPress。这将使变量在对象的实例中定义,而不是全局可访问。例如:

class Post {
function __construct($title, $content) {
$this->title = $title;
$this->content = $content;
}

function getTitle() {
return $title;
}

function getContent() {
return $content;
}
}

class Posts {
var $postCount = 0;
var $posts = null;

function __construct($conditions) {
$rs = mysql_query('select * from posts where $conditions...');

if ($rs) {
$this->postCount = count($rs);
$this->posts = array();

foreach ($rs as $row) {
$this->posts[] = new Post($row['title'], $row['content']);
}
}
}

function getPostCount() {
return $this->postCount;
}

function getPost($index) {
return $this->posts[$index];
}
}

关于php - 如何像 Wordpress 循环一样制作我自己的 while 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1516181/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com