networks_pre_query is a WordPress PHP filter that allows you to modify the network data before the query is executed. You can return a non-null value to bypass the default WordPress network queries.
Usage
add_filter('networks_pre_query', 'your_custom_function', 10, 2); function your_custom_function($network_data, $query) { // your custom code here return $network_data; }
Parameters
$network_data (array|int|null)
– The data to return, either an array of network data, an integer count of networks, or null to let WordPress perform its normal queries.$query (WP_Network_Query)
– The WP_Network_Query instance, passed by reference.
Examples
Return a specific network by ID
add_filter('networks_pre_query', 'get_specific_network', 10, 2); function get_specific_network($network_data, $query) { if (1 === $query->query_vars['network_id']) { // Return a specific network with ID 1 $network_data = array(new WP_Network(1)); } return $network_data; }
This code checks if the requested network ID is 1 and returns the corresponding WP_Network object.
Return a count of networks
add_filter('networks_pre_query', 'get_network_count', 10, 2); function get_network_count($network_data, $query) { if (isset($query->query_vars['count'])) { // Return a count of networks $network_data = 5; } return $network_data; }
This code returns the count of networks as an integer when the ‘count’ query variable is set.
Return an array of network IDs
add_filter('networks_pre_query', 'get_network_ids', 10, 2); function get_network_ids($network_data, $query) { if ('ids' === $query->query_vars['fields']) { // Return an array of network IDs $network_data = array(1, 2, 3, 4, 5); } return $network_data; }
This code returns an array of network IDs when the ‘fields’ query variable is set to ‘ids’.
Set pagination properties
add_filter('networks_pre_query', 'set_pagination_properties', 10, 2); function set_pagination_properties($network_data, $query) { // Your custom code to get network data $network_data = array(new WP_Network(1), new WP_Network(2)); // Set pagination properties $query->found_networks = 2; $query->max_num_pages = 1; return $network_data; }
This code sets the found_networks
and max_num_pages
properties of the WP_Network_Query object after retrieving the network data.
Return network data based on a custom condition
add_filter('networks_pre_query', 'get_networks_by_custom_condition', 10, 2); function get_networks_by_custom_condition($network_data, $query) { if ('custom_condition' === $query->query_vars['your_custom_var']) { // Your custom code to get network data based on the custom condition $network_data = array(new WP_Network(1), new WP_Network(2)); } return $network_data; }
This code returns network data based on a custom condition.
Filter networks based on custom meta value
add_filter('networks_pre_query', 'filter_networks_by_custom_meta', 10, 2); function filter_networks_by_custom_meta($network_data, $query) { if (isset($query->query_vars['custom_meta_key']) && isset($query->query_vars['custom_meta_value'])) { // Your custom code to get network data based on the custom meta value $network_data = array(new WP_Network(3), new WP_Network(4)); } return $network_data; }
This code filters the networks based on a custom meta key and value pair specified in the query variables.
Exclude specific networks from the result
add_filter('networks_pre_query', 'exclude_specific_networks', 10, 2); function exclude_specific_networks($network_data, $query) { // Get all network data $all_networks = array(new WP_Network(1), new WP_Network(2), new WP_Network(3), new WP_Network(4)); // Filter out specific networks (e.g., with IDs 2 and 4) $excluded_network_ids = array(2, 4); $network_data = array_filter($all_networks, function ($network) use ($excluded_network_ids) { return !in_array($network->id, $excluded_network_ids); }); return $network_data; }
This code retrieves all networks and filters out specific networks (e.g., with IDs 2 and 4) before returning the data.
Change the network order based on a custom condition
add_filter('networks_pre_query', 'change_network_order', 10, 2); function change_network_order($network_data, $query) { if ('custom_order' === $query->query_vars['your_custom_order_var']) { // Get all network data and reorder based on your custom condition $network_data = array(new WP_Network(4), new WP_Network(3), new WP_Network(2), new WP_Network(1)); } return $network_data; }
This code reorders the networks based on a custom condition specified in the query variables.
Return networks only with a specific domain
add_filter('networks_pre_query', 'get_networks_by_domain', 10, 2); function get_networks_by_domain($network_data, $query) { if (isset($query->query_vars['domain'])) { // Your custom code to get network data based on the specified domain $network_data = array(new WP_Network(1), new WP_Network(2)); } return $network_data; }
This code returns networks that have the specified domain in the query variables.
10. Return networks with a specific path
add_filter('networks_pre_query', 'get_networks_by_path', 10, 2); function get_networks_by_path($network_data, $query) { if (isset($query->query_vars['path'])) { // Your custom code to get network data based on the specified path $network_data = array(new WP_Network(3), new WP_Network(4)); } return $network_data; }
This code returns networks that have the specified path in the query variables.