网站优化

网站优化

Products

当前位置:首页 > 网站优化 >

自己动手写一个Wordpress插件-Multisite Posts Display,在同一个页面上显示多个站点的文章

GG网络技术分享 2025-03-18 16:16 0


在同一个页面上显示多个站点的文章

有助于蜘蛛爬取更多的网页。

编写一个WordPress插件,以在同一个页面上显示多个站点的文章。以下是一种可能的方法来创建这样一个插件:

<?php

/*

Plugin Name: Multisite Posts Display

Description: Display posts from multiple sites on a single page.

Version: 1.0

*/

function display_multisite_posts($atts) {

$atts = shortcode_atts(array(

'site_ids' => '',

'posts_per_site' => 5,

), $atts);

$site_ids = explode(',', $atts['site_ids']);

if (empty($site_ids)) {

return 'Please specify the site IDs in the shortcode.';

}

$output = '';

foreach ($site_ids as $site_id) {

switch_to_blog($site_id);

$args = array(

'post_type' => 'post',

'posts_per_page' => $atts['posts_per_site'],

);

$query = new WP_Query($args);

if ($query->have_posts()) {

$output .= '<h2>Site ' . $site_id . '</h2>';

$output .= '<ul>';

while ($query->have_posts()) {

$query->the_post();

$output .= '<li><a href="' . get_permalink() . '">' . get_the_title() . '</a></li>';

}

$output .= '</ul>';

}

restore_current_blog();

}

return $output;

}

add_shortcode('multisite_posts', 'display_multisite_posts');

上述代码创建了一个名为 "Multisite Posts Display" 的WordPress插件,它提供了一个名为 multisite_posts 的短代码。这个短代码接受两个参数:site_ids(要显示文章的站点ID,用逗号分隔)和posts_per_site(每个站点显示的文章数量)。您可以将此插件保存为PHP文件并将其上传到您的WordPress插件目录中,然后在WordPress后台启用它。

要在页面上显示多个站点的文章,只需在页面编辑器中使用以下短代码:

[multisite_posts site_ids="1,2,3" posts_per_site="5"]

这会显示站点ID为1、2和3的文章,并每个站点显示5篇文章。您可以根据需要自定义参数。

这个插件的示例代码是一个起点,您可以根据自己的需求扩展和定制它,以满足您的特定需求。

$output .= '<h2>Site ' . $site_id . '</h2>'; 可以换成调用站点默认分类吗

要在插件中调用每个站点的默认分类名称,您可以使用 WordPress 的 get_bloginfo() 函数来获取站点的信息,包括站点的名称。在您的插件代码中,您可以将 $output 行修改如下:

$site_name = get_bloginfo('name'); // 获取当前站点的名称

$output .= '<h2>Site: ' . $site_name . '</h2>';

这将使用 get_bloginfo('name') 获取当前站点的名称,并将其包含在标题中。这样,您可以在每个站点的文章列表上显示站点的名称。

请注意,这只会显示当前站点的名称,如果您希望在每个循环站点时显示不同站点的默认分类名称,您需要额外的逻辑来获取每个站点的默认分类名称。您可以使用 get_term() 函数来获取站点的默认分类,并显示其名称。以下是一个示例:

$site_id = get_current_blog_id(); // 获取当前站点的ID

$default_category = get_option('default_category'); // 获取默认分类的ID

$default_category_name = get_term($default_category)->name; // 获取默认分类的名称

$output .= '<h2>Site: ' . $default_category_name . '</h2>';

这段代码会获取当前站点的ID,然后获取默认分类的ID,最后获取默认分类的名称并显示在标题中。这将为每个站点显示其默认分类的名称。

[multisite_posts site_ids="1,2,3" posts_per_site="5"] 短代码在侧边栏无效
默认情况下,WordPress不会在侧边栏小工具中解析短代码。如果您希望在侧边栏中使用短代码,您可以添加以下代码到您的主题的 functions.php 文件中,以允许短代码在文本小工具中执行:

add_filter('widget_text', 'do_shortcode');

这个代码将允许在文本小工具中执行短代码,因此您应该能够在侧边栏中使用 [multisite_posts] 短代码了。

在添加这个代码之前,请确保您了解潜在的安全风险,因为允许在小工具中执行短代码可能会导致安全问题,特别是如果允许非受信任的用户访问和编辑小工具内容。如果您的网站具有访问限制或多用户功能,请小心处理并考虑相应的安全措施。

标签:

提交需求或反馈

Demand feedback