如何使用PHP获取同一服务器上WordPress站点的所有发布文章
获取同服务器WordPress已发布文章的两种方法
嘿,我明白你现在的需求——在自己的PHP自定义应用里展示同服务器上WordPress的所有已发布文章对吧?其实WordPress的数据库结构和内置工具都能帮你轻松搞定,我给你两种靠谱的方案:
方案一:直接查询MySQL数据库(适合轻量需求)
WordPress的所有文章都存在数据库的wp_posts表中(注意:你的WordPress可能用了自定义表前缀,比如wp_可能改成了myblog_,要对应修改)。其中:
post_status= 'publish' 表示已发布的文章post_type= 'post' 表示普通文章(如果要包含页面可以改成'page',或者用数组['post','page'])post_content字段就是你要找的文章全部内容
下面是PHP代码示例:
// 替换成你的WordPress数据库信息 $db_host = 'localhost'; $db_name = 'wordpress_db'; $db_user = 'db_user'; $db_pass = 'db_password'; $table_prefix = 'wp_'; // 你的WordPress表前缀 // 连接数据库 try { $pdo = new PDO("mysql:host=$db_host;dbname=$db_name;charset=utf8mb4", $db_user, $db_pass); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // 查询所有已发布文章 $stmt = $pdo->prepare("SELECT ID, post_title, post_content, post_date FROM {$table_prefix}posts WHERE post_status = ? AND post_type = ? ORDER BY post_date DESC"); $stmt->execute(['publish', 'post']); $posts = $stmt->fetchAll(PDO::FETCH_ASSOC); // 遍历输出文章 foreach ($posts as $post) { echo "<h2>" . htmlspecialchars($post['post_title']) . "</h2>"; echo "<p>发布时间:" . date('Y-m-d H:i', strtotime($post['post_date'])) . "</p>"; echo "<div>" . $post['post_content'] . "</div>"; echo "<hr>"; } } catch(PDOException $e) { echo "数据库连接失败: " . $e->getMessage(); }
注意哦:用PDO预处理语句可以避免SQL注入,一定要记得替换成你自己的数据库凭据~
方案二:引入WordPress环境(推荐,兼容更多场景)
如果你的应用需要处理WordPress的短代码、自定义字段、分类标签这些,直接查询数据库可能会遗漏内容。这时候最好引入WordPress的核心文件,用它的内置函数来获取文章,更规范也更安全。
代码示例:
// 引入WordPress的核心加载文件,路径根据你的实际情况调整 // 比如如果WordPress在根目录,你的应用在子目录,路径就是 '../wp-load.php' require_once '/path/to/your/wordpress/wp-load.php'; // 使用WP_Query查询所有已发布文章 $query = new WP_Query([ 'post_status' => 'publish', 'post_type' => 'post', 'posts_per_page' => -1, // -1表示获取所有文章 'orderby' => 'date', 'order' => 'DESC' ]); // 循环输出文章 if ($query->have_posts()) { while ($query->have_posts()) { $query->the_post(); ?> <h2><?php the_title(); ?></h2> <p>发布时间:<?php the_date('Y-m-d H:i'); ?></p> <div><?php the_content(); ?></div> <hr> <?php } // 重置查询,避免影响后续代码 wp_reset_postdata(); } else { echo "暂无已发布文章"; }
这个方法的好处是,the_content()会自动解析文章里的短代码、处理图片附件等,完全和WordPress前台展示的内容一致,还能方便调用get_the_category()、get_the_tags()这些函数获取更多文章附加信息。
内容的提问来源于stack exchange,提问作者Aryan amish
相关产品推荐
相关产品推荐

