/network-wp-query

:electric_plug: Network-wide WP Query for Multisite environment, which supports POSTS-PER-SITE query etc. [STAND-ALONE][Plugin]

Primary LanguagePHPGNU General Public License v2.0GPL-2.0

Network WP Query

Latest Stable Version Latest Unstable Version License Build Status

A WordPress plugin that provides Network-wide WP_Query for Multisite environment.

This plugin is based on / a improved version of WP_Query_Multisite (a custom version of WP_Query_Multisite).

Installation

Manual Installation

  1. Just copy all files into <ABSPATH>wp-content/plugins/network-wp-query/.

Manual Installation (as a Must-Use plugin)

  1. Just copy all files into <ABSPATH>wp-content/mu-plugins/network-wp-query/.

  2. Move network-wp-query/loader/50-network-wp-query-loader.php into <ABSPATH>wp-content/mu-plugins/.

Installation via Composer

  1. Install via Composer.

    composer require devaloka/network-wp-query

Installation via Composer (as a Must-Use plugin)

  1. Install via Composer.

    composer require devaloka/network-wp-query
  2. Move network-wp-query directory into <ABSPATH>wp-content/mu-plugins/.

  3. Move network-wp-query/loader/50-network-wp-query-loader.php into <ABSPATH>wp-content/mu-plugins/.

Example Usage

Standard Loop

<?php $query = new WP_Query(['network' => true]); ?>

<?php if ($query->have_posts()): ?>
    <?php while ($query->have_posts()): $query->the_post(); ?>
        <?php the_content(); ?>
    <?php endwhile; ?>

    <?php wp_reset_postdata(); ?>
<?php endif; ?>

Query to several specific Sites

<?php $query = new WP_Query(['network' => true, 'sites__in' => [1, 2, 3]]); ?>

<?php if ($query->have_posts()): ?>
    <?php while ($query->have_posts()): $query->the_post(); ?>
        <?php the_content(); ?>
    <?php endwhile; ?>

    <?php wp_reset_postdata(); ?>
<?php endif; ?>

Query excluding several specific Sites

<?php $query = new WP_Query(['network' => true, 'sites__not_in' => [1, 2, 3]]); ?>

<?php if ($query->have_posts()): ?>
    <?php while ($query->have_posts()): $query->the_post(); ?>
        <?php the_content(); ?>
    <?php endwhile; ?>

    <?php wp_reset_postdata(); ?>
<?php endif; ?>

Limit the number of posts per Site

<?php $query = new WP_Query(['network' => true, 'posts_per_site' => 1]); ?>

<?php if ($query->have_posts()): ?>
    <?php while ($query->have_posts()): $query->the_post(); ?>
        <?php the_content(); ?>
    <?php endwhile; ?>

    <?php wp_reset_postdata(); ?>
<?php endif; ?>

Parameters

Name Type Description
network boolint Whether perform network-wide query.
sites__in int[] Blog IDs to include in the query.
sites__not_in int[] Blog IDs to excluded from the query.
posts_per_site int The number of posts per Site to retrieve.

References