当前位置: 首页 >wordpress

wordpress mu主站调用分站数据

wordpress 2016-1-6 阅读量: 349 TAG:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
<?php
/*
 *多站点函数方法
 *
 *$showpost 每个子站点显示的最新文章数量
 *
 *使用方法 lei_multsite_recent_post(1) >> 每个子站点显示一篇最新文章
*/


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;
    }
 }
 //echo '<pre>';
 //print_r($b_id);
 //echo '</pre>';
 $newid = array_flip($b_id); //php数组函数对换键值
 $new_post_id[] = array_rand($newid,1);
 //echo '=====';
 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>';
    }
 }
}

/*

参数说明

$how_many: 要显示的多少篇最新文章

$how_long: 显示时间区间0为禁止该功能

$titleOnly:如果是true(只显示文章标题)或false(显示文章标题和站点名称)

$begin_wrap: 自定义HTML标签,如:<li>

$end_wrap: 自定义HTML标签,如:</li>

使用方法: wpmu_recent_posts_mu(5, 30, true, '<li>', '</li>');

>> 在过去的30天显示最新的5篇文章, 并且只显示文章标题。
*/


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"
);
    }
   
    //如果存在多站点ID
    if ($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号
            //echo '<pre>';
            //print_r($options);
            //echo '</pre>';
            if ($how_long > 0) {
                $thispost = $wpdb->get_results("SELECT ID, post_title FROM $blogPostsTable WHERE post_status = 'publish' 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 post_type = 'post' ORDER BY id DESC LIMIT 0,1");
            }
            //echo '<pre>';
            //print_r($thispost);
            //echo '</pre>';
            // 如果存在将输入内容
            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>";
    }
}

?>
1
2
3
4
5
6
7
<?php
echo 'two';
lei_multsite_recent_post(3);

echo '<br />first';
wpmu_recent_posts_mu(10, 30, true, '<li>', '</li>');
?>

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

来源:(微信/QQ号:909912499),欢迎分享本文,转载请保留出处!部分内容来自网络,如有侵权请联系删除处理!

相关信息

本站提供代码修改,dedecms,WordPress仿站二次开发 / PHP网站建设以及SEO优化等网络营销推广等服务。

如有需要请加QQ: 909912499