WordPress 多站点建站教程(三):主站如何调用子站的文章内容、SQL语句如何写?...

news/2024/5/20 14:21:07/文章来源:https://blog.csdn.net/weixin_34375054/article/details/90154374

1、如果懂得编程的朋友可以SQL语句,然后加上PHP函数等操作就可以通过直接调用网站的数据库信息来实现想要达到的目的。

既然要用到SQL语句首先得对WordPress多站点数据库有一个了解,多站点激活后会多出这么几张表wp_site,wp_sitemeta,wp_blogs,wp_blog_versions其中最重要的是wp_blogs这张表,它将你创建的每一个子站点访问地址,以及创建和修改时间等等都存到了这张表里面。还有一点就是当你创建一个子站点后会多出一些中间带有数字的数据表,比如wp_2_posts,wp_2_options等等,中间的数字2其实就是你wp_blogs表里面的blog_id号。这就给我获取每个站点的数据提供了方便。

例如:

复制代码
<?php
function wpmu_recent_posts_mu($how_many=10, $how_long=0, $titleOnly=true, $begin_wrap="\n<li>", $end_wrap="</li>")
{global $wpdb;global $table_prefix; $counter = 0; //首先通过判断是否显示时间区间来分别使用不同的SQl语句if ($how_long > 0){$blogs = $wpdb->get_col("SELECT blog_id FROM $wpdb->blogs WHERE public = '1' AND archived = '0' AND mature = '0' AND spam = '0' AND deleted = '0' AND last_updated >= DATE_SUB(CURRENT_DATE(), INTERVAL $how_long DAY) ORDER BY last_updated DESC"); } else { $blogs = $wpdb->get_col("SELECT blog_id FROM $wpdb->blogs WHERE public = '1' AND archived = '0' AND mature = '0' AND spam = '0' AND deleted = '0' ORDER BY last_updated DESC"); }//如果存在多站点IDif ($blogs) { echo "<ul>";foreach ($blogs as $blog) { // 下面是需要使用的数据表$blogOptionsTable = $wpdb->base_prefix.$blog."_options"; $blogPostsTable = $wpdb->base_prefix.$blog."_posts"; $options = $wpdb->get_results("SELECT option_value FROM $blogOptionsTable WHERE option_name IN ('siteurl','blogname') ORDER BY option_name DESC"); // 为最新文章获取标题和ID号if ($how_long > 0) $thispost = $wpdb->get_results("SELECT ID, post_title FROM $blogPostsTable WHERE post_status = 'publish' AND ID > 1 AND post_type = 'post' AND post_date >= DATE_SUB(CURRENT_DATE(), INTERVAL $how_long DAY) ORDER BY id DESC LIMIT 0,1"); } else { $thispost = $wpdb->get_results("SELECT ID, post_title FROM $blogPostsTable WHERE post_status = 'publish' AND ID > 1 AND post_type = 'post' ORDER BY id DESC LIMIT 0,1"); } // 如果存在将输入内容if($thispost) {// 获取子站点文章链接$thispermalink = get_blog_permalink($blog, $thispost[0]->ID); if ($titleOnly == false) { echo $begin_wrap.'<a href="' .$thispermalink.'">'.$thispost[0]->post_title.'</a> <br/> by <a href="' .$options[0]->option_value.'">' .$options[1]->option_value.'</a>'.$end_wrap; $counter++; } else { echo $begin_wrap.'<a href="'.$thispermalink .'">'.$thispost[0]->post_title.'</a>'.$end_wrap; $counter++; } } // 对文章数量进行判断。if($counter >= $how_many) { break; } } echo "</ul>"; } 
}?>
复制代码

把上面的代码放到 functions.php 中,使用方法上面已有说明。如你有十个子站点。想显示这个十个子站点的最新文章,就可以使用上面的方法:

<?php wpmu_recent_posts_mu(10, 0, true, '<li>', '</li>'); ?>

 

假如你有50个子站点,而你控制显示的最新文章数量只是10篇,很有可能十几个用户在同时使用子站点发布文章,那这样的话有些最新文章得不到显示,所以考虑到随机显示子站点的最新文章。且每刷新一次页面都会随机显示不同的子站点文章代码如下:

复制代码
<?php
function lei_multsite_recent_post($showpost) {global $wpdb, $post, $table_prefix; //首先将所有的子站点ID号显示出来$most_post = $wpdb->get_col("SELECT blog_id FROM $wpdb->blogs WHERE public = '1' AND archived = '0' AND mature = '0' AND spam = '0' AND deleted = '0' ORDER BY last_updated DESC");foreach ($most_post as $key => $v) {if($v !=1 ) //除主站点ID{ $b_id[$key] = $v; } }$newid = array_flip($b_id); //php数组函数对换键值$new_post_id = array_rand($newid,2); //php数组函数随机显示2条,这里的数值不能大于你创建子站点的个数。foreach ( $new_post_id as $k => $vol ){$blogPostsTable = $wpdb->base_prefix.$vol."_posts"; $recent_post = $wpdb->get_results("SELECT * from $blogPostsTable where post_status = 'publish' and post_type = 'post' ORDER BY post_date desc LIMIT 0,$showpost");foreach ($recent_post as $ks => $vs){$thispermalink = get_blog_permalink($vol, $vs->ID);$count1 += 1;echo '<li><a href="'.$thispermalink.'">'.$vs->post_title.'</a></li>'; } }
}
?>
复制代码

 

将上面的方法同样放到你使用主题的functions.php文件里面,使用方法只要

<?php lei_multsite_recent_post(1); ?>

 

2、而不懂编程的朋友们会想到使用插件来完成,虽然有时候能满足我们的要求,但毕竟使用插件有局限性,并不是每一款插件都适合(插件里面的代码也都是用SQL语句来完成)。比如有这么几款插件:Multisite Latest Posts Widget(显示多站点最新文章) 和 Multisite Featured Blog (显示多站点特色博客)和 WPMU Recent Posts Widget(显示多站点最近文章) 

 




本文转自黄聪博客园博客,原文链接:http://www.cnblogs.com/huangcong/p/3718423.html,如需转载请自行联系原作者

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_775570.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UI设计师注意,网站头图的10个黄金法则

在ui设计中&#xff0c;网站的头图是很重要的&#xff0c;因为他是用户第一时间看的&#xff0c;也大部分的因素决定着用户的去留。当用户登录你的主页时&#xff0c;在页面打开后的瞬间&#xff0c;你可以通过设计将更多的页面让他们看到。然而大多数网站都错失了这个给用户留…

大数据信息资料采集:阿里巴巴1688电商网站货源产品信息采集

大数据信息资料采集:阿里巴巴1688电商网站货源产品信息采集 数据采集满足多种业务场景&#xff1a;适合产品、运营、销售、数据分析、政府机关、电商从业者、学术研究等多种身份 职业。 舆情监控&#xff1a;全方位监测公开信息&#xff0c;抢先获取舆论趋势。 市场分析&…

大数据信息资料采集:二手车汽车网站车辆信息资料采集八爪鱼规则

大数据信息资料采集:二手车汽车网站车辆信息资料采集八爪鱼规则 数据采集满足多种业务场景&#xff1a;适合产品、运营、销售、数据分析、政府机关、电商从业者、学术研究等多种身份职业。 舆情监控&#xff1a;全方位监测公开信息&#xff0c;抢先获取舆论趋势。 市场分析&a…

15个国外最佳免费图片素材网站,快让小伙伴都知道

1、stock.xchng 也许这是最流行的网站&#xff0c;提供免费的照片之一。他们收集计算几乎400.000照片提供免费下载。您可以使用下载的图像&#xff0c;但也有一些限制&#xff0c;如使用XXX网站等的图像 2、Morgue File Morgue File的文件是找到高质量的免费照片最热闹的地方…

Python网站的漏洞如何检查?

本文和大家分享的主要是python网站的漏洞检查相关内容&#xff0c;一起来看看吧&#xff0c;希望通过本文的分享能帮助大家更好的检查出python开发的标准网站中的高风险问题。 SQL注入 查找所有含有SQL查询的文件&#xff0c;你要找到使用和下面语法类似的查询语句&#xff1a;…

使用Varnish为web网站加速

使用Varnish为网站加速 varnish概述 Varnish是一款高性能的开源HTTP加速器&#xff0c;挪威最大的在线报纸Verdens Gang (http://www.vg.no) 使用3台Varnish代替了原来的12台squid&#xff0c;性能居然比以前更好。Varnish 的作者Poul-Henning Kamp是FreeBSD的内核开发者之一&a…

从网站抓取数据并在 Excel 中整合

从网站抓取数据并在 Excel 中整合 在本文中&#xff0c;我们将看到下一个练习使用 UiPath 的任务。当您进入公司或作为自由职业者工作时&#xff0c;这将使您了解更多并为实时工作做好准备。在这项任务中&#xff0c;我们更关注数据抓取概念。通过完成这个任务你会学到什么&…

LAMP网站架构各模块配置的分析

LAMP&#xff08;Linux-Apache-MySQL-PHP&#xff09;网站架构是目前国际流行的Web框架&#xff0c;该框架包括&#xff1a;Linux操作系统&#xff0c;Apache网络服务器&#xff0c;MySQL数据库&#xff0c;Perl、PHP或者Python编程语言&#xff0c;所有组成产品均是开源软件&a…

减少网站跳转时间,增强网站数据安全——HSTS 详解

近年来随着 Google、Apple、百度等公司不断推动 HTTPS 普及&#xff0c;全网 HTTPS 已是大势所趋。目前多数网站都已经支持 HTTPS 访问&#xff0c;但是在由 HTTP 转向 HTTPS 路程中&#xff0c;不少网站依然会面临很多问题。 通常用户准备访问某个网站时&#xff0c;不会在输入…

酷站设计:学习制作单页网站的10个优秀案例

这篇文章与大家分享10个学习制作单页网站的优秀案例。这些网站使用丰富多彩&#xff0c;令人惊叹的图像和干净的排版。从视差滚动和流畅的动画到固定和干净的菜单&#xff0c;你会发现单页网站的效果真的很酷&#xff0c;令人难忘&#xff01;享受这些炫目的设计并获得到启发。…

html iframe 设置半透明_防止网站被iframe内框架调用的方法

今天有人反馈了一个在iframe内无法调用网站同一个站点的页面问题并报错&#xff0c;就在网站查了一些相关的资料&#xff0c;整理一下关于禁止网站所有页面或某一个页面被iframe内框架调用的方法。网站iframe内框架调用页面报错如下Refused to display http://xxxxxx.com in a …

mysql运维常见故障_无故障(停机)时间 - MySQL数据库运维的五大指标_数据库技术_Linux公社-Linux系统门户网站...

1.2.无故障(停机)时间运维和开发不一样&#xff0c;开发最重要的是保证一定效率的情况下实现功能&#xff0c;同时程序Bug少。运维讲的是提供稳定服务的时间。用术语来说就是几个9&#xff0c;具体含义就是年度不可服务(不管是主动的还是被动的)时间除以全年时间&#xff0c;百…

使用github构建自己网站

一、本地仓库 1.1、使用git创建版本库 选中源代码文件夹&#xff0c;右击调出菜单&#xff0c;选择创建版本库 建议不要勾选这个框制作纯版本库&#xff0c;直接点确定即可 最后源代码文件夹上出现一个绿色的对号&#xff0c;并且文件夹里面出现了一个.git的新文件夹则表示…

pc端的企业网站(IT修真院test9)详解一个响应式完成的pc端项目

一&#xff1a;引入bootstrap框架 昨天一直被bootstrap栅格系统折磨。 why? 我本来想一边码字&#xff0c;一边学习栅格布局的。but不成功。这时我头脑已经昏了。 下午&#xff0c;我查看了bootstrap的官网&#xff0c;带着我的问题&#xff1a;究竟怎么使用bootstrap的框架…

一个完整的学院网站实现过程

分享 项目介绍 ​ 本项目是东北大学计算机学院网站的一个非官方版本.涉及了前端/后端/数据库/备案/https/域名/服务器等内容 Build Setup # install dependencies npm install # serve with hot reload at localhost:8080 npm run dev # build for production with minific…

[阅读笔记]仅用37行代码构造网站的全文检索

仅用37行代码构造网站的全文检索 英文标题:DotLucene: Full-Text Search for Your Intranet or Website using 37 Lines of Code 原文地址: http://www.codeproject.com/KB/aspnet/DotLuceneSearch.aspx 作者:Dan Letecky在线演示 示例下载(包含索引文件) <?xml:namespace …

30分钟搞定后台登录界面(103个后台PSD源文件、素材网站)

去年八月时要做一个OA系统为了后台界面而烦恼&#xff0c;后来写了一篇博客&#xff08;《后台管理UI的选择》&#xff09;介绍了选择过程与常用后台UI&#xff0c;令我想不到的时竟然有许多开发者与我一样都为这个事情而花费不少时间&#xff0c;最后界面效果还是不佳&#xf…

网站维护必知:网站压力测试

【IT168 专稿】互联网的普及&#xff0c;宽带的流行&#xff0c;使得越来越多的个人和单位都架设了自己的网站。而充当网站的服务器的大多是普通的PC或者低档服务器&#xff0c;这样访问者人数一多或者遭受DDos攻击&#xff0c;很容易造成瘫痪。因此我们需要网站在真正发布前对…

网站验证码制作与调用

后台 一般处理程序生成验证码&#xff1a; 1 public void ProcessRequest(HttpContext context)2 {3 int codeW 80;4 int codeH 22;5 int fontSize 16;6 string chkCode string.Empty;7 //颜色列表&…

如何在ASP.NET中使用验证通过的Windows Live ID用户登录网站

前言 现在有很多在线服务的验证&#xff0c;我曾经就写过一篇 如何在ASP.NET中创建OpenID, 这里我再介绍如何使用Windows Live ID在ASP.NET应用程序中验证用户的身份&#xff0c;说穿了这也是一种特殊验证模型&#xff0c;也就是说当在您的网站中使用Windows Live ID登录时&…