Code Monkey home page Code Monkey logo

wp-sweep's Introduction

WP-Sweep

Contributors: GamerZ
Donate link: https://lesterchan.net/site/donation/
Tags: sweep, clean, cleanup, clean up, optimize, orphan, unused, duplicated, posts, post meta, comments, comment meta, users, user meta, terms, term meta, term relationships, revisions, auto drafts, transient, database, tables, oembed Requires at least: 4.6
Tested up to: 6.6
Stable tag: 1.1.8
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html

WP-Sweep allows you to clean up unused, orphaned and duplicated data in your WordPress. It also optimizes your database tables.

Description

This plugin cleans up:

  • Revisions
  • Auto drafts
  • Deleted comments
  • Unapproved comments
  • Spammed comments
  • Deleted comments
  • Orphaned post meta
  • Orphaned comment meta
  • Orphaned user meta
  • Orphaned term meta
  • Orphan term relationships
  • Unused terms
  • Duplicated post meta
  • Duplicated comment meta
  • Duplicated user meta
  • Duplicated term meta
  • Transient options
  • Optimizes database tables
  • oEmbed caches in post meta

This plugin uses proper WordPress delete functions as much as possible instead of running direct delete MySQL queries.

Following delete functions are used:

  • wp_delete_post_revision()
  • wp_delete_post()
  • wp_delete_comment()
  • delete_post_meta()
  • delete_comment_meta()
  • delete_user_meta()
  • delete_term_meta()
  • wp_remove_object_terms()
  • wp_delete_term()
  • delete_transient()
  • delete_site_transient()

WP-Sweep WP REST API Endpoints

  • GET /wp-json/sweep/v1/count/<Name>. Get the number of items that we will be sweeping.
  • GET /wp-json/sweep/v1/details/<Name>. Get the details of the items that we will be sweeping.
  • DELETE /wp-json/sweep/v1/sweep/<Name>. Runs sweep for that particular item.

WP-Sweep WP-CLI Commands

  • wp sweep --all. Runs sweep for all items.
  • wp sweep <Name>. Runs sweep for that particular item.
  • wp sweep <Name1> <Name2>. Run sweep for the selected items.

WP-Sweep Available Items:

  • revisions
  • auto_drafts
  • deleted_posts
  • unapproved_comments
  • spam_comments
  • deleted_comments
  • transient_options
  • orphan_postmeta
  • orphan_commentmeta
  • orphan_usermeta
  • orphan_termmeta
  • orphan_term_relationships
  • unused_terms
  • duplicated_postmeta
  • duplicated_commentmeta
  • duplicated_usermeta
  • duplicated_termmeta
  • optimize_database
  • oembed_postmeta

WP-Sweep is not compatible with the following plugins:

Build Status

Code Climate Issue Count

Development

Credits

Donations

I spent most of my free time creating, updating, maintaining and supporting these plugins, if you really love my plugins and could spare me a couple of bucks, I will really appreciate it. If not feel free to use it without any obligations.

Changelog

1.1.8

  • FIXED: Added current_user_can() Check For AJAX Calls

1.1.7

  • FIXED: Pass in default blank string to fix fatal error

1.1.6

  • NEW: Re-org wp-sweep.php to inc/class-wpsweep.php
  • NEW: Bump to WordPress 6.2

1.1.5

  • NEW: Bump to WordPress 5.8

1.1.4

  • FIXED: Replaced %_transient_% with %\_transient\_%. Escape _ in MySQL if not it is being used as a wildcard character. Props @janrenn.

1.1.3

  • FIXED: Changed permissions check to activate_plugins because update_plugins will return false when DISALLOW_FILE_MODS=true.

1.1.2

  • NEW: Changed permission check to update_plugins for better MultiSite compatibility.
  • NEW: Bump min PHP version to 5.6.

1.1.1

  • NEW: wp_sweep_excluded_termids filter.

1.1.0

  • NEW: Added WP Rest API Endpoint support, sweep/v1/count/<Name>, sweep/v1/details/<Name>, and sweep/v1/sweep/<Name>
  • FIXED: Follow as close as possible to WordPress Coding Standards

1.0.12

  • NEW: Bump to WordPress 4.9
  • NEW: Update README to incompatible plugins

1.0.10

  • FIXED: Invalid plugin head 'This plugin has an invalid header.'

1.0.9

  • NEW: Support for Codeclimate
  • FIXES: Uses get_sites() on WordPress 4.6. This should fix deprecated notices.
  • FIXES: Fixes translation placeholder count. Props @pedro-mendonca.
  • FIXES: Use manage_options capability as it conflicts with Admin Menu Editor on multisite installs. Props @EusebiuOprinoiu.

1.0.8

  • NEW: Added wp_sweep_excluded_taxonomies filter to allow more than just link_category taxonomy
  • NEW: Support for WP-CLI wp sweep

1.0.7

  • FIXES: Use custom query to delete Orphaned Term Relationship if wp_remove_object_terms() fails

1.0.6

  • NEW: Delete 'languages' folder from the plugin
  • NEW: Use translate.wordpress.org to translate the plugin
  • FIXED: Works only with WordPress 4.4 because of new term meta

1.0.5

  • FIXED: apply_filters() wrong arguments

1.0.4

  • NEW: oEmbed caches in post meta Sweep
  • NEW: Add POT file for translators

1.0.3

  • NEW: AJAX Sweep All
  • NEW: AJAX Sweeping
  • NEW: View details of sweep
  • NEW: Optimize DB sweep
  • NEW: User hint and confirmation. Props @SiamKreative
  • FIXED: Division by zero. Pros @barisunver

1.0.2

  • FIXED: Use term_id for wp_remove_object_terms()
  • FIXED: number_format_i18n() issues after sweeping

1.0.1

  • NEW: Moved plugin location to WP-Admin -> Tools -> Sweep
  • NEW: Add Deleted Post Sweep
  • FIXED: Use forced_delete for wp_delete_post() and wp_delete_comment();
  • FIXED: If orphaned meta has an object id of 0, use SQL query to delete

1.0.0

  • Initial release

Installation

  1. Upload wp-sweep folder to the /wp-content/plugins/ directory
  2. Activate the WP-Sweep plugin through the 'Plugins' menu in WordPress
  3. You can access WP-Sweep via WP-Admin -> Tools -> Sweep

Screenshots

  1. WP-Sweep Administrator Page (Before Sweeping)
  2. WP-Sweep Administrator Page (Swept)

Frequently Asked Questions

Coming soon ...

Upgrade Notice

N/A

wp-sweep's People

Contributors

asgaros avatar bhubbard avatar christophherr avatar diogogomeswww avatar eusebiuoprinoiu avatar julien731 avatar lesterchan avatar nikschavan avatar pedro-mendonca avatar ramiy avatar siamkreative avatar szepeviktor avatar timse201 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

wp-sweep's Issues

Remove duplicated post meta doesn't work

image

Hey there,
I've had an issue recently with a plugin that duplicates indefinitely meta_keys for my Woocommerce products, so this plugin seemed like the right solution (I'm not sure how to do this myself in phpmyadmin..)

I have like 40000 duplicates.
But.. when I sweep, nothing happens, no error message, nothing..

I'm running this on a private SQL server.

Thank you for your help !
Bonjour de GamerZ !

Fatal error

Hello,
i try to install your plugin on Wordpress Multisite 4.7.1 and i have this issue when i try to activate.
L’extension n’a pas pu être activée, car elle a déclenché une erreur fatale.

Thank you.

Orphaned Term Relationship are not deleted #2

Hi,

After sweeping orphaned term relationships, I get 63.190 Orphaned Term Relationships Processed, but the details line still shows Orphaned Term Relationship 63,190
The count was originally 64,000+ and after several sweeps got down to 63.190, but no matter how many more sweeps I do, it sticks to 63.190.

I've run your query from issue #1 , replaced wp_ prefix with my own table prefix and this is the result http://pastebin.com/tZETkmg5 Note that the same database is used by 3 wordpress installs with different table prefixes.

Transient Options counter problem

In a table: Transient Options - 31,036
After cleaning them up got this message: 31 Transient Options Processed

Problem with number_format()?

Add sweep to remove several WordPress Defaults

Many sites leave the wordpress defaults, it might be good to add a sweep to check for them and remove them if they exist:

  • Hello World Post
  • Sample Page
  • Default Mr. WordPress Comment
  • Default Tagline

WP Sweep doesn't complete

Hi

I'm using WP Sweep to delete a lot of revisions (nearly 1300) in a local environment (xampp).

After some hours the process was not completed, so I closed the page and I have found that only 50 revisions were deleted

How can I make it work?

thanks for your plugin and time

Add Sweep for Encoding Issues within Posts

Sometimes we come across sites that have bad encoding issues in the content, would be great to sweep for these.

UPDATE wp_posts SET post_content = REPLACE(post_content, '“', '“');
UPDATE wp_posts SET post_content = REPLACE(post_content, 'â€�', '”');
UPDATE wp_posts SET post_content = REPLACE(post_content, '’', '’');
UPDATE wp_posts SET post_content = REPLACE(post_content, '‘', '‘');
UPDATE wp_posts SET post_content = REPLACE(post_content, '—', '–');
UPDATE wp_posts SET post_content = REPLACE(post_content, '–', '—');
UPDATE wp_posts SET post_content = REPLACE(post_content, '•', '-');
UPDATE wp_posts SET post_content = REPLACE(post_content, '…', '…');

UPDATE wp_comments SET comment_content = REPLACE(comment_content, '“', '“');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, 'â€�', '”');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, '’', '’');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, '‘', '‘');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, '—', '–');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, '–', '—');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, '•', '-');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, '…', '…');

Delete expired transients only

Could you add expiry filter when delete transients? As option or as built-in behavior.

$time = isset ( $_SERVER['REQUEST_TIME'] ) ? (int)$_SERVER['REQUEST_TIME'] : time() ;
$expired = $wpdb->get_col( "SELECT option_name FROM {$wpdb->options} WHERE option_name LIKE '_transient_timeout%' AND option_value < {$time};" );

foreach( $expired as $transient ) {
       $key = str_replace('_transient_timeout_', '', $transient);
       delete_transient($key);
}

https://wordpress.stackexchange.com/a/6652

Multisite?

Hi

I did a network activation for a multisite.
I would like to see a screen in the multisite section for cleaning the full multisite.
Can this be done? Do I have to go to each sub site and run it there? Or can it be run from the Network Admin?

Thanks.

Sweep notifications UX improvements

Currently, I think the UX can be confusing. In my opinion, the main issue is related to the WordPress notices. For one "section" (for instance Comment Sweep), multiple notices don't stack. Instead, the latest notice overwrite the previous one.

Therefore, users can easily miss bits of information. For instance, my screen shows "2 Auto Drafts Processed", while there was also "3 Revisions Processed".

A few possible improvements

  • Move the Sweep All button to the top. Users should have to scroll all the way to do this. I'm pretty sure most users will end up using "Sweep All" only.
  • When users click on Sweep All, show all notices at the top (instead of being on top of every section). Because currently, users has to scroll to see what happened.

A quick example

image

Lemme know what you think...

Improve bare implode

A custom builder method could

  • make it secure (each item sanitized and escaped) and
  • more readable.
// implode( '\',\'', $this->get_excluded_taxonomies() )
$this->build_sql_list( $this->get_excluded_taxonomies() )

"Division by zero" in comments tables if there are really no comments

Warning: Division by zero in /home/***/public_html/wp-content/plugins/wp-sweep/admin.php on line 184

I use Disqus in my blog, so I don't keep comments in my database. Naturally, when WP-Sweep uses the code below:

<?php echo round( ( $deleted_comments/$total_comments ) * 100, 2 ); ?>

It returns a warning of "division by zero". This is of course, one of the five lines of code that checks the comments table.

The code below works better:

<?php echo ( $total_comments > 0 ? round( ( $deleted_comments / $total_comments ) * 100, 2 ) : 0 ); ?>%

But I suggest you use a simple function that you can use anywhere to make the code cleaner:

<?php

function check_percentage( $check, $total ) {

    return ( $total > 0 ? round( ( $check / $total ) * 100, 2 ) : 0 ) . '%';

}

?>

Compared to WP-Optimize

Hi @lesterchan

First of all, I love your plugin, love the slick design and specially that it is under top level Tools.

My question is simple.

Is there a difference in the sweeping between WP Sweep and WP-Optimize ?

Let me elaborate that:

Right now i install both plugins, since i'm a perfectionist that likes to keep the database as clean as possible. Now, i'm afraid of using just Sweep (which is the one i prefer to use) since i'm not sure if it cleans and optimize DB exactly the same as WP-Optimize. See what i mean ?

Does they clean different stuff that overlap most of them, or they clean the same ?

I just want to get rid of WP-Optimize, but i feel it cleans stuffs that WP Sweep don't. Hopefully viceversa.

Thanks in advance for the reply.

Adding a 'sweep'

It would be great to have a small documentation and an example.

Clearing oEmbed Cache

I develop lots of projects that use oEmbed. It would be nice if WP-Sweep will allow me to clear oembed cache stored in the WP database.

It's not hard to implement this, you just need the search in wp_postmeta table all the fields starting with oembed and delete them. Just like you delete transians and draft's.

For more info, i found this post on the web:
https://siteorigin.com/clearing-oembed-cache/

I use this SQL to clear my embed cache:

DELETE
FROM   'wp_postmeta' 
WHERE  'meta_key' 
LIKE   '%_oembed_%'

Rami Y.
GenerateWP.com

Whitelist meta info

Hi,

Haven't checked too much the plugin, but does it have functionality to whitelist and not delete specified meta info for posts? From a quick look the impression is that it deletes everything, which may break some websites.

For example it deletes meta data for nav_item created with this plugin https://wordpress.org/support/topic/wp-sweep-delets-if-menus/
Is there a possibility that plugins can do something like this?

<?php

add_filter('wp_sweep_whitelist_meta_keys', function($metas = []) {
  $metas[] = 'this-meta-key';
  $metas[] = 'that-meta-key';
  return $metas;
});

Cheers

Add "mysql only" type option

Would be great if there was an option to bypass running everything through PHP and just do a single query to delete orphan/duplicate data when relevant. For example: I run queries to delete or find orphan meta fairly regularly on a range of quality / scale of sites. In all those times I've never cared about the actions that would have fired on deletion for those specific cases and a single MySQL query would have been just fine. As a way to offer a faster/more efficient option his seems like a simple feature that could be added if you would find it useful for your users.

Support WordPress Rest API

I would love to see support for the rest api, here is a quick working code example:

/**
 * Sweep Rest Routes initialization class.
 */
class Sweep_Rest_Api {

	/**
	 * Create the rest API routes.
	 *
	 * @access public
	 * @return void
	 */
	public function __construct() {

		
		add_action( 'rest_api_init', function(){
			register_rest_route( 'sweep/v1', 'sweep', array(
				'methods'  => array( 'get', 'delete' ),
				'callback' => array( $this, 'sweep' ),
				'permission_callback' => array( $this, 'permission_check' ),
				'args'     => array(
					'name' => array(
						'required'    => true,
						'default'     => '', 
						'description' => 'What would you like to sweep?',
						'type'        => 'string',
					),
				),
			));
		});
		
				
	}

	
	/**
	 * get_stream function.
	 * 
	 * @access public
	 * @return void
	 */
	public function sweep( WP_REST_Request $request ) {
		
		$name = $request['name'];
		
		$sweep = new WPSweep();
		
		$results = $sweep->sweep( $name );
		
		return rest_ensure_response( $results );
	
	}

	/**
	 * Check whether the function is allowed to be run.
	 *
	 * Must have either capabilities to enact action, or a valid nonce.
	 *
	 * @param  [type] $data [description]
	 * @return [type]       [description]
	 */
	public function permission_check( $data ) {
		if ( ! current_user_can( 'manage_options' ) ) {
			return new WP_Error( 'forbidden', 'You are not allowed to do that.', array( 'status' => 403 ) );
		}
		return true;
	}
	
}	
new Sweep_Rest_Api();

Feature request Delete revisions older than XX day(s)

Some times we can not delete revisions as some of them could be useful. But for sure, 1 year old revisions are not longer need it. Maybe a good way to decrease database and to keep important work is to be able to delete just older revisions.

thanks

Support for YITH WooCommerce Multi Vendor Premium plugin

Hi,

I'm Andrea from yithemes.com
I write to you because I need to add the support for your plugin and our multi vendor plugin.

The YITH WooCommerce Multi Vendor Premium plugin create a new product taxonomy to simulate a marketplace and, when an user create it for first time, this taxonomy haven't any product linked to it, but this not means it's an orphan terms.

How can I exclude the yith vendor term ?

Let me know.
Thanks
Have a nice day

AG

Missing Security Check for AJAX Accessible Functions

While reviewing the changes made in a recent version of the plugin because it was flagged by one of our security monitoring systems, we ran across a minor security issue in the plugin. The AJAX accessible functions ajax_sweep_details() and ajax_sweep() now in the file /inc/class-wpsweep.php are lacking a capabilities check to make sure only the intended users have access to them. You do have a nonce check in those functions. While a nonce check would normally do the equivalent of a capabilities check, the documentation for that states it shouldn't be relied on for that:

Nonces should never be relied on for authentication, authorization, or access control.

Add status indicator for long sweeps

If you are cleaning a large database, sweeping can take a while. Adding a status or progress indicator would be great.
Something to know the process didn't hang.

Like: xx of yyyy left.

Add Sweep to delete default links in wp_links if they remain

DELETE FROM wp_links WHERE link_url = 'http://codex.wordpress.org/';
DELETE FROM wp_links WHERE link_url = 'http://wordpress.org/news/';
DELETE FROM wp_links WHERE link_url = 'http://wordpress.org/support/';
DELETE FROM wp_links WHERE link_url = 'http://wordpress.org/extend/plugins/';
DELETE FROM wp_links WHERE link_url = 'http://wordpress.org/extend/themes/';
DELETE FROM wp_links WHERE link_url = 'http://wordpress.org/support/forum/requests-and-feedback';
DELETE FROM wp_links WHERE link_url = 'http://planet.wordpress.org/';

Beta 1.0.3: Feedback

  • Auto Draft details all say Auto Draft rather than the post/page name.
    A: Yeap, that is what is being stored in WordPress.
  • Sweep of Orphaned Term Relationship does not appear to work.
    A: Looks like you got the same error thrown by WordPress as well.
  • If Details are displayed and you press Sweep for that area, you might want to clear the details, since they no longer apply.
    A: Good point.
  • Unused Terms - Uncategorized is shown as a term that will be deleted, but I believe that is a WordPress default, so should probably be excluded.
    A: I will take a look at it
  • Unused Terms - One of the post formats supported by my theme, post-format-gallery, is shown as a term that will be deleted. Is that safe to delete? Will it be recreated?
    A: That I am not sure, it depends on the theme actually.
  • Unused Terms - I have a parent category that has nothing assigned directly to it, but it has children. It is shown as a term that will be deleted, but since it is a parent, it is actually used and should not be deleted.
    A: Good pickup. Unused Terms to be honest is tricky, so many possible cases. Thanks for picking it up. I will fix it. Maybe I will use unused tags.

Source: https://wordpress.org/support/topic/beta-testing-for-103?replies=11

Feature requests!

Hello, Lester!
I have 2 feature requests I hope you will take under consideration:

  1. Add a checkbox under the Sweep All button to ignore unused terms ( checked by default )
  2. Add the possibility to do a Sweep All ( that ignores unused terms ) on a skedule ( daily, weekly, every 2nd week and monthly )

Best regards,
Eusebiu

Division by zero

Hello, Lester!
First of all I want to say congrats for creating this plugin. I played with it on a test environment and I noticed there are warnings at the Comment Sweep section when no comments exist.
Warning: Division by zero in \wp-sweep\admin.php on lines 184, 202, 220, 238 and 256.

I'm also curious if you plan on adding automated sweeps like WP Optimize does.

Polylang

I think language and post_translations are swept out in "Orphaned Term Relationship" while belonging to Polylang.

Maybe Polylang should hook wp_sweep_excluded_taxonomies?

Taxonomies on objects other than posts are removed

Hi!

I am the author of Polylang. A user reported some issues when using WP Sweep and Polylang together. In fact, he lost the language and translations relations of his categories and post tags.

Polylang is a multilingual plugin entirely based on taxonomies. It does defines taxonomies for posts (as usual) but also taxonomies for terms (it's not frequently used by developers but possible). I am not the inventor of the concept and I have also seen plugins having taxonomies for users (although I don't remember which one). I have never seen it in a plugin, but we could also imagine to create taxonomies on comments.

I had a very quick look at your code and found:
$query = $wpdb->get_results( "SELECT tr.object_id, tr.term_taxonomy_id, tt.term_id, tt.taxonomy FROM $wpdb->term_relationships AS tr INNER JOIN $wpdb->term_taxonomy AS tt ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy != 'link_category' AND tr.object_id NOT IN (SELECT ID FROM $wpdb->posts)" );
Some other queries are similar in the way they exclude taxonomies and object ids.

I foresee 2 solutions to the issue:

  1. Add a filter to exclude more taxonomies than just 'link_category' which I could use to add Polylang taxonomies to the exclusion list.
  2. Add more object ids in your exclusion list. Not only posts but also terms and users. Potentially links (in case a plugin creates another taxonomy than 'link_category') and comments if you want to be on the safe side.

Add Sweep for Action Scheduler

I would like to see added support to clear out completed action-scheduler events. This is used by several popular plugins, WooCommerce being the biggest.

Badges

Please add codeclimate and trvis bagdes to readme.
Move badges to the top!

Compatible with Elementor

As you mentioned in the documentation of this plugin that it does not work with elementor plugin on wordpress, is still not compatible yet till now? I need this plugin to clean up my junk database because of elementor plugin, my database become huge (for about 40 Gb) with elementor and multisite inside my hosting. Please let me know this compatibility, Thankyou before

Pluggable WP-Sweep / Dynamic admin page

For example

function render_sweep_admin( $group, $slug, $title, $count, $total ) {

            ?>
            <tr>
                <td>
                    <strong><?php esc_html( $title ); ?></strong>
                    <p class="sweep-details" style="display: none;"></p>
                </td>
                <td>
                    <span class="sweep-count"><?php echo esc_html( number_format_i18n( $count ) ); ?></span>
                </td>
                <td>
                    <span class="sweep-percentage"><?php echo esc_html( WPSweep::get_instance()->format_percentage( $count, $total ) ); ?></span>
                </td>
                <td>
                    <?php if ( empty( $count ) ) : ?>
                        <?php _e( 'N/A', 'wp-sweep' ); ?>
                    <?php else : ?>
                        <button data-action="sweep" data-sweep_name="<?php echo $slug; ?>"
                            data-sweep_type="posts" data-nonce="<?php echo esc_attr( wp_create_nonce( 'wp_sweep_' . $slug ) ); ?>"
                            class="button button-primary btn-sweep"><?php _e( 'Sweep', 'wp-sweep' ); ?></button>
                        <button data-action="sweep_details" data-sweep_name="<?php echo $slug; ?>"
                            data-sweep_type="posts" data-nonce="<?php echo wp_create_nonce( 'wp_sweep_details_' . $slug ); ?>"
                            class="button btn-sweep-details"><?php _e( 'Details', 'wp-sweep' ); ?></button>
                    <?php endif; ?>
                </td>
            </tr>
            <?php
}

render_sweep_admin( 'post', 'revisions', __( 'Revisions', 'wp-sweep' ), $revisions, $total_posts );

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.