Find out if your WordPress blog contains posts with more than one category
<?php | |
/** | |
* mdm_wp_multiple_categories.php | |
* | |
* Find out if your WordPress blog contains posts with more than one category. | |
* | |
* Use as a standalone page or a function with WordPress. | |
* | |
* Function uses param to return string message or count of posts with multiple categories. | |
*/ | |
if (!defined('ABSPATH')) | |
{ | |
require_once($_SERVER['DOCUMENT_ROOT'] . '/wp-load.php'); | |
header('Content-type: text/plain'); | |
echo mdm_wp_multiple_categories(), "\r\n"; | |
exit; | |
} | |
/** | |
* Counts posts with multiple categories | |
* | |
* @param bool $text | |
* @return string|int | |
* if ($text == true) return string: informative message | |
* else return integer: count of posts with multiple categories | |
*/ | |
function mdm_wp_multiple_categories($text = true) | |
{ | |
global $wpdb; | |
$result = $wpdb->get_results("select ID from wp_posts where post_type = 'post' and post_status = 'publish'", ARRAY_N); | |
if (!is_array($result) || empty($result)) | |
{ | |
return 'No posts were found'; | |
} | |
$multiple = 0; | |
$total = count($result); | |
foreach ($result as $k => $v) | |
{ | |
$cats = get_the_category($v[0]); | |
// $cats is an array or false if no categories were found. | |
// user cannot save a post without a category, but nothing is certain. | |
// check for array first. PHP expressions are evaluated left to right. | |
if ( is_array( $cats ) && count( $cats ) > 1 ) | |
{ | |
$multiple++; | |
} | |
} // end foreach | |
return $text ? "{$multiple} / {$total} posts have multiple categories" : $multiple; | |
} // end mdm_wp_multiple_categories | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This comment has been minimized.
Updated November 28, 2014