Remember to always check your PHP Error Logs. They contain the most important information related to issues your might encounter.
Common Questions
–
–
That said, if you really want to run a scan in the background every once in a while, you can do it using WP-CLI, and manually create a task (cron tab) on your server. You can ask your developer or system administrator to do this.
Access Control (Roles)
By default, only the administror has access to the Cleaner Dashboard, and any user with the manage_options role (typically, the administrator) has access to the settings.
You can override the access to the Dashboard by adding a filter on wpmc_allow_usage. The following snippet will allow editors to access it.
add_filter( 'wpmc_allow_usage', function( $allow ) {
return current_user_can( 'editor' ) || $allow;
} );
If you are interested in overring who can access the settings, you can add a filter on wpmc_allow_setup, it works exactly the same way.
Handling Issues for Developers
If you would like to handle special cases and additional detections of file usage, here are a few code snippets that you could use or adapt to your specific needs. You can add those snippets directly using the Code Snippets plugin (or add them into your functions.php file directly).
Images in category’s descriptions
add_action( 'wpmc_scan_once', 'wpmc_scan_once_post_categories', 10, 0 );
function wpmc_scan_once_post_categories() {
global $wpdb;
global $wpmc;
$descs = $wpdb->get_col( "SELECT description FROM {$wpdb->term_taxonomy} WHERE taxonomy = 'category'" );
foreach ( $descs as $desc ) {
$urls = $wpmc->get_urls_from_html( $desc );
$wpmc->add_reference_url( $urls, 'CONTENT (URL)' );
}
}
Overriding the Cleaner’s decisions
If you are a developer, you can have the last word on Media Cleaner’s decisions. For example, you might want to always set as used a Media which belongs to the administrator, or always set as non-used some filenames with contains the suffix tmp in it.
There are two hooks for this, and for both, you only need to return your final decision on the fact this media or file is being used.
Media Library Method
You need to hook into the wpmc_check_media filter. This hook will call you with those three arguments :
- $in_use: The Media Cleaner decision.
- $media_id: The Media ID.
- $is_broken: If the physical file doesn’t exist.
Let’s say my user ID is 10, and I would like Media Cleaner to suppose that all my images are indeed in use. I could add the following custom snippet.
add_filter( 'wpmc_check_media', function( $in_use, $media_id, $is_broken ) {
$post = get_post( $media_id );
if ( $post->post_author === 1 ) {
return true;
}
return $in_use;
}, 10, 3 );
Filesystem Method
You need to hook into the wpmc_check_file filter. This hook will call you with those two arguments :
- $in_use: The Media Cleaner decision.
- $file: The filepath.
Now here is the example of a code snippet that will mark all the .doc files as in-use.
add_filter( 'wpmc_check_file', function( $in_use, $file ) {
$ext = pathinfo( $file, PATHINFO_EXTENSION );
if ( $ext === 'doc' ) {
return true;
}
return $in_use;
}, 10, 2);