Create Pages from Database

时间:2019-04-15 作者:QUE

我最近决定用wordpress创建一个网站。

我的目标是可视化存储在MySQL数据库中的数据。数据库中的每个id应该代表网站上的一个页面。据我所知,自定义帖子类型或自定义页面模板应该可以做到这一点。

但我最大的问题是,到目前为止,我阅读或观看的几乎所有教程都解释了如何手动为每个“产品”创建页面。我的数据库目前有大约44000个条目,每周会有更多条目,所以这不是正确的方法。

是否有某种方法可以在用户搜索模板后基于模板动态创建页面?

2 个回复
SO网友:Alexander Holsgrove

如果您的产品表已经包含了您希望显示的所有信息,那么为每个产品创建新的post条目似乎没有什么意义。

最好是创建一个页面,例如“Product”,然后使用add_rewrite_rule, 以便您可以设置链接,例如/product/some-product-alias. 然后,您需要对产品别名执行查询,以从产品表中查找产品信息,然后将其显示在模板上(或者使用page-product.phpcreate a template 并将其分配给管理员)

有关在中设置重定向的更多信息this answer 我的。

SO网友:leymannx

您可以在匹配某些URL模式时添加自定义模板,然后使用自己的函数在其上打印任何您想要的内容,以动态返回数据库查询结果。

以下示例添加了一个新的自定义模板建议。所以当URL包含foobar 作为第一段和非空的第二段foobar.php 将呈现当前主题中的模板。

add_action(\'template_include\', \'template_suggestions\');
function template_suggestions($template) {

  $segments = explode(\'/\', parse_url($_SERVER[\'REQUEST_URI\'], PHP_URL_PATH));
  $foobar_template = locate_template([\'foobar.php\']);

  if (isset($segments[1]) && isset($segments[2]) && $segements[1] === \'foobar\' && $foobar_template !== \'\') {

    status_header(200);
    return $foobar_template;
  }

  return $template;
}
现在使用任何其他自定义函数返回数据库查询结果。

function foobar_results() {

  $myrows = [];
  $segments = explode(\'/\', parse_url($_SERVER[\'REQUEST_URI\'], PHP_URL_PATH));

  if (isset($segments[1]) && isset($segments[2]) && $segements[1] === \'foobar\') {

    global $wpdb;
    $myrows = $wpdb->get_results( "SELECT * FROM mytable WHERE id = {$segments[2]}" );
  }

  return $myrows; 
}
然后进来foobar.php 只需循环查看结果。

<?php foreach(foobar_results() as $row): ?>
  <?php print $row->id; ?>
<?php endforeach; ?>

相关推荐

WordPress中MySQL的CRUD前端

我希望我来对地方了。我想用MySQL数据库的前端丰富我的Wordpress站点,我将其托管在与我的WP站点相同的服务器上。实际上,我已经将(以前的)MS Access数据库迁移到MySQL,并且我确实使用wpdatables获得了对它的“表读/写”访问权限。我想,我要找的基本上是WP上MySQL的CRUD接口。我知道,我可以自己用很多php代码来构建它。但必须有一种方法,使用多种形式的引擎(重力、wp形式、强大……)并让好看的表单显示单个表记录,允许编辑它们,然后将它们写回MySQL数据库。。。这里有什么