Version Description
- FIX: E-mails not getting sent - thank you @helenekh
- Added debug information for email sending in the log.
- Tested up to WP 6.0.3
- Updated 3rd party libraries
- Updated language files for translators
Download this release
Release Info
| Developer | lkoudal |
| Plugin | |
| Version | 4.8.2 |
| Comparing to | |
| See all releases | |
Code changes from version 4.8.1 to 4.8.2
- delete-duplicate-posts.php +339 -378
- languages/delete_duplicate_posts.pot +105 -95
- readme.txt +9 -2
- sidebar.php +66 -76
- vendor/autoload.php +15 -2
- vendor/composer/InstalledVersions.php +7 -7
- vendor/composer/installed.php +4 -4
delete-duplicate-posts.php
CHANGED
|
@@ -5,11 +5,11 @@ Plugin Name: Delete Duplicate Posts
|
|
| 5 |
Plugin Script: delete-duplicate-posts.php
|
| 6 |
Plugin URI: https://cleverplugins.com
|
| 7 |
Description: Remove duplicate blogposts on your blog! Searches and removes duplicate posts and their post meta tags. You can delete posts, pages and other Custom Post Types enabled on your website.
|
| 8 |
-
Version: 4.8.
|
| 9 |
Author: cleverplugins.com
|
| 10 |
Author URI: https://cleverplugins.com
|
| 11 |
Min WP Version: 4.7
|
| 12 |
-
Max WP Version: 6.0.
|
| 13 |
Text Domain: delete-duplicate-posts
|
| 14 |
Domain Path: /languages
|
| 15 |
*/
|
|
@@ -246,55 +246,48 @@ if ( !class_exists( 'Delete_Duplicate_Posts' ) ) {
|
|
| 246 |
if ( PAnD::is_admin_notice_active( 'ddp-newsletter-14' ) && in_array( $screen->id, array( 'dashboard', 'tools_page_delete-duplicate-posts', 'plugins' ), true ) ) {
|
| 247 |
$current_user = wp_get_current_user();
|
| 248 |
?>
|
| 249 |
-
<div id="cp-ddp-newsletter" data-dismissible="ddp-newsletter-14" class="updated notice notice-success is-dismissible">
|
| 250 |
-
|
| 251 |
-
|
| 252 |
-
|
| 253 |
-
|
| 254 |
-
|
| 255 |
-
|
| 256 |
-
|
| 257 |
-
|
| 258 |
-
|
| 259 |
-
<input type="text" class="regular-text" data-inputmask="" name="fields[name]" placeholder="Name"
|
| 260 |
-
autocomplete="name" style="width:15em;" value="<?php
|
| 261 |
echo esc_html( $current_user->display_name ) ;
|
| 262 |
-
?>"
|
| 263 |
-
|
| 264 |
-
|
| 265 |
-
|
| 266 |
-
|
| 267 |
-
|
| 268 |
-
<input type="email" class="regular-text required email" data-inputmask="" name="fields[email]"
|
| 269 |
-
placeholder="Email" autocomplete="email" value="<?php
|
| 270 |
echo esc_html( $current_user->user_email ) ;
|
| 271 |
-
?>"
|
| 272 |
-
|
| 273 |
-
|
| 274 |
-
|
| 275 |
-
|
| 276 |
-
|
| 277 |
-
|
| 278 |
-
|
| 279 |
-
|
| 280 |
-
|
| 281 |
-
|
| 282 |
-
|
| 283 |
-
|
| 284 |
-
|
| 285 |
-
|
| 286 |
-
|
| 287 |
-
|
| 288 |
-
</table>
|
| 289 |
-
<input type="hidden" name="fields[signupsource]"
|
| 290 |
-
value="DDP Plugin <?php
|
| 291 |
echo esc_attr( self::get_plugin_version() ) ;
|
| 292 |
?>">
|
| 293 |
-
|
| 294 |
-
|
| 295 |
-
|
| 296 |
-
|
| 297 |
-
</div>
|
| 298 |
<?php
|
| 299 |
}
|
| 300 |
|
|
@@ -309,41 +302,38 @@ if ( !class_exists( 'Delete_Duplicate_Posts' ) ) {
|
|
| 309 |
|
| 310 |
if ( PAnD::is_admin_notice_active( 'cp-ddp-improve-notice-7' ) ) {
|
| 311 |
?>
|
| 312 |
-
<div id="cp-ddp-freemius" data-dismissible="cp-ddp-improve-notice-7" class="notice notice-success is-dismissible">
|
| 313 |
-
|
| 314 |
esc_html_e( 'Help Delete Duplicate Posts improve!', 'delete-duplicate-posts' );
|
| 315 |
?></h3>
|
| 316 |
|
| 317 |
-
|
| 318 |
-
|
| 319 |
echo esc_html__( 'Gathering non-sensitive diagnostic data about the plugin install helps us improve the plugin.', 'delete-duplicate-posts' ) . ' <a href="' . esc_url( 'https://cleverplugins.com/docs/install/non-sensitive-diagnostic-data/' ) . '" target="_blank" rel="noopener">' . esc_html__( 'Read more about what we collect.', 'delete-duplicate-posts' ) . '</a>' ;
|
| 320 |
?>
|
| 321 |
-
|
| 322 |
|
| 323 |
-
|
| 324 |
-
|
| 325 |
// translators:
|
| 326 |
printf( esc_html__( 'If you opt-in, some data about your usage of %1$s will be sent to Freemius.com. If you skip this, that\'s okay! %1$s will still work just fine.', 'delete-duplicate-posts' ), '<b>Delete Duplicate Posts</b>' );
|
| 327 |
?>
|
| 328 |
-
|
| 329 |
-
|
| 330 |
-
|
| 331 |
-
data-opt="yes"><?php
|
| 332 |
esc_html_e( 'Sure, opt-in', 'delete-duplicate-posts' );
|
| 333 |
?></a>
|
| 334 |
|
| 335 |
-
|
| 336 |
-
class="button dismiss-this"><?php
|
| 337 |
esc_html_e( 'No, thank you', 'delete-duplicate-posts' );
|
| 338 |
?></a>
|
| 339 |
-
|
| 340 |
-
|
| 341 |
-
value="<?php
|
| 342 |
echo esc_attr( wp_create_nonce( 'cp-ddp-freemius-opt' ) ) ;
|
| 343 |
?>" />
|
| 344 |
|
| 345 |
-
</div>
|
| 346 |
-
|
| 347 |
}
|
| 348 |
|
| 349 |
}
|
|
@@ -358,30 +348,26 @@ if ( !class_exists( 'Delete_Duplicate_Posts' ) ) {
|
|
| 358 |
if ( false !== $totaldeleted && 0 < $totaldeleted ) {
|
| 359 |
$totaldeleted = number_format_i18n( $totaldeleted );
|
| 360 |
?>
|
| 361 |
-
<div id="cp-ddp-reviewlink" data-dismissible="ddp-leavereview-14" class="updated notice notice-success is-dismissible">
|
| 362 |
-
|
| 363 |
-
|
| 364 |
// translators: Total number of deleted duplicates
|
| 365 |
printf( esc_html__( '%s duplicates deleted!', 'delete-duplicate-posts' ), esc_html( $totaldeleted ) );
|
| 366 |
?>
|
| 367 |
-
|
| 368 |
-
|
| 369 |
-
|
| 370 |
// translators: Asking for a review text
|
| 371 |
printf( esc_html__( "Hey, I noticed this plugin has deleted %s duplicate posts for you - that's awesome! Could you please do me a BIG favor and give it a 5-star rating on WordPress? Just to help us spread the word and boost our motivation.", 'delete-duplicate-posts' ), esc_html( $totaldeleted ) );
|
| 372 |
?>
|
| 373 |
-
|
| 374 |
|
| 375 |
-
|
| 376 |
-
|
| 377 |
-
|
| 378 |
-
|
| 379 |
-
|
| 380 |
-
|
| 381 |
-
<span class="dashicons dashicons-smiley"></span><a href="#" class="cp-ddp-dismiss-review-notice dismiss-this"
|
| 382 |
-
target="_blank" rel="noopener">I already did</a>
|
| 383 |
-
</p>
|
| 384 |
-
</div>
|
| 385 |
<?php
|
| 386 |
}
|
| 387 |
|
|
@@ -728,16 +714,17 @@ if ( !class_exists( 'Delete_Duplicate_Posts' ) ) {
|
|
| 728 |
}
|
| 729 |
|
| 730 |
/**
|
| 731 |
-
* create_redirect.
|
| 732 |
*
|
| 733 |
-
* @author
|
| 734 |
-
* @since
|
| 735 |
-
* @version
|
| 736 |
-
* @
|
| 737 |
-
* @
|
| 738 |
-
* @param
|
| 739 |
-
* @param
|
| 740 |
-
* @
|
|
|
|
| 741 |
*/
|
| 742 |
public static function create_redirect( $inurl, $targeturl, $code = 301 )
|
| 743 |
{
|
|
@@ -920,8 +907,6 @@ if ( !class_exists( 'Delete_Duplicate_Posts' ) ) {
|
|
| 920 |
|
| 921 |
if ( $postid ) {
|
| 922 |
self::timerstart( 'deletepost_' . $postid );
|
| 923 |
-
$perma = get_permalink( $dupe['ID'] );
|
| 924 |
-
$ORGperma = get_permalink( $dupe['orgID'] );
|
| 925 |
$deleteresult = wp_delete_post( $postid, true );
|
| 926 |
$timespent = self::timerstop( 'deletepost_' . $postid );
|
| 927 |
$dispcount++;
|
|
@@ -955,20 +940,15 @@ if ( !class_exists( 'Delete_Duplicate_Posts' ) ) {
|
|
| 955 |
|
| 956 |
if ( $manualrun > 0 && !wp_doing_ajax() ) {
|
| 957 |
?>
|
| 958 |
-
<div class="notice notice-success">
|
| 959 |
-
|
| 960 |
-
|
| 961 |
// translators:
|
| 962 |
printf( esc_html__( 'A total of %s duplicate posts were deleted.', 'delete-duplicate-posts' ), intval( $dispcount ) );
|
| 963 |
?>
|
| 964 |
-
|
| 965 |
-
</div>
|
| 966 |
-
|
| 967 |
-
} else {
|
| 968 |
-
$json_response = array(
|
| 969 |
-
'msg' => sprintf( esc_html__( 'A total of %s duplicate posts were deleted.', 'delete-duplicate-posts' ), intval( $dispcount ) ),
|
| 970 |
-
);
|
| 971 |
-
wp_send_json_success( $json_response );
|
| 972 |
}
|
| 973 |
|
| 974 |
}
|
|
@@ -979,17 +959,23 @@ if ( !class_exists( 'Delete_Duplicate_Posts' ) ) {
|
|
| 979 |
$blogurl = site_url();
|
| 980 |
$recipient = $options['ddp_statusmail_recipient'];
|
| 981 |
// translators:
|
| 982 |
-
$messagebody = sprintf( __( 'Hi Admin, I have deleted <strong>%1$d</strong> posts on your blog, %2$s.', 'delete-duplicate-posts' ), $dispcount, $blogurl );
|
| 983 |
-
$messagebody .= '<br><br>' . __( 'You are receiving this e-mail because you have turned on e-mail notifications by the plugin
|
| 984 |
$messagebody .= "<br><br>Made by <a href='https://cleverplugins.com' target='_blank' rel='noopener'>cleverplugins.com</a>";
|
| 985 |
$mailstatus = false;
|
| 986 |
|
| 987 |
if ( is_email( $recipient ) ) {
|
| 988 |
$mailstatus = wp_mail( $recipient, __( 'Deleted Duplicate Posts Status', 'delete-duplicate-posts' ), $messagebody );
|
|
|
|
|
|
|
|
|
|
|
|
|
| 989 |
if ( $mailstatus ) {
|
| 990 |
// translators:
|
| 991 |
self::log( sprintf( __( 'Status email sent to %s.', 'delete-duplicate-posts' ), $recipient ) );
|
|
|
|
| 992 |
}
|
|
|
|
| 993 |
} else {
|
| 994 |
// translators:
|
| 995 |
self::log( sprintf( __( 'Not a vaild email %s.', 'delete-duplicate-posts' ), $recipient ) );
|
|
@@ -999,6 +985,16 @@ if ( !class_exists( 'Delete_Duplicate_Posts' ) ) {
|
|
| 999 |
|
| 1000 |
$options['ddp_running'] = false;
|
| 1001 |
self::save_options( $options );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1002 |
}
|
| 1003 |
|
| 1004 |
/**
|
|
@@ -1420,17 +1416,17 @@ if ( !class_exists( 'Delete_Duplicate_Posts' ) ) {
|
|
| 1420 |
$options = self::get_options();
|
| 1421 |
?>
|
| 1422 |
|
| 1423 |
-
<div class="wrap">
|
| 1424 |
|
| 1425 |
-
|
| 1426 |
echo esc_html( self::get_plugin_version() ) ;
|
| 1427 |
?></span></h2>
|
| 1428 |
|
| 1429 |
-
|
| 1430 |
-
|
| 1431 |
-
|
| 1432 |
-
|
| 1433 |
-
|
| 1434 |
|
| 1435 |
if ( $options['ddp_enabled'] ) {
|
| 1436 |
$interval = $options['ddp_schedule'];
|
|
@@ -1453,76 +1449,70 @@ if ( !class_exists( 'Delete_Duplicate_Posts' ) ) {
|
|
| 1453 |
|
| 1454 |
$totaldeleted = get_option( 'ddp_deleted_duplicates' );
|
| 1455 |
?>
|
| 1456 |
-
|
| 1457 |
-
|
| 1458 |
-
|
| 1459 |
-
|
| 1460 |
-
|
| 1461 |
-
|
| 1462 |
-
|
| 1463 |
-
|
| 1464 |
-
|
| 1465 |
-
<th><?php
|
| 1466 |
esc_html_e( 'Duplicate', 'delete-duplicate-posts' );
|
| 1467 |
?></th>
|
| 1468 |
-
|
| 1469 |
esc_html_e( 'Original', 'delete-duplicate-posts' );
|
| 1470 |
?></th>
|
| 1471 |
-
|
| 1472 |
-
|
| 1473 |
-
|
| 1474 |
-
|
| 1475 |
|
| 1476 |
-
|
| 1477 |
-
|
| 1478 |
-
|
| 1479 |
-
|
| 1480 |
-
<th><?php
|
| 1481 |
esc_html_e( 'Duplicate', 'delete-duplicate-posts' );
|
| 1482 |
?></th>
|
| 1483 |
-
|
| 1484 |
esc_html_e( 'Original', 'delete-duplicate-posts' );
|
| 1485 |
?></th>
|
| 1486 |
-
|
| 1487 |
-
|
| 1488 |
-
|
| 1489 |
-
|
| 1490 |
-
|
| 1491 |
-
|
| 1492 |
wp_nonce_field( 'ddp-buttons' );
|
| 1493 |
?>
|
| 1494 |
-
|
| 1495 |
-
|
| 1496 |
-
|
| 1497 |
-
class="button button-small button-secondary"
|
| 1498 |
-
value="<?php
|
| 1499 |
esc_html_e( 'Refresh list', 'delete-duplicate-posts' );
|
| 1500 |
?>" disabled /></td>
|
| 1501 |
-
|
| 1502 |
-
class="button button-small button-primary"
|
| 1503 |
-
value="<?php
|
| 1504 |
esc_html_e( 'Delete duplicates', 'delete-duplicate-posts' );
|
| 1505 |
?>" disabled /></td>
|
| 1506 |
-
|
| 1507 |
-
|
| 1508 |
-
|
| 1509 |
-
|
| 1510 |
|
| 1511 |
-
|
| 1512 |
|
| 1513 |
-
|
| 1514 |
-
|
| 1515 |
esc_html_e( 'Settings', 'delete-duplicate-posts' );
|
| 1516 |
?></h3>
|
| 1517 |
-
|
| 1518 |
-
|
| 1519 |
$nextscheduled = wp_next_scheduled( 'ddp_cron' );
|
| 1520 |
|
| 1521 |
if ( $nextscheduled ) {
|
| 1522 |
?>
|
| 1523 |
-
|
| 1524 |
-
|
| 1525 |
-
|
| 1526 |
echo '<p class="cronstatus center">' . esc_html__( 'You have enabled automatic deletion, so I am running on automatic. I will take care of everything...', 'delete-duplicate-posts' ) . '</p>' ;
|
| 1527 |
echo '<p class="center">' ;
|
| 1528 |
echo sprintf(
|
|
@@ -1533,27 +1523,26 @@ if ( !class_exists( 'Delete_Duplicate_Posts' ) ) {
|
|
| 1533 |
) ;
|
| 1534 |
echo '</p>' ;
|
| 1535 |
?>
|
| 1536 |
-
|
| 1537 |
<?php
|
| 1538 |
}
|
| 1539 |
|
| 1540 |
?>
|
| 1541 |
-
|
| 1542 |
-
|
| 1543 |
-
|
| 1544 |
wp_nonce_field( 'ddp-update-options' );
|
| 1545 |
?>
|
| 1546 |
-
|
| 1547 |
|
| 1548 |
|
| 1549 |
-
|
| 1550 |
-
|
| 1551 |
-
for="ddp_pts"><?php
|
| 1552 |
esc_html_e( 'Which post types?:', 'delete-duplicate-posts' );
|
| 1553 |
?></label>
|
| 1554 |
-
|
| 1555 |
-
|
| 1556 |
-
|
| 1557 |
$builtin = array( 'post', 'page', 'attachment' );
|
| 1558 |
$args = array(
|
| 1559 |
'public' => true,
|
|
@@ -1567,8 +1556,8 @@ if ( !class_exists( 'Delete_Duplicate_Posts' ) ) {
|
|
| 1567 |
|
| 1568 |
if ( $post_types ) {
|
| 1569 |
?>
|
| 1570 |
-
|
| 1571 |
-
|
| 1572 |
$step = 0;
|
| 1573 |
if ( !is_array( $checked_post_types ) ) {
|
| 1574 |
$checked_post_types = array();
|
|
@@ -1576,24 +1565,21 @@ if ( !class_exists( 'Delete_Duplicate_Posts' ) ) {
|
|
| 1576 |
foreach ( $post_types as $pt ) {
|
| 1577 |
$checked = array_search( $pt, $checked_post_types, true );
|
| 1578 |
?>
|
| 1579 |
-
|
| 1580 |
echo esc_attr( $step ) ;
|
| 1581 |
-
?>"
|
| 1582 |
-
value="<?php
|
| 1583 |
echo esc_html( $pt ) ;
|
| 1584 |
-
?>"
|
| 1585 |
-
<?php
|
| 1586 |
if ( false !== $checked ) {
|
| 1587 |
echo ' checked' ;
|
| 1588 |
}
|
| 1589 |
-
?>
|
| 1590 |
-
|
| 1591 |
-
<label for="ddp_pt-<?php
|
| 1592 |
echo esc_attr( $step ) ;
|
| 1593 |
?>"><?php
|
| 1594 |
echo esc_html( $pt ) ;
|
| 1595 |
?></label>
|
| 1596 |
-
|
| 1597 |
// Count for each post type
|
| 1598 |
$postinfo = wp_count_posts( $pt );
|
| 1599 |
$othercount = 0;
|
|
@@ -1603,31 +1589,31 @@ if ( !class_exists( 'Delete_Duplicate_Posts' ) ) {
|
|
| 1603 |
// translators: Total number of deleted duplicates
|
| 1604 |
echo '<small>' . sprintf( esc_html__( '(%s total found)', 'delete-duplicate-posts' ), esc_html( number_format_i18n( $othercount ) ) ) . '</small>' ;
|
| 1605 |
?>
|
| 1606 |
-
|
| 1607 |
<?php
|
| 1608 |
$step++;
|
| 1609 |
}
|
| 1610 |
?>
|
| 1611 |
-
|
| 1612 |
-
|
| 1613 |
}
|
| 1614 |
|
| 1615 |
?>
|
| 1616 |
-
|
| 1617 |
-
|
| 1618 |
esc_html_e( 'Choose which post types to scan for duplicates.', 'delete-duplicate-posts' );
|
| 1619 |
?>
|
| 1620 |
-
|
| 1621 |
-
|
| 1622 |
-
|
| 1623 |
|
| 1624 |
-
|
| 1625 |
-
|
| 1626 |
esc_html_e( 'Post status', 'delete-duplicate-posts' );
|
| 1627 |
?></label>
|
| 1628 |
-
|
| 1629 |
-
|
| 1630 |
-
|
| 1631 |
$stati = array(
|
| 1632 |
'publish' => (object) array(
|
| 1633 |
'label' => 'Published',
|
|
@@ -1638,132 +1624,120 @@ if ( !class_exists( 'Delete_Duplicate_Posts' ) ) {
|
|
| 1638 |
|
| 1639 |
if ( $stati ) {
|
| 1640 |
?>
|
| 1641 |
-
|
| 1642 |
-
|
| 1643 |
$staticount = count( $stati );
|
| 1644 |
foreach ( $stati as $key => $st ) {
|
| 1645 |
|
| 1646 |
if ( $st->show_in_admin_status_list ) {
|
| 1647 |
$checked = array_search( $key, $checked_post_stati, true );
|
| 1648 |
?>
|
| 1649 |
-
|
| 1650 |
-
|
| 1651 |
echo esc_attr( $key ) ;
|
| 1652 |
-
?>"
|
| 1653 |
-
value="<?php
|
| 1654 |
echo esc_attr( $key ) ;
|
| 1655 |
-
?>"
|
| 1656 |
-
<?php
|
| 1657 |
if ( false !== $checked ) {
|
| 1658 |
echo ' checked' ;
|
| 1659 |
}
|
| 1660 |
if ( 1 === $staticount ) {
|
| 1661 |
echo ' disabled' ;
|
| 1662 |
}
|
| 1663 |
-
?>
|
| 1664 |
-
/><label
|
| 1665 |
-
for="ddp_pstatus-<?php
|
| 1666 |
echo esc_attr( $key ) ;
|
| 1667 |
?>"><?php
|
| 1668 |
echo esc_html( $key . ' (' . $st->label . ')' ) ;
|
| 1669 |
?></label>
|
| 1670 |
-
|
| 1671 |
-
|
| 1672 |
$step++;
|
| 1673 |
}
|
| 1674 |
|
| 1675 |
}
|
| 1676 |
?>
|
| 1677 |
-
|
| 1678 |
-
|
| 1679 |
}
|
| 1680 |
|
| 1681 |
?>
|
| 1682 |
-
|
| 1683 |
|
| 1684 |
|
| 1685 |
-
|
| 1686 |
-
|
| 1687 |
$comparemethod = 'titlecompare';
|
| 1688 |
global $ddp_fs ;
|
| 1689 |
?>
|
| 1690 |
-
|
| 1691 |
-
|
| 1692 |
esc_html_e( 'Comparison Method', 'delete-duplicate-posts' );
|
| 1693 |
?></th>
|
| 1694 |
-
|
| 1695 |
-
|
| 1696 |
|
| 1697 |
-
|
| 1698 |
-
|
| 1699 |
-
|
| 1700 |
-
<?php
|
| 1701 |
checked( 'titlecompare', $comparemethod );
|
| 1702 |
?> />
|
| 1703 |
-
|
| 1704 |
esc_html_e( 'Compare by title (default)', 'delete-duplicate-posts' );
|
| 1705 |
?>
|
| 1706 |
-
|
| 1707 |
-
class="optiondesc"><?php
|
| 1708 |
esc_html_e( 'Looks at the title of the post itself.', 'delete-duplicate-posts' );
|
| 1709 |
?></span>
|
| 1710 |
-
|
| 1711 |
|
| 1712 |
-
|
| 1713 |
|
| 1714 |
-
|
| 1715 |
global $ddp_fs ;
|
| 1716 |
?>
|
| 1717 |
-
|
| 1718 |
-
|
| 1719 |
-
|
| 1720 |
-
|
| 1721 |
-
|
| 1722 |
-
for="ddp_keep"><?php
|
| 1723 |
esc_html_e( 'Delete which posts?:', 'delete-duplicate-posts' );
|
| 1724 |
?></label></th>
|
| 1725 |
-
|
| 1726 |
|
| 1727 |
-
|
| 1728 |
-
|
| 1729 |
-
<?php
|
| 1730 |
if ( 'oldest' === $options['ddp_keep'] ) {
|
| 1731 |
echo 'selected="selected"' ;
|
| 1732 |
}
|
| 1733 |
-
|
| 1734 |
-
><?php
|
| 1735 |
esc_html_e( 'Keep oldest', 'delete-duplicate-posts' );
|
| 1736 |
?></option>
|
| 1737 |
-
|
| 1738 |
-
<?php
|
| 1739 |
if ( 'latest' === $options['ddp_keep'] ) {
|
| 1740 |
echo 'selected="selected"' ;
|
| 1741 |
}
|
| 1742 |
-
|
| 1743 |
-
><?php
|
| 1744 |
esc_html_e( 'Keep latest', 'delete-duplicate-posts' );
|
| 1745 |
?></option>
|
| 1746 |
-
|
| 1747 |
-
|
| 1748 |
-
|
| 1749 |
esc_html_e( 'Keep the oldest or the latest version of duplicates? Default is keeping the oldest, and deleting any subsequent duplicate posts', 'delete-duplicate-posts' );
|
| 1750 |
?>
|
| 1751 |
-
|
| 1752 |
-
|
| 1753 |
-
|
| 1754 |
|
| 1755 |
|
| 1756 |
|
| 1757 |
|
| 1758 |
-
|
| 1759 |
-
|
| 1760 |
-
for="ddp_resultslimit"><?php
|
| 1761 |
esc_html_e( 'Find how many duplicates:', 'delete-duplicate-posts' );
|
| 1762 |
?></label>
|
| 1763 |
-
|
| 1764 |
-
|
| 1765 |
|
| 1766 |
-
|
| 1767 |
$dupe_options = array(
|
| 1768 |
0 => __( 'No limit', 'delete-duplicate-posts' ),
|
| 1769 |
10000 => number_format_i18n( '10000' ),
|
|
@@ -1777,218 +1751,205 @@ if ( !class_exists( 'Delete_Duplicate_Posts' ) ) {
|
|
| 1777 |
10 => '10',
|
| 1778 |
);
|
| 1779 |
?>
|
| 1780 |
-
|
| 1781 |
-
|
| 1782 |
foreach ( $dupe_options as $key => $label ) {
|
| 1783 |
?>
|
| 1784 |
-
|
| 1785 |
echo esc_attr( $key ) ;
|
| 1786 |
-
?>"
|
| 1787 |
-
<?php
|
| 1788 |
selected( $options['ddp_resultslimit'], $key );
|
| 1789 |
?>>
|
| 1790 |
-
|
| 1791 |
echo esc_attr( $label ) ;
|
| 1792 |
?></option>
|
| 1793 |
-
|
| 1794 |
}
|
| 1795 |
?>
|
| 1796 |
-
|
| 1797 |
|
| 1798 |
-
|
| 1799 |
-
|
| 1800 |
esc_html_e( 'If you have many duplicates, the plugin might time out before finding them all. Try limiting the amount of duplicates here. Default: Unlimited.', 'delete-duplicate-posts' );
|
| 1801 |
?>
|
| 1802 |
-
|
| 1803 |
-
|
| 1804 |
-
|
| 1805 |
|
| 1806 |
|
| 1807 |
|
| 1808 |
-
|
| 1809 |
?>
|
| 1810 |
|
| 1811 |
-
|
| 1812 |
-
|
| 1813 |
-
|
| 1814 |
-
|
| 1815 |
-
|
| 1816 |
|
| 1817 |
-
|
| 1818 |
-
|
| 1819 |
esc_html_e( 'Enable automatic deletion?:', 'delete-duplicate-posts' );
|
| 1820 |
?>
|
| 1821 |
|
| 1822 |
-
|
| 1823 |
-
|
| 1824 |
-
|
| 1825 |
-
<?php
|
| 1826 |
if ( true === $options['ddp_enabled'] ) {
|
| 1827 |
echo 'checked="checked"' ;
|
| 1828 |
}
|
| 1829 |
-
|
| 1830 |
-
>
|
| 1831 |
-
|
| 1832 |
-
<?php
|
| 1833 |
esc_html_e( 'Clean duplicates automatically.', 'delete-duplicate-posts' );
|
| 1834 |
?></p>
|
| 1835 |
-
|
| 1836 |
-
|
| 1837 |
-
|
| 1838 |
|
| 1839 |
|
| 1840 |
-
|
| 1841 |
-
|
| 1842 |
esc_html_e( 'How often?:', 'delete-duplicate-posts' );
|
| 1843 |
?></label>
|
| 1844 |
-
|
| 1845 |
-
|
| 1846 |
|
| 1847 |
-
|
| 1848 |
-
|
| 1849 |
$schedules = wp_get_schedules();
|
| 1850 |
if ( $schedules ) {
|
| 1851 |
foreach ( $schedules as $key => $sch ) {
|
| 1852 |
?>
|
| 1853 |
-
|
| 1854 |
echo esc_attr( $key ) ;
|
| 1855 |
-
?>"
|
| 1856 |
-
<?php
|
| 1857 |
if ( isset( $options['ddp_schedule'] ) && esc_attr( $key ) === $options['ddp_schedule'] ) {
|
| 1858 |
echo esc_html( 'selected="selected"' ) ;
|
| 1859 |
}
|
| 1860 |
-
|
| 1861 |
-
><?php
|
| 1862 |
echo esc_html( $sch['display'] ) ;
|
| 1863 |
?></option>
|
| 1864 |
<?php
|
| 1865 |
}
|
| 1866 |
}
|
| 1867 |
?>
|
| 1868 |
-
|
| 1869 |
-
|
| 1870 |
-
|
| 1871 |
esc_html_e( 'How often should the cron job run?', 'delete-duplicate-posts' );
|
| 1872 |
?></p>
|
| 1873 |
-
|
| 1874 |
-
|
| 1875 |
-
|
| 1876 |
-
|
| 1877 |
-
|
| 1878 |
-
|
| 1879 |
-
|
| 1880 |
|
| 1881 |
-
|
| 1882 |
-
|
| 1883 |
esc_html_e( 'Send status mail?:', 'delete-duplicate-posts' );
|
| 1884 |
?></th>
|
| 1885 |
-
|
| 1886 |
-
|
| 1887 |
-
|
| 1888 |
-
<?php
|
| 1889 |
if ( isset( $options['ddp_statusmail'] ) && true === $options['ddp_statusmail'] ) {
|
| 1890 |
echo 'checked="checked"' ;
|
| 1891 |
}
|
| 1892 |
-
|
| 1893 |
-
>
|
| 1894 |
-
|
| 1895 |
-
<?php
|
| 1896 |
esc_html_e( 'Sends a status email if duplicates have been found.', 'delete-duplicate-posts' );
|
| 1897 |
?>
|
| 1898 |
-
|
| 1899 |
-
|
| 1900 |
-
|
| 1901 |
-
|
| 1902 |
|
| 1903 |
-
|
| 1904 |
-
|
| 1905 |
esc_html_e( 'Email recipient:', 'delete-duplicate-posts' );
|
| 1906 |
?></th>
|
| 1907 |
-
|
| 1908 |
-
|
| 1909 |
|
| 1910 |
-
|
| 1911 |
-
name="ddp_statusmail_recipient"
|
| 1912 |
-
value="<?php
|
| 1913 |
echo esc_html( $options['ddp_statusmail_recipient'] ) ;
|
| 1914 |
?>">
|
| 1915 |
-
|
| 1916 |
-
|
| 1917 |
esc_html_e( 'Who should get the notification email.', 'delete-duplicate-posts' );
|
| 1918 |
?></p>
|
| 1919 |
-
|
| 1920 |
-
|
| 1921 |
-
|
| 1922 |
|
| 1923 |
|
| 1924 |
|
| 1925 |
-
|
| 1926 |
-
|
| 1927 |
-
|
| 1928 |
-
|
| 1929 |
-
|
| 1930 |
|
| 1931 |
-
|
| 1932 |
-
|
| 1933 |
esc_html_e( 'Enable debug logging?:', 'delete-duplicate-posts' );
|
| 1934 |
?></th>
|
| 1935 |
-
|
| 1936 |
-
|
| 1937 |
-
|
| 1938 |
-
<?php
|
| 1939 |
if ( isset( $options['ddp_debug'] ) && true === $options['ddp_debug'] ) {
|
| 1940 |
echo 'checked="checked"' ;
|
| 1941 |
}
|
| 1942 |
-
|
| 1943 |
-
>
|
| 1944 |
-
|
| 1945 |
-
<?php
|
| 1946 |
esc_html_e( 'Should only be enabled if debugging a problem.', 'delete-duplicate-posts' );
|
| 1947 |
?>
|
| 1948 |
-
|
| 1949 |
-
|
| 1950 |
-
|
| 1951 |
-
|
| 1952 |
-
|
| 1953 |
-
value="<?php
|
| 1954 |
esc_html_e( 'Save Settings', 'delete-duplicate-posts' );
|
| 1955 |
?>" /></th>
|
| 1956 |
-
|
| 1957 |
-
|
| 1958 |
-
|
| 1959 |
-
|
| 1960 |
-
|
| 1961 |
-
|
| 1962 |
esc_html_e( 'The Log', 'delete-duplicate-posts' );
|
| 1963 |
?></h3>
|
| 1964 |
-
|
| 1965 |
-
|
| 1966 |
-
|
| 1967 |
-
|
| 1968 |
-
|
| 1969 |
-
|
| 1970 |
-
|
| 1971 |
wp_nonce_field( 'ddp_clearlog_nonce' );
|
| 1972 |
?>
|
| 1973 |
-
|
| 1974 |
-
value="<?php
|
| 1975 |
esc_html_e( 'Reset log', 'delete-duplicate-posts' );
|
| 1976 |
?>" />
|
| 1977 |
-
|
| 1978 |
-
|
| 1979 |
-
|
| 1980 |
-
|
| 1981 |
include_once 'sidebar.php';
|
| 1982 |
if ( function_exists( 'ddp_fs' ) ) {
|
| 1983 |
global $ddp_fs ;
|
| 1984 |
}
|
| 1985 |
?>
|
| 1986 |
|
| 1987 |
-
|
| 1988 |
-
|
| 1989 |
|
| 1990 |
-
</div>
|
| 1991 |
-
|
| 1992 |
}
|
| 1993 |
|
| 1994 |
}
|
| 5 |
Plugin Script: delete-duplicate-posts.php
|
| 6 |
Plugin URI: https://cleverplugins.com
|
| 7 |
Description: Remove duplicate blogposts on your blog! Searches and removes duplicate posts and their post meta tags. You can delete posts, pages and other Custom Post Types enabled on your website.
|
| 8 |
+
Version: 4.8.2
|
| 9 |
Author: cleverplugins.com
|
| 10 |
Author URI: https://cleverplugins.com
|
| 11 |
Min WP Version: 4.7
|
| 12 |
+
Max WP Version: 6.0.3
|
| 13 |
Text Domain: delete-duplicate-posts
|
| 14 |
Domain Path: /languages
|
| 15 |
*/
|
| 246 |
if ( PAnD::is_admin_notice_active( 'ddp-newsletter-14' ) && in_array( $screen->id, array( 'dashboard', 'tools_page_delete-duplicate-posts', 'plugins' ), true ) ) {
|
| 247 |
$current_user = wp_get_current_user();
|
| 248 |
?>
|
| 249 |
+
<div id="cp-ddp-newsletter" data-dismissible="ddp-newsletter-14" class="updated notice notice-success is-dismissible">
|
| 250 |
+
<h3>Delete Duplicate Posts Newsletter</h3>
|
| 251 |
+
<h4>Please sign up for our newsletter to learn about changes and improvements to the plugin.</h4>
|
| 252 |
+
<form class="ml-block-form" action="https://static.mailerlite.com/webforms/submit/l2v7x5" data-code="l2v7x5" method="post" target="_blank">
|
| 253 |
+
<table>
|
| 254 |
+
<tbody>
|
| 255 |
+
<tr>
|
| 256 |
+
<td>
|
| 257 |
+
<div class="ml-field-group ml-field-name">
|
| 258 |
+
<input type="text" class="regular-text" data-inputmask="" name="fields[name]" placeholder="Name" autocomplete="name" style="width:15em;" value="<?php
|
|
|
|
|
|
|
| 259 |
echo esc_html( $current_user->display_name ) ;
|
| 260 |
+
?>" required="required">
|
| 261 |
+
</div>
|
| 262 |
+
</td>
|
| 263 |
+
<td>
|
| 264 |
+
<div class="ml-field-group ml-field-email ml-validate-email ml-validate-required">
|
| 265 |
+
<input type="email" class="regular-text required email" data-inputmask="" name="fields[email]" placeholder="Email" autocomplete="email" value="<?php
|
|
|
|
|
|
|
| 266 |
echo esc_html( $current_user->user_email ) ;
|
| 267 |
+
?>" required="required">
|
| 268 |
+
</div>
|
| 269 |
+
</td>
|
| 270 |
+
<td>
|
| 271 |
+
<button type="submit" class="button">Subscribe</button>
|
| 272 |
+
</td>
|
| 273 |
+
</tr>
|
| 274 |
+
<tr>
|
| 275 |
+
<td colspan="3">
|
| 276 |
+
<div class="privacy-policy">
|
| 277 |
+
<p>You can unsubscribe anytime. For more details, review our <a href="https://cleverplugins.com/privacy-policy/" target="_blank">Privacy Policy</a>.</p>
|
| 278 |
+
</div>
|
| 279 |
+
</td>
|
| 280 |
+
</tr>
|
| 281 |
+
</table>
|
| 282 |
+
</table>
|
| 283 |
+
<input type="hidden" name="fields[signupsource]" value="DDP Plugin <?php
|
|
|
|
|
|
|
|
|
|
| 284 |
echo esc_attr( self::get_plugin_version() ) ;
|
| 285 |
?>">
|
| 286 |
+
<input type="hidden" name="ml-submit" value="1">
|
| 287 |
+
<input type="hidden" name="anticsrf" value="true">
|
| 288 |
+
</form>
|
| 289 |
+
<p><small>Signup form is shown every 14 days until dismissed</small></p>
|
| 290 |
+
</div>
|
| 291 |
<?php
|
| 292 |
}
|
| 293 |
|
| 302 |
|
| 303 |
if ( PAnD::is_admin_notice_active( 'cp-ddp-improve-notice-7' ) ) {
|
| 304 |
?>
|
| 305 |
+
<div id="cp-ddp-freemius" data-dismissible="cp-ddp-improve-notice-7" class="notice notice-success is-dismissible">
|
| 306 |
+
<h3><?php
|
| 307 |
esc_html_e( 'Help Delete Duplicate Posts improve!', 'delete-duplicate-posts' );
|
| 308 |
?></h3>
|
| 309 |
|
| 310 |
+
<p>
|
| 311 |
+
<?php
|
| 312 |
echo esc_html__( 'Gathering non-sensitive diagnostic data about the plugin install helps us improve the plugin.', 'delete-duplicate-posts' ) . ' <a href="' . esc_url( 'https://cleverplugins.com/docs/install/non-sensitive-diagnostic-data/' ) . '" target="_blank" rel="noopener">' . esc_html__( 'Read more about what we collect.', 'delete-duplicate-posts' ) . '</a>' ;
|
| 313 |
?>
|
| 314 |
+
</p>
|
| 315 |
|
| 316 |
+
<p>
|
| 317 |
+
<?php
|
| 318 |
// translators:
|
| 319 |
printf( esc_html__( 'If you opt-in, some data about your usage of %1$s will be sent to Freemius.com. If you skip this, that\'s okay! %1$s will still work just fine.', 'delete-duplicate-posts' ), '<b>Delete Duplicate Posts</b>' );
|
| 320 |
?>
|
| 321 |
+
</p>
|
| 322 |
+
<p>
|
| 323 |
+
<a href="javascript:;" class="button button-primary" onclick="cp_ddp_freemius_opt_in(this)" data-opt="yes"><?php
|
|
|
|
| 324 |
esc_html_e( 'Sure, opt-in', 'delete-duplicate-posts' );
|
| 325 |
?></a>
|
| 326 |
|
| 327 |
+
<a href="javascript:;" class="button dismiss-this"><?php
|
|
|
|
| 328 |
esc_html_e( 'No, thank you', 'delete-duplicate-posts' );
|
| 329 |
?></a>
|
| 330 |
+
</p>
|
| 331 |
+
<input type="hidden" id="cp-ddp-freemius-opt-nonce" value="<?php
|
|
|
|
| 332 |
echo esc_attr( wp_create_nonce( 'cp-ddp-freemius-opt' ) ) ;
|
| 333 |
?>" />
|
| 334 |
|
| 335 |
+
</div>
|
| 336 |
+
<?php
|
| 337 |
}
|
| 338 |
|
| 339 |
}
|
| 348 |
if ( false !== $totaldeleted && 0 < $totaldeleted ) {
|
| 349 |
$totaldeleted = number_format_i18n( $totaldeleted );
|
| 350 |
?>
|
| 351 |
+
<div id="cp-ddp-reviewlink" data-dismissible="ddp-leavereview-14" class="updated notice notice-success is-dismissible">
|
| 352 |
+
<h3>
|
| 353 |
+
<?php
|
| 354 |
// translators: Total number of deleted duplicates
|
| 355 |
printf( esc_html__( '%s duplicates deleted!', 'delete-duplicate-posts' ), esc_html( $totaldeleted ) );
|
| 356 |
?>
|
| 357 |
+
</h3>
|
| 358 |
+
<p>
|
| 359 |
+
<?php
|
| 360 |
// translators: Asking for a review text
|
| 361 |
printf( esc_html__( "Hey, I noticed this plugin has deleted %s duplicate posts for you - that's awesome! Could you please do me a BIG favor and give it a 5-star rating on WordPress? Just to help us spread the word and boost our motivation.", 'delete-duplicate-posts' ), esc_html( $totaldeleted ) );
|
| 362 |
?>
|
| 363 |
+
</p>
|
| 364 |
|
| 365 |
+
<p>
|
| 366 |
+
<a href="https://wordpress.org/support/plugin/delete-duplicate-posts/reviews/?filter=5#new-post" class="cp-ddp-dismiss-review-notice cp-ddp-reviewlink button-primary dismiss-this" target="_blank" rel="noopener">Ok, you deserve it</a>
|
| 367 |
+
<span class="dashicons dashicons-calendar"></span><a href="#" class="cp-ddp-dismiss-review-notice dismiss-this" target="_blank" rel="noopener">Nope, maybe later</a>
|
| 368 |
+
<span class="dashicons dashicons-smiley"></span><a href="#" class="cp-ddp-dismiss-review-notice dismiss-this" target="_blank" rel="noopener">I already did</a>
|
| 369 |
+
</p>
|
| 370 |
+
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
| 371 |
<?php
|
| 372 |
}
|
| 373 |
|
| 714 |
}
|
| 715 |
|
| 716 |
/**
|
| 717 |
+
* create_redirect.
|
| 718 |
*
|
| 719 |
+
* @author Lars Koudal
|
| 720 |
+
* @since v0.0.1
|
| 721 |
+
* @version v1.0.0 Friday, July 2nd, 2021.
|
| 722 |
+
* @version v1.0.1 Tuesday, October 18th, 2022.
|
| 723 |
+
* @access public static
|
| 724 |
+
* @param mixed $inurl
|
| 725 |
+
* @param mixed $targeturl
|
| 726 |
+
* @param integer $code Default: 301
|
| 727 |
+
* @return void
|
| 728 |
*/
|
| 729 |
public static function create_redirect( $inurl, $targeturl, $code = 301 )
|
| 730 |
{
|
| 907 |
|
| 908 |
if ( $postid ) {
|
| 909 |
self::timerstart( 'deletepost_' . $postid );
|
|
|
|
|
|
|
| 910 |
$deleteresult = wp_delete_post( $postid, true );
|
| 911 |
$timespent = self::timerstop( 'deletepost_' . $postid );
|
| 912 |
$dispcount++;
|
| 940 |
|
| 941 |
if ( $manualrun > 0 && !wp_doing_ajax() ) {
|
| 942 |
?>
|
| 943 |
+
<div class="notice notice-success">
|
| 944 |
+
<p>
|
| 945 |
+
<?php
|
| 946 |
// translators:
|
| 947 |
printf( esc_html__( 'A total of %s duplicate posts were deleted.', 'delete-duplicate-posts' ), intval( $dispcount ) );
|
| 948 |
?>
|
| 949 |
+
</p>
|
| 950 |
+
</div>
|
| 951 |
+
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 952 |
}
|
| 953 |
|
| 954 |
}
|
| 959 |
$blogurl = site_url();
|
| 960 |
$recipient = $options['ddp_statusmail_recipient'];
|
| 961 |
// translators:
|
| 962 |
+
$messagebody = sprintf( __( 'Hi Admin, I have deleted <strong>%1$d</strong> duplicated posts on your blog, %2$s.', 'delete-duplicate-posts' ), $dispcount, $blogurl );
|
| 963 |
+
$messagebody .= '<br><br>' . __( 'You are receiving this e-mail because you have turned on e-mail notifications by the plugin' ) . ' ' . '<a href="https://cleverplugins.com/delete-duplicate-posts/" target="_blank" rel="noopener">Delete Duplicate Posts</a>';
|
| 964 |
$messagebody .= "<br><br>Made by <a href='https://cleverplugins.com' target='_blank' rel='noopener'>cleverplugins.com</a>";
|
| 965 |
$mailstatus = false;
|
| 966 |
|
| 967 |
if ( is_email( $recipient ) ) {
|
| 968 |
$mailstatus = wp_mail( $recipient, __( 'Deleted Duplicate Posts Status', 'delete-duplicate-posts' ), $messagebody );
|
| 969 |
+
if ( $options['ddp_debug'] ) {
|
| 970 |
+
self::log( sprintf( __( 'DEBUG: Sending email: %1$s ', 'delete-duplicate-posts' ), print_r( $mailstatus ) ) );
|
| 971 |
+
}
|
| 972 |
+
|
| 973 |
if ( $mailstatus ) {
|
| 974 |
// translators:
|
| 975 |
self::log( sprintf( __( 'Status email sent to %s.', 'delete-duplicate-posts' ), $recipient ) );
|
| 976 |
+
} else {
|
| 977 |
}
|
| 978 |
+
|
| 979 |
} else {
|
| 980 |
// translators:
|
| 981 |
self::log( sprintf( __( 'Not a vaild email %s.', 'delete-duplicate-posts' ), $recipient ) );
|
| 985 |
|
| 986 |
$options['ddp_running'] = false;
|
| 987 |
self::save_options( $options );
|
| 988 |
+
// Lets return a response
|
| 989 |
+
|
| 990 |
+
if ( $manualrun > 0 && !wp_doing_ajax() ) {
|
| 991 |
+
} else {
|
| 992 |
+
$json_response = array(
|
| 993 |
+
'msg' => sprintf( esc_html__( 'A total of %s duplicate posts were deleted.', 'delete-duplicate-posts' ), intval( $dispcount ) ),
|
| 994 |
+
);
|
| 995 |
+
wp_send_json_success( $json_response );
|
| 996 |
+
}
|
| 997 |
+
|
| 998 |
}
|
| 999 |
|
| 1000 |
/**
|
| 1416 |
$options = self::get_options();
|
| 1417 |
?>
|
| 1418 |
|
| 1419 |
+
<div class="wrap">
|
| 1420 |
|
| 1421 |
+
<h2>Delete Duplicate Posts <span>v. <?php
|
| 1422 |
echo esc_html( self::get_plugin_version() ) ;
|
| 1423 |
?></span></h2>
|
| 1424 |
|
| 1425 |
+
<div class="ddp_content_wrapper">
|
| 1426 |
+
<div class="ddp_content_cell">
|
| 1427 |
+
<div id="ddp_container">
|
| 1428 |
+
<div id="dashboard">
|
| 1429 |
+
<?php
|
| 1430 |
|
| 1431 |
if ( $options['ddp_enabled'] ) {
|
| 1432 |
$interval = $options['ddp_schedule'];
|
| 1449 |
|
| 1450 |
$totaldeleted = get_option( 'ddp_deleted_duplicates' );
|
| 1451 |
?>
|
| 1452 |
+
<div class="statusdiv">
|
| 1453 |
+
<div class="spinner is-active"></div>
|
| 1454 |
+
<div class="statusmessage"></div>
|
| 1455 |
+
<div class="dupelist">
|
| 1456 |
+
<table class="wp-list-table widefat fixed striped posts duplicatetable" cellspacing="0">
|
| 1457 |
+
<thead>
|
| 1458 |
+
<tr>
|
| 1459 |
+
<td id="cb" class="manage-column column-cb check-column"><label class="screen-reader-text" for="cb-select-all-1">Select All</label><input id="cb-select-all-1" type="checkbox"></td>
|
| 1460 |
+
<th><?php
|
|
|
|
| 1461 |
esc_html_e( 'Duplicate', 'delete-duplicate-posts' );
|
| 1462 |
?></th>
|
| 1463 |
+
<th><?php
|
| 1464 |
esc_html_e( 'Original', 'delete-duplicate-posts' );
|
| 1465 |
?></th>
|
| 1466 |
+
</tr>
|
| 1467 |
+
</thead>
|
| 1468 |
+
<tbody id="listofduplicates">
|
| 1469 |
+
</tbody>
|
| 1470 |
|
| 1471 |
+
<tfoot>
|
| 1472 |
+
<tr>
|
| 1473 |
+
<td id="cb" class="manage-column column-cb check-column"><label class="screen-reader-text" for="cb-select-all-1">Select All</label><input id="cb-select-all-1" type="checkbox"></td>
|
| 1474 |
+
<th><?php
|
|
|
|
| 1475 |
esc_html_e( 'Duplicate', 'delete-duplicate-posts' );
|
| 1476 |
?></th>
|
| 1477 |
+
<th><?php
|
| 1478 |
esc_html_e( 'Original', 'delete-duplicate-posts' );
|
| 1479 |
?></th>
|
| 1480 |
+
</tr>
|
| 1481 |
+
</tfoot>
|
| 1482 |
+
</table>
|
| 1483 |
+
</div>
|
| 1484 |
+
<form>
|
| 1485 |
+
<?php
|
| 1486 |
wp_nonce_field( 'ddp-buttons' );
|
| 1487 |
?>
|
| 1488 |
+
<table id="ddp_buttons">
|
| 1489 |
+
<tr>
|
| 1490 |
+
<td><input type="submit" name="deleteduplicateposts_resetview" id="deleteduplicateposts_resetview" class="button button-small button-secondary" value="<?php
|
|
|
|
|
|
|
| 1491 |
esc_html_e( 'Refresh list', 'delete-duplicate-posts' );
|
| 1492 |
?>" disabled /></td>
|
| 1493 |
+
<td><input type="submit" name="deleteduplicateposts_deleteall" id="deleteduplicateposts_deleteall" class="button button-small button-primary" value="<?php
|
|
|
|
|
|
|
| 1494 |
esc_html_e( 'Delete duplicates', 'delete-duplicate-posts' );
|
| 1495 |
?>" disabled /></td>
|
| 1496 |
+
</tr>
|
| 1497 |
+
</table>
|
| 1498 |
+
</form>
|
| 1499 |
+
</div>
|
| 1500 |
|
| 1501 |
+
</div><!-- #dashboard -->
|
| 1502 |
|
| 1503 |
+
<div id="configuration">
|
| 1504 |
+
<h3><?php
|
| 1505 |
esc_html_e( 'Settings', 'delete-duplicate-posts' );
|
| 1506 |
?></h3>
|
| 1507 |
+
<p>
|
| 1508 |
+
<?php
|
| 1509 |
$nextscheduled = wp_next_scheduled( 'ddp_cron' );
|
| 1510 |
|
| 1511 |
if ( $nextscheduled ) {
|
| 1512 |
?>
|
| 1513 |
+
<div class="notice notice-info is-dismissible">
|
| 1514 |
+
<h3><span class="dashicons dashicons-saved"></span> Automatically Deleting Duplicates</h3>
|
| 1515 |
+
<?php
|
| 1516 |
echo '<p class="cronstatus center">' . esc_html__( 'You have enabled automatic deletion, so I am running on automatic. I will take care of everything...', 'delete-duplicate-posts' ) . '</p>' ;
|
| 1517 |
echo '<p class="center">' ;
|
| 1518 |
echo sprintf(
|
| 1523 |
) ;
|
| 1524 |
echo '</p>' ;
|
| 1525 |
?>
|
| 1526 |
+
</div>
|
| 1527 |
<?php
|
| 1528 |
}
|
| 1529 |
|
| 1530 |
?>
|
| 1531 |
+
</p>
|
| 1532 |
+
<form method="post" id="delete_duplicate_posts_options">
|
| 1533 |
+
<?php
|
| 1534 |
wp_nonce_field( 'ddp-update-options' );
|
| 1535 |
?>
|
| 1536 |
+
<table width="100%" cellspacing="2" cellpadding="5" class="form-table">
|
| 1537 |
|
| 1538 |
|
| 1539 |
+
<tr valign="top">
|
| 1540 |
+
<th><label for="ddp_pts"><?php
|
|
|
|
| 1541 |
esc_html_e( 'Which post types?:', 'delete-duplicate-posts' );
|
| 1542 |
?></label>
|
| 1543 |
+
</th>
|
| 1544 |
+
<td>
|
| 1545 |
+
<?php
|
| 1546 |
$builtin = array( 'post', 'page', 'attachment' );
|
| 1547 |
$args = array(
|
| 1548 |
'public' => true,
|
| 1556 |
|
| 1557 |
if ( $post_types ) {
|
| 1558 |
?>
|
| 1559 |
+
<ul class="radio">
|
| 1560 |
+
<?php
|
| 1561 |
$step = 0;
|
| 1562 |
if ( !is_array( $checked_post_types ) ) {
|
| 1563 |
$checked_post_types = array();
|
| 1565 |
foreach ( $post_types as $pt ) {
|
| 1566 |
$checked = array_search( $pt, $checked_post_types, true );
|
| 1567 |
?>
|
| 1568 |
+
<li><input type="checkbox" name="ddp_pts[]" id="ddp_pt-<?php
|
| 1569 |
echo esc_attr( $step ) ;
|
| 1570 |
+
?>" value="<?php
|
|
|
|
| 1571 |
echo esc_html( $pt ) ;
|
| 1572 |
+
?>" <?php
|
|
|
|
| 1573 |
if ( false !== $checked ) {
|
| 1574 |
echo ' checked' ;
|
| 1575 |
}
|
| 1576 |
+
?> />
|
| 1577 |
+
<label for="ddp_pt-<?php
|
|
|
|
| 1578 |
echo esc_attr( $step ) ;
|
| 1579 |
?>"><?php
|
| 1580 |
echo esc_html( $pt ) ;
|
| 1581 |
?></label>
|
| 1582 |
+
<?php
|
| 1583 |
// Count for each post type
|
| 1584 |
$postinfo = wp_count_posts( $pt );
|
| 1585 |
$othercount = 0;
|
| 1589 |
// translators: Total number of deleted duplicates
|
| 1590 |
echo '<small>' . sprintf( esc_html__( '(%s total found)', 'delete-duplicate-posts' ), esc_html( number_format_i18n( $othercount ) ) ) . '</small>' ;
|
| 1591 |
?>
|
| 1592 |
+
</li>
|
| 1593 |
<?php
|
| 1594 |
$step++;
|
| 1595 |
}
|
| 1596 |
?>
|
| 1597 |
+
</ul>
|
| 1598 |
+
<?php
|
| 1599 |
}
|
| 1600 |
|
| 1601 |
?>
|
| 1602 |
+
<p class="description">
|
| 1603 |
+
<?php
|
| 1604 |
esc_html_e( 'Choose which post types to scan for duplicates.', 'delete-duplicate-posts' );
|
| 1605 |
?>
|
| 1606 |
+
</p>
|
| 1607 |
+
</td>
|
| 1608 |
+
</tr>
|
| 1609 |
|
| 1610 |
+
<tr>
|
| 1611 |
+
<th><label for="ddp_enabled"><?php
|
| 1612 |
esc_html_e( 'Post status', 'delete-duplicate-posts' );
|
| 1613 |
?></label>
|
| 1614 |
+
</th>
|
| 1615 |
+
<td>
|
| 1616 |
+
<?php
|
| 1617 |
$stati = array(
|
| 1618 |
'publish' => (object) array(
|
| 1619 |
'label' => 'Published',
|
| 1624 |
|
| 1625 |
if ( $stati ) {
|
| 1626 |
?>
|
| 1627 |
+
<ul class="radio">
|
| 1628 |
+
<?php
|
| 1629 |
$staticount = count( $stati );
|
| 1630 |
foreach ( $stati as $key => $st ) {
|
| 1631 |
|
| 1632 |
if ( $st->show_in_admin_status_list ) {
|
| 1633 |
$checked = array_search( $key, $checked_post_stati, true );
|
| 1634 |
?>
|
| 1635 |
+
<li>
|
| 1636 |
+
<input type="checkbox" name="ddp_pstati[]" id="ddp_pstatus-<?php
|
| 1637 |
echo esc_attr( $key ) ;
|
| 1638 |
+
?>" value="<?php
|
|
|
|
| 1639 |
echo esc_attr( $key ) ;
|
| 1640 |
+
?>" <?php
|
|
|
|
| 1641 |
if ( false !== $checked ) {
|
| 1642 |
echo ' checked' ;
|
| 1643 |
}
|
| 1644 |
if ( 1 === $staticount ) {
|
| 1645 |
echo ' disabled' ;
|
| 1646 |
}
|
| 1647 |
+
?> /><label for="ddp_pstatus-<?php
|
|
|
|
|
|
|
| 1648 |
echo esc_attr( $key ) ;
|
| 1649 |
?>"><?php
|
| 1650 |
echo esc_html( $key . ' (' . $st->label . ')' ) ;
|
| 1651 |
?></label>
|
| 1652 |
+
</li>
|
| 1653 |
+
<?php
|
| 1654 |
$step++;
|
| 1655 |
}
|
| 1656 |
|
| 1657 |
}
|
| 1658 |
?>
|
| 1659 |
+
</ul>
|
| 1660 |
+
<?php
|
| 1661 |
}
|
| 1662 |
|
| 1663 |
?>
|
| 1664 |
+
</td>
|
| 1665 |
|
| 1666 |
|
| 1667 |
+
</tr>
|
| 1668 |
+
<?php
|
| 1669 |
$comparemethod = 'titlecompare';
|
| 1670 |
global $ddp_fs ;
|
| 1671 |
?>
|
| 1672 |
+
<tr valign="top">
|
| 1673 |
+
<th><?php
|
| 1674 |
esc_html_e( 'Comparison Method', 'delete-duplicate-posts' );
|
| 1675 |
?></th>
|
| 1676 |
+
<td>
|
| 1677 |
+
<ul class="ddpcomparemethod">
|
| 1678 |
|
| 1679 |
+
<li>
|
| 1680 |
+
<label>
|
| 1681 |
+
<input type="radio" name="ddp_method" value="titlecompare" <?php
|
|
|
|
| 1682 |
checked( 'titlecompare', $comparemethod );
|
| 1683 |
?> />
|
| 1684 |
+
<?php
|
| 1685 |
esc_html_e( 'Compare by title (default)', 'delete-duplicate-posts' );
|
| 1686 |
?>
|
| 1687 |
+
<span class="optiondesc"><?php
|
|
|
|
| 1688 |
esc_html_e( 'Looks at the title of the post itself.', 'delete-duplicate-posts' );
|
| 1689 |
?></span>
|
| 1690 |
+
</label>
|
| 1691 |
|
| 1692 |
+
</li>
|
| 1693 |
|
| 1694 |
+
<?php
|
| 1695 |
global $ddp_fs ;
|
| 1696 |
?>
|
| 1697 |
+
</ul>
|
| 1698 |
+
</td>
|
| 1699 |
+
</tr>
|
| 1700 |
+
<tr>
|
| 1701 |
+
<th><label for="ddp_keep"><?php
|
|
|
|
| 1702 |
esc_html_e( 'Delete which posts?:', 'delete-duplicate-posts' );
|
| 1703 |
?></label></th>
|
| 1704 |
+
<td>
|
| 1705 |
|
| 1706 |
+
<select name="ddp_keep" id="ddp_keep">
|
| 1707 |
+
<option value="oldest" <?php
|
|
|
|
| 1708 |
if ( 'oldest' === $options['ddp_keep'] ) {
|
| 1709 |
echo 'selected="selected"' ;
|
| 1710 |
}
|
| 1711 |
+
?>><?php
|
|
|
|
| 1712 |
esc_html_e( 'Keep oldest', 'delete-duplicate-posts' );
|
| 1713 |
?></option>
|
| 1714 |
+
<option value="latest" <?php
|
|
|
|
| 1715 |
if ( 'latest' === $options['ddp_keep'] ) {
|
| 1716 |
echo 'selected="selected"' ;
|
| 1717 |
}
|
| 1718 |
+
?>><?php
|
|
|
|
| 1719 |
esc_html_e( 'Keep latest', 'delete-duplicate-posts' );
|
| 1720 |
?></option>
|
| 1721 |
+
</select>
|
| 1722 |
+
<p class="description">
|
| 1723 |
+
<?php
|
| 1724 |
esc_html_e( 'Keep the oldest or the latest version of duplicates? Default is keeping the oldest, and deleting any subsequent duplicate posts', 'delete-duplicate-posts' );
|
| 1725 |
?>
|
| 1726 |
+
</p>
|
| 1727 |
+
</td>
|
| 1728 |
+
</tr>
|
| 1729 |
|
| 1730 |
|
| 1731 |
|
| 1732 |
|
| 1733 |
+
<tr>
|
| 1734 |
+
<th><label for="ddp_resultslimit"><?php
|
|
|
|
| 1735 |
esc_html_e( 'Find how many duplicates:', 'delete-duplicate-posts' );
|
| 1736 |
?></label>
|
| 1737 |
+
</th>
|
| 1738 |
+
<td>
|
| 1739 |
|
| 1740 |
+
<?php
|
| 1741 |
$dupe_options = array(
|
| 1742 |
0 => __( 'No limit', 'delete-duplicate-posts' ),
|
| 1743 |
10000 => number_format_i18n( '10000' ),
|
| 1751 |
10 => '10',
|
| 1752 |
);
|
| 1753 |
?>
|
| 1754 |
+
<select name="ddp_resultslimit" id="ddp_resultslimit">
|
| 1755 |
+
<?php
|
| 1756 |
foreach ( $dupe_options as $key => $label ) {
|
| 1757 |
?>
|
| 1758 |
+
<option value="<?php
|
| 1759 |
echo esc_attr( $key ) ;
|
| 1760 |
+
?>" <?php
|
|
|
|
| 1761 |
selected( $options['ddp_resultslimit'], $key );
|
| 1762 |
?>>
|
| 1763 |
+
<?php
|
| 1764 |
echo esc_attr( $label ) ;
|
| 1765 |
?></option>
|
| 1766 |
+
<?php
|
| 1767 |
}
|
| 1768 |
?>
|
| 1769 |
+
</select>
|
| 1770 |
|
| 1771 |
+
<p class="description">
|
| 1772 |
+
<?php
|
| 1773 |
esc_html_e( 'If you have many duplicates, the plugin might time out before finding them all. Try limiting the amount of duplicates here. Default: Unlimited.', 'delete-duplicate-posts' );
|
| 1774 |
?>
|
| 1775 |
+
</p>
|
| 1776 |
+
</td>
|
| 1777 |
+
</tr>
|
| 1778 |
|
| 1779 |
|
| 1780 |
|
| 1781 |
+
<?php
|
| 1782 |
?>
|
| 1783 |
|
| 1784 |
+
<tr>
|
| 1785 |
+
<td colspan="2">
|
| 1786 |
+
<hr>
|
| 1787 |
+
</td>
|
| 1788 |
+
</tr>
|
| 1789 |
|
| 1790 |
+
<tr valign="top">
|
| 1791 |
+
<th><?php
|
| 1792 |
esc_html_e( 'Enable automatic deletion?:', 'delete-duplicate-posts' );
|
| 1793 |
?>
|
| 1794 |
|
| 1795 |
+
</th>
|
| 1796 |
+
<td><label for="ddp_enabled">
|
| 1797 |
+
<input type="checkbox" id="ddp_enabled" name="ddp_enabled" <?php
|
|
|
|
| 1798 |
if ( true === $options['ddp_enabled'] ) {
|
| 1799 |
echo 'checked="checked"' ;
|
| 1800 |
}
|
| 1801 |
+
?>>
|
| 1802 |
+
<p class="description">
|
| 1803 |
+
<?php
|
|
|
|
| 1804 |
esc_html_e( 'Clean duplicates automatically.', 'delete-duplicate-posts' );
|
| 1805 |
?></p>
|
| 1806 |
+
</label>
|
| 1807 |
+
</td>
|
| 1808 |
+
</tr>
|
| 1809 |
|
| 1810 |
|
| 1811 |
+
<tr>
|
| 1812 |
+
<th><label for="ddp_schedule"><?php
|
| 1813 |
esc_html_e( 'How often?:', 'delete-duplicate-posts' );
|
| 1814 |
?></label>
|
| 1815 |
+
</th>
|
| 1816 |
+
<td>
|
| 1817 |
|
| 1818 |
+
<select name="ddp_schedule" id="ddp_schedule">
|
| 1819 |
+
<?php
|
| 1820 |
$schedules = wp_get_schedules();
|
| 1821 |
if ( $schedules ) {
|
| 1822 |
foreach ( $schedules as $key => $sch ) {
|
| 1823 |
?>
|
| 1824 |
+
<option value="<?php
|
| 1825 |
echo esc_attr( $key ) ;
|
| 1826 |
+
?>" <?php
|
|
|
|
| 1827 |
if ( isset( $options['ddp_schedule'] ) && esc_attr( $key ) === $options['ddp_schedule'] ) {
|
| 1828 |
echo esc_html( 'selected="selected"' ) ;
|
| 1829 |
}
|
| 1830 |
+
?>><?php
|
|
|
|
| 1831 |
echo esc_html( $sch['display'] ) ;
|
| 1832 |
?></option>
|
| 1833 |
<?php
|
| 1834 |
}
|
| 1835 |
}
|
| 1836 |
?>
|
| 1837 |
+
</select>
|
| 1838 |
+
<p class="description">
|
| 1839 |
+
<?php
|
| 1840 |
esc_html_e( 'How often should the cron job run?', 'delete-duplicate-posts' );
|
| 1841 |
?></p>
|
| 1842 |
+
</td>
|
| 1843 |
+
</tr>
|
| 1844 |
+
<tr>
|
| 1845 |
+
<td colspan="2">
|
| 1846 |
+
<hr>
|
| 1847 |
+
</td>
|
| 1848 |
+
</tr>
|
| 1849 |
|
| 1850 |
+
<tr>
|
| 1851 |
+
<th><?php
|
| 1852 |
esc_html_e( 'Send status mail?:', 'delete-duplicate-posts' );
|
| 1853 |
?></th>
|
| 1854 |
+
<td>
|
| 1855 |
+
<label for="ddp_statusmail">
|
| 1856 |
+
<input type="checkbox" id="ddp_statusmail" name="ddp_statusmail" <?php
|
|
|
|
| 1857 |
if ( isset( $options['ddp_statusmail'] ) && true === $options['ddp_statusmail'] ) {
|
| 1858 |
echo 'checked="checked"' ;
|
| 1859 |
}
|
| 1860 |
+
?>>
|
| 1861 |
+
<p class="description">
|
| 1862 |
+
<?php
|
|
|
|
| 1863 |
esc_html_e( 'Sends a status email if duplicates have been found.', 'delete-duplicate-posts' );
|
| 1864 |
?>
|
| 1865 |
+
</p>
|
| 1866 |
+
</label>
|
| 1867 |
+
</td>
|
| 1868 |
+
</tr>
|
| 1869 |
|
| 1870 |
+
<tr>
|
| 1871 |
+
<th><?php
|
| 1872 |
esc_html_e( 'Email recipient:', 'delete-duplicate-posts' );
|
| 1873 |
?></th>
|
| 1874 |
+
<td>
|
| 1875 |
+
<label for="ddp_statusmail_recipient">
|
| 1876 |
|
| 1877 |
+
<input type="text" class="regular-text" id="ddp_statusmail_recipient" name="ddp_statusmail_recipient" value="<?php
|
|
|
|
|
|
|
| 1878 |
echo esc_html( $options['ddp_statusmail_recipient'] ) ;
|
| 1879 |
?>">
|
| 1880 |
+
<p class="description">
|
| 1881 |
+
<?php
|
| 1882 |
esc_html_e( 'Who should get the notification email.', 'delete-duplicate-posts' );
|
| 1883 |
?></p>
|
| 1884 |
+
</label>
|
| 1885 |
+
</td>
|
| 1886 |
+
</tr>
|
| 1887 |
|
| 1888 |
|
| 1889 |
|
| 1890 |
+
<tr>
|
| 1891 |
+
<td colspan="2">
|
| 1892 |
+
<hr>
|
| 1893 |
+
</td>
|
| 1894 |
+
</tr>
|
| 1895 |
|
| 1896 |
+
<tr>
|
| 1897 |
+
<th><?php
|
| 1898 |
esc_html_e( 'Enable debug logging?:', 'delete-duplicate-posts' );
|
| 1899 |
?></th>
|
| 1900 |
+
<td>
|
| 1901 |
+
<label for="ddp_debug">
|
| 1902 |
+
<input type="checkbox" id="ddp_debug" name="ddp_debug" <?php
|
|
|
|
| 1903 |
if ( isset( $options['ddp_debug'] ) && true === $options['ddp_debug'] ) {
|
| 1904 |
echo 'checked="checked"' ;
|
| 1905 |
}
|
| 1906 |
+
?>>
|
| 1907 |
+
<p class="description">
|
| 1908 |
+
<?php
|
|
|
|
| 1909 |
esc_html_e( 'Should only be enabled if debugging a problem.', 'delete-duplicate-posts' );
|
| 1910 |
?>
|
| 1911 |
+
</p>
|
| 1912 |
+
</label>
|
| 1913 |
+
</td>
|
| 1914 |
+
</tr>
|
| 1915 |
+
<th colspan=2><input type="submit" class="button-primary" name="delete_duplicate_posts_save" value="<?php
|
|
|
|
| 1916 |
esc_html_e( 'Save Settings', 'delete-duplicate-posts' );
|
| 1917 |
?>" /></th>
|
| 1918 |
+
</tr>
|
| 1919 |
+
</table>
|
| 1920 |
+
</form>
|
| 1921 |
+
</div><!-- #configuration -->
|
| 1922 |
+
<div id="log">
|
| 1923 |
+
<h3><?php
|
| 1924 |
esc_html_e( 'The Log', 'delete-duplicate-posts' );
|
| 1925 |
?></h3>
|
| 1926 |
+
<div class="spinner is-active"></div>
|
| 1927 |
+
<ul class="large-text" name="ddp_log" id="ddp_log">
|
| 1928 |
+
</ul>
|
| 1929 |
+
</div>
|
| 1930 |
+
<p>
|
| 1931 |
+
<form method="post" id="ddp_clearlog">
|
| 1932 |
+
<?php
|
| 1933 |
wp_nonce_field( 'ddp_clearlog_nonce' );
|
| 1934 |
?>
|
| 1935 |
+
<input class="button-secondary" type="submit" name="ddp_clearlog" value="<?php
|
|
|
|
| 1936 |
esc_html_e( 'Reset log', 'delete-duplicate-posts' );
|
| 1937 |
?>" />
|
| 1938 |
+
</form>
|
| 1939 |
+
</p>
|
| 1940 |
+
</div><!-- #ddp_container -->
|
| 1941 |
+
<?php
|
| 1942 |
include_once 'sidebar.php';
|
| 1943 |
if ( function_exists( 'ddp_fs' ) ) {
|
| 1944 |
global $ddp_fs ;
|
| 1945 |
}
|
| 1946 |
?>
|
| 1947 |
|
| 1948 |
+
</div>
|
| 1949 |
+
</div>
|
| 1950 |
|
| 1951 |
+
</div>
|
| 1952 |
+
<?php
|
| 1953 |
}
|
| 1954 |
|
| 1955 |
}
|
languages/delete_duplicate_posts.pot
CHANGED
|
@@ -2,7 +2,7 @@
|
|
| 2 |
msgid ""
|
| 3 |
msgstr ""
|
| 4 |
"Project-Id-Version: Delete Duplicate Posts\n"
|
| 5 |
-
"POT-Creation-Date: 2022-
|
| 6 |
"PO-Revision-Date: 2017-03-30 09:17-0400\n"
|
| 7 |
"Last-Translator: Lars Koudal\n"
|
| 8 |
"Language-Team: Lars Koudal\n"
|
|
@@ -26,57 +26,57 @@ msgstr ""
|
|
| 26 |
msgid "DEBUG: Redirected from %1$s to %2$s "
|
| 27 |
msgstr ""
|
| 28 |
|
| 29 |
-
#: delete-duplicate-posts.php:
|
| 30 |
msgid "Nonce verification failed."
|
| 31 |
msgstr ""
|
| 32 |
|
| 33 |
-
#: delete-duplicate-posts.php:
|
| 34 |
msgid "Freemius opt choice selected."
|
| 35 |
msgstr ""
|
| 36 |
|
| 37 |
-
#: delete-duplicate-posts.php:
|
| 38 |
msgid "Freemius opt choice not found."
|
| 39 |
msgstr ""
|
| 40 |
|
| 41 |
-
#: delete-duplicate-posts.php:
|
| 42 |
msgid "Help Delete Duplicate Posts improve!"
|
| 43 |
msgstr ""
|
| 44 |
|
| 45 |
-
#: delete-duplicate-posts.php:
|
| 46 |
msgid ""
|
| 47 |
"Gathering non-sensitive diagnostic data about the plugin install helps us "
|
| 48 |
"improve the plugin."
|
| 49 |
msgstr ""
|
| 50 |
|
| 51 |
-
#: delete-duplicate-posts.php:
|
| 52 |
msgid "Read more about what we collect."
|
| 53 |
msgstr ""
|
| 54 |
|
| 55 |
#. translators:
|
| 56 |
-
#: delete-duplicate-posts.php:
|
| 57 |
#, php-format
|
| 58 |
msgid ""
|
| 59 |
"If you opt-in, some data about your usage of %1$s will be sent to Freemius."
|
| 60 |
"com. If you skip this, that's okay! %1$s will still work just fine."
|
| 61 |
msgstr ""
|
| 62 |
|
| 63 |
-
#: delete-duplicate-posts.php:
|
| 64 |
msgid "Sure, opt-in"
|
| 65 |
msgstr ""
|
| 66 |
|
| 67 |
-
#: delete-duplicate-posts.php:
|
| 68 |
msgid "No, thank you"
|
| 69 |
msgstr ""
|
| 70 |
|
| 71 |
#. translators: Total number of deleted duplicates
|
| 72 |
#. translators: %s: Number of deleted posts
|
| 73 |
-
#: delete-duplicate-posts.php:
|
| 74 |
#, php-format
|
| 75 |
msgid "%s duplicates deleted!"
|
| 76 |
msgstr ""
|
| 77 |
|
| 78 |
#. translators: Asking for a review text
|
| 79 |
-
#: delete-duplicate-posts.php:
|
| 80 |
#, php-format
|
| 81 |
msgid ""
|
| 82 |
"Hey, I noticed this plugin has deleted %s duplicate posts for you - that's "
|
|
@@ -84,41 +84,41 @@ msgid ""
|
|
| 84 |
"WordPress? Just to help us spread the word and boost our motivation."
|
| 85 |
msgstr ""
|
| 86 |
|
| 87 |
-
#: delete-duplicate-posts.php:
|
| 88 |
msgid "Cleaning duplicates"
|
| 89 |
msgstr ""
|
| 90 |
|
| 91 |
-
#: delete-duplicate-posts.php:
|
| 92 |
msgid "Error: Log is empty.. do something :-)"
|
| 93 |
msgstr ""
|
| 94 |
|
| 95 |
-
#: delete-duplicate-posts.php:
|
| 96 |
msgid "Error, choose which meta_key to look for duplicate values in."
|
| 97 |
msgstr ""
|
| 98 |
|
| 99 |
-
#: delete-duplicate-posts.php:
|
| 100 |
msgid "Error: Choose post types to check."
|
| 101 |
msgstr ""
|
| 102 |
|
| 103 |
-
#: delete-duplicate-posts.php:
|
| 104 |
#, php-format
|
| 105 |
msgid "Created %1$s redirect from %2$s to %3$s"
|
| 106 |
msgstr ""
|
| 107 |
|
| 108 |
-
#: delete-duplicate-posts.php:
|
| 109 |
msgid "Rendering Help Scouts beacon for easy help and support"
|
| 110 |
msgstr ""
|
| 111 |
|
| 112 |
-
#: delete-duplicate-posts.php:
|
| 113 |
msgid ""
|
| 114 |
"Your email is added to cleverplugins.com newsletter. Unsubscribe any time."
|
| 115 |
msgstr ""
|
| 116 |
|
| 117 |
-
#: delete-duplicate-posts.php:
|
| 118 |
msgid "Cron job running."
|
| 119 |
msgstr ""
|
| 120 |
|
| 121 |
-
#: delete-duplicate-posts.php:
|
| 122 |
msgid "Manually cleaning."
|
| 123 |
msgstr ""
|
| 124 |
|
|
@@ -128,307 +128,313 @@ msgid "DEBUG: Deleted %1$s '%2$s' (id: %3$s) in %4$s sec."
|
|
| 128 |
msgstr ""
|
| 129 |
|
| 130 |
#. translators: How many posts were deleted and how long it took in seconds
|
| 131 |
-
#: delete-duplicate-posts.php:
|
| 132 |
#, php-format
|
| 133 |
msgid "A total of %1$s duplicate posts were deleted in %2$s sec."
|
| 134 |
msgstr ""
|
| 135 |
|
| 136 |
#. translators:
|
| 137 |
-
#: delete-duplicate-posts.php:
|
| 138 |
#, php-format
|
| 139 |
msgid "A total of %s duplicate posts were deleted."
|
| 140 |
msgstr ""
|
| 141 |
|
| 142 |
#. translators:
|
| 143 |
-
#: delete-duplicate-posts.php:
|
| 144 |
#, php-format
|
| 145 |
msgid ""
|
| 146 |
-
"Hi Admin, I have deleted <strong>%1$d</strong> posts on your
|
|
|
|
| 147 |
msgstr ""
|
| 148 |
|
| 149 |
-
#: delete-duplicate-posts.php:
|
| 150 |
msgid ""
|
| 151 |
"You are receiving this e-mail because you have turned on e-mail "
|
| 152 |
-
"notifications by the plugin
|
| 153 |
msgstr ""
|
| 154 |
|
| 155 |
-
#: delete-duplicate-posts.php:
|
| 156 |
msgid "Deleted Duplicate Posts Status"
|
| 157 |
msgstr ""
|
| 158 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 159 |
#. translators:
|
| 160 |
-
#: delete-duplicate-posts.php:
|
| 161 |
#, php-format
|
| 162 |
msgid "Status email sent to %s."
|
| 163 |
msgstr ""
|
| 164 |
|
| 165 |
#. translators:
|
| 166 |
-
#: delete-duplicate-posts.php:
|
| 167 |
#, php-format
|
| 168 |
msgid "Not a vaild email %s."
|
| 169 |
msgstr ""
|
| 170 |
|
| 171 |
-
#: delete-duplicate-posts.php:
|
| 172 |
msgid "Every 5 minutes"
|
| 173 |
msgstr ""
|
| 174 |
|
| 175 |
-
#: delete-duplicate-posts.php:
|
| 176 |
msgid "Every 10 minutes"
|
| 177 |
msgstr ""
|
| 178 |
|
| 179 |
-
#: delete-duplicate-posts.php:
|
| 180 |
msgid "Every 15 minutes"
|
| 181 |
msgstr ""
|
| 182 |
|
| 183 |
-
#: delete-duplicate-posts.php:
|
| 184 |
msgid "Every 30 minutes"
|
| 185 |
msgstr ""
|
| 186 |
|
| 187 |
-
#: delete-duplicate-posts.php:
|
| 188 |
msgid "Are you sure you want to delete duplicates? There is no undo feature."
|
| 189 |
msgstr ""
|
| 190 |
|
| 191 |
-
#: delete-duplicate-posts.php:
|
| 192 |
msgid ""
|
| 193 |
"You have to select which duplicates to delete. Tip: You can click the top or "
|
| 194 |
"bottom checkbox to select all."
|
| 195 |
msgstr ""
|
| 196 |
|
| 197 |
-
#: delete-duplicate-posts.php:
|
| 198 |
msgid "Plugin activated."
|
| 199 |
msgstr ""
|
| 200 |
|
| 201 |
-
#: delete-duplicate-posts.php:
|
| 202 |
msgid "Settings"
|
| 203 |
msgstr ""
|
| 204 |
|
| 205 |
-
#: delete-duplicate-posts.php:
|
| 206 |
msgid "Usage and FAQ"
|
| 207 |
msgstr ""
|
| 208 |
|
| 209 |
-
#: delete-duplicate-posts.php:
|
| 210 |
msgid "What does this plugin do?"
|
| 211 |
msgstr ""
|
| 212 |
|
| 213 |
-
#: delete-duplicate-posts.php:
|
| 214 |
msgid ""
|
| 215 |
"Helps you clean duplicate posts from your blog. The plugin checks for "
|
| 216 |
"blogposts on your blog with the same title."
|
| 217 |
msgstr ""
|
| 218 |
|
| 219 |
-
#: delete-duplicate-posts.php:
|
| 220 |
msgid ""
|
| 221 |
"It can run automatically via WordPress's own internal CRON-system, or you "
|
| 222 |
"can run it automatically."
|
| 223 |
msgstr ""
|
| 224 |
|
| 225 |
-
#: delete-duplicate-posts.php:
|
| 226 |
msgid ""
|
| 227 |
"It also has a nice feature that can send you an e-mail when Delete Duplicate "
|
| 228 |
"Posts finds and deletes something (if you have turned on the CRON feature)."
|
| 229 |
msgstr ""
|
| 230 |
|
| 231 |
-
#: delete-duplicate-posts.php:
|
| 232 |
msgid "Help! Something was deleted that was not supposed to be deleted!"
|
| 233 |
msgstr ""
|
| 234 |
|
| 235 |
-
#: delete-duplicate-posts.php:
|
| 236 |
msgid ""
|
| 237 |
"I am sorry for that, I can only recommend you restore the database you took "
|
| 238 |
"just before you ran this plugin."
|
| 239 |
msgstr ""
|
| 240 |
|
| 241 |
-
#: delete-duplicate-posts.php:
|
| 242 |
msgid ""
|
| 243 |
"If you run this plugin, manually or automatically, it is at your OWN risk!"
|
| 244 |
msgstr ""
|
| 245 |
|
| 246 |
-
#: delete-duplicate-posts.php:
|
| 247 |
msgid ""
|
| 248 |
"We have done our best to avoid deleting something that should not be "
|
| 249 |
"deleted, but if it happens, there is nothing we can do to help you."
|
| 250 |
msgstr ""
|
| 251 |
|
| 252 |
-
#: delete-duplicate-posts.php:
|
| 253 |
-
#: delete-duplicate-posts.php:
|
| 254 |
msgid "Whoops! Some error occured, try again, please!"
|
| 255 |
msgstr ""
|
| 256 |
|
| 257 |
-
#: delete-duplicate-posts.php:
|
| 258 |
msgid ""
|
| 259 |
"Whoops! There was a problem with the data you posted. Please go back and try "
|
| 260 |
"again."
|
| 261 |
msgstr ""
|
| 262 |
|
| 263 |
-
#: delete-duplicate-posts.php:
|
| 264 |
msgid "Settings saved."
|
| 265 |
msgstr ""
|
| 266 |
|
| 267 |
-
#: delete-duplicate-posts.php:
|
| 268 |
msgid "The log was cleared."
|
| 269 |
msgstr ""
|
| 270 |
|
| 271 |
-
#: delete-duplicate-posts.php:
|
| 272 |
msgid "Duplicate"
|
| 273 |
msgstr ""
|
| 274 |
|
| 275 |
-
#: delete-duplicate-posts.php:
|
| 276 |
msgid "Original"
|
| 277 |
msgstr ""
|
| 278 |
|
| 279 |
-
#: delete-duplicate-posts.php:
|
| 280 |
msgid "Refresh list"
|
| 281 |
msgstr ""
|
| 282 |
|
| 283 |
-
#: delete-duplicate-posts.php:
|
| 284 |
msgid "Delete duplicates"
|
| 285 |
msgstr ""
|
| 286 |
|
| 287 |
-
#: delete-duplicate-posts.php:
|
| 288 |
msgid ""
|
| 289 |
"You have enabled automatic deletion, so I am running on automatic. I will "
|
| 290 |
"take care of everything..."
|
| 291 |
msgstr ""
|
| 292 |
|
| 293 |
#. translators: Showing when the next check happens and what the current time is
|
| 294 |
-
#: delete-duplicate-posts.php:
|
| 295 |
#, php-format
|
| 296 |
msgid "Next automated check %1$s. Current time %2$s"
|
| 297 |
msgstr ""
|
| 298 |
|
| 299 |
-
#: delete-duplicate-posts.php:
|
| 300 |
msgid "Which post types?:"
|
| 301 |
msgstr ""
|
| 302 |
|
| 303 |
#. translators: Total number of deleted duplicates
|
| 304 |
-
#: delete-duplicate-posts.php:
|
| 305 |
#, php-format
|
| 306 |
msgid "(%s total found)"
|
| 307 |
msgstr ""
|
| 308 |
|
| 309 |
-
#: delete-duplicate-posts.php:
|
| 310 |
msgid "Choose which post types to scan for duplicates."
|
| 311 |
msgstr ""
|
| 312 |
|
| 313 |
-
#: delete-duplicate-posts.php:
|
| 314 |
msgid "Post status"
|
| 315 |
msgstr ""
|
| 316 |
|
| 317 |
-
#: delete-duplicate-posts.php:
|
| 318 |
msgid "Comparison Method"
|
| 319 |
msgstr ""
|
| 320 |
|
| 321 |
-
#: delete-duplicate-posts.php:
|
| 322 |
msgid "Compare by title (default)"
|
| 323 |
msgstr ""
|
| 324 |
|
| 325 |
-
#: delete-duplicate-posts.php:
|
| 326 |
msgid "Looks at the title of the post itself."
|
| 327 |
msgstr ""
|
| 328 |
|
| 329 |
-
#: delete-duplicate-posts.php:
|
| 330 |
msgid "Compare by meta tag"
|
| 331 |
msgstr ""
|
| 332 |
|
| 333 |
-
#: delete-duplicate-posts.php:
|
| 334 |
msgid "Compare by any meta tag."
|
| 335 |
msgstr ""
|
| 336 |
|
| 337 |
-
#: delete-duplicate-posts.php:
|
| 338 |
msgid "Delete which posts?:"
|
| 339 |
msgstr ""
|
| 340 |
|
| 341 |
-
#: delete-duplicate-posts.php:
|
| 342 |
msgid "Keep oldest"
|
| 343 |
msgstr ""
|
| 344 |
|
| 345 |
-
#: delete-duplicate-posts.php:
|
| 346 |
msgid "Keep latest"
|
| 347 |
msgstr ""
|
| 348 |
|
| 349 |
-
#: delete-duplicate-posts.php:
|
| 350 |
msgid ""
|
| 351 |
"Keep the oldest or the latest version of duplicates? Default is keeping the "
|
| 352 |
"oldest, and deleting any subsequent duplicate posts"
|
| 353 |
msgstr ""
|
| 354 |
|
| 355 |
-
#: delete-duplicate-posts.php:
|
| 356 |
msgid "Find how many duplicates:"
|
| 357 |
msgstr ""
|
| 358 |
|
| 359 |
-
#: delete-duplicate-posts.php:
|
| 360 |
msgid "No limit"
|
| 361 |
msgstr ""
|
| 362 |
|
| 363 |
-
#: delete-duplicate-posts.php:
|
| 364 |
msgid ""
|
| 365 |
"If you have many duplicates, the plugin might time out before finding them "
|
| 366 |
"all. Try limiting the amount of duplicates here. Default: Unlimited."
|
| 367 |
msgstr ""
|
| 368 |
|
| 369 |
-
#: delete-duplicate-posts.php:
|
| 370 |
msgid "Enable 301 redirects?:"
|
| 371 |
msgstr ""
|
| 372 |
|
| 373 |
-
#: delete-duplicate-posts.php:
|
| 374 |
msgid "Automatically 301 redirects deleted posts to the original."
|
| 375 |
msgstr ""
|
| 376 |
|
| 377 |
#. translators: %s: Number of redirects registered
|
| 378 |
-
#: delete-duplicate-posts.php:
|
| 379 |
#, php-format
|
| 380 |
msgid "%s redirects saved."
|
| 381 |
msgstr ""
|
| 382 |
|
| 383 |
-
#: delete-duplicate-posts.php:
|
| 384 |
msgid "Enable automatic deletion?:"
|
| 385 |
msgstr ""
|
| 386 |
|
| 387 |
-
#: delete-duplicate-posts.php:
|
| 388 |
msgid "Clean duplicates automatically."
|
| 389 |
msgstr ""
|
| 390 |
|
| 391 |
-
#: delete-duplicate-posts.php:
|
| 392 |
msgid "How often?:"
|
| 393 |
msgstr ""
|
| 394 |
|
| 395 |
-
#: delete-duplicate-posts.php:
|
| 396 |
msgid "How often should the cron job run?"
|
| 397 |
msgstr ""
|
| 398 |
|
| 399 |
-
#: delete-duplicate-posts.php:
|
| 400 |
msgid "Send status mail?:"
|
| 401 |
msgstr ""
|
| 402 |
|
| 403 |
-
#: delete-duplicate-posts.php:
|
| 404 |
msgid "Sends a status email if duplicates have been found."
|
| 405 |
msgstr ""
|
| 406 |
|
| 407 |
-
#: delete-duplicate-posts.php:
|
| 408 |
msgid "Email recipient:"
|
| 409 |
msgstr ""
|
| 410 |
|
| 411 |
-
#: delete-duplicate-posts.php:
|
| 412 |
msgid "Who should get the notification email."
|
| 413 |
msgstr ""
|
| 414 |
|
| 415 |
-
#: delete-duplicate-posts.php:
|
| 416 |
msgid "Enable debug logging?:"
|
| 417 |
msgstr ""
|
| 418 |
|
| 419 |
-
#: delete-duplicate-posts.php:
|
| 420 |
msgid "Should only be enabled if debugging a problem."
|
| 421 |
msgstr ""
|
| 422 |
|
| 423 |
-
#: delete-duplicate-posts.php:
|
| 424 |
msgid "Save Settings"
|
| 425 |
msgstr ""
|
| 426 |
|
| 427 |
-
#: delete-duplicate-posts.php:
|
| 428 |
msgid "The Log"
|
| 429 |
msgstr ""
|
| 430 |
|
| 431 |
-
#: delete-duplicate-posts.php:
|
| 432 |
msgid "Reset log"
|
| 433 |
msgstr ""
|
| 434 |
|
|
@@ -442,23 +448,27 @@ msgid ""
|
|
| 442 |
"diagnostic tracking."
|
| 443 |
msgstr ""
|
| 444 |
|
| 445 |
-
#: sidebar.php:
|
| 446 |
msgid "Click here to opt in."
|
| 447 |
msgstr ""
|
| 448 |
|
| 449 |
-
#: sidebar.php:
|
| 450 |
msgid "We recommend you always make a backup before running this tool."
|
| 451 |
msgstr ""
|
| 452 |
|
| 453 |
-
#: sidebar.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
| 454 |
msgid "Our other plugins"
|
| 455 |
msgstr ""
|
| 456 |
|
| 457 |
-
#: sidebar.php:
|
| 458 |
msgid "Support Forum on WordPress.org"
|
| 459 |
msgstr ""
|
| 460 |
|
| 461 |
-
#: sidebar.php:
|
| 462 |
msgid "Recreate Databases"
|
| 463 |
msgstr ""
|
| 464 |
|
| 2 |
msgid ""
|
| 3 |
msgstr ""
|
| 4 |
"Project-Id-Version: Delete Duplicate Posts\n"
|
| 5 |
+
"POT-Creation-Date: 2022-10-18 13:40-0400\n"
|
| 6 |
"PO-Revision-Date: 2017-03-30 09:17-0400\n"
|
| 7 |
"Last-Translator: Lars Koudal\n"
|
| 8 |
"Language-Team: Lars Koudal\n"
|
| 26 |
msgid "DEBUG: Redirected from %1$s to %2$s "
|
| 27 |
msgstr ""
|
| 28 |
|
| 29 |
+
#: delete-duplicate-posts.php:230
|
| 30 |
msgid "Nonce verification failed."
|
| 31 |
msgstr ""
|
| 32 |
|
| 33 |
+
#: delete-duplicate-posts.php:270
|
| 34 |
msgid "Freemius opt choice selected."
|
| 35 |
msgstr ""
|
| 36 |
|
| 37 |
+
#: delete-duplicate-posts.php:277
|
| 38 |
msgid "Freemius opt choice not found."
|
| 39 |
msgstr ""
|
| 40 |
|
| 41 |
+
#: delete-duplicate-posts.php:369
|
| 42 |
msgid "Help Delete Duplicate Posts improve!"
|
| 43 |
msgstr ""
|
| 44 |
|
| 45 |
+
#: delete-duplicate-posts.php:372
|
| 46 |
msgid ""
|
| 47 |
"Gathering non-sensitive diagnostic data about the plugin install helps us "
|
| 48 |
"improve the plugin."
|
| 49 |
msgstr ""
|
| 50 |
|
| 51 |
+
#: delete-duplicate-posts.php:372
|
| 52 |
msgid "Read more about what we collect."
|
| 53 |
msgstr ""
|
| 54 |
|
| 55 |
#. translators:
|
| 56 |
+
#: delete-duplicate-posts.php:378
|
| 57 |
#, php-format
|
| 58 |
msgid ""
|
| 59 |
"If you opt-in, some data about your usage of %1$s will be sent to Freemius."
|
| 60 |
"com. If you skip this, that's okay! %1$s will still work just fine."
|
| 61 |
msgstr ""
|
| 62 |
|
| 63 |
+
#: delete-duplicate-posts.php:383
|
| 64 |
msgid "Sure, opt-in"
|
| 65 |
msgstr ""
|
| 66 |
|
| 67 |
+
#: delete-duplicate-posts.php:386
|
| 68 |
msgid "No, thank you"
|
| 69 |
msgstr ""
|
| 70 |
|
| 71 |
#. translators: Total number of deleted duplicates
|
| 72 |
#. translators: %s: Number of deleted posts
|
| 73 |
+
#: delete-duplicate-posts.php:412 sidebar.php:37
|
| 74 |
#, php-format
|
| 75 |
msgid "%s duplicates deleted!"
|
| 76 |
msgstr ""
|
| 77 |
|
| 78 |
#. translators: Asking for a review text
|
| 79 |
+
#: delete-duplicate-posts.php:418
|
| 80 |
#, php-format
|
| 81 |
msgid ""
|
| 82 |
"Hey, I noticed this plugin has deleted %s duplicate posts for you - that's "
|
| 84 |
"WordPress? Just to help us spread the word and boost our motivation."
|
| 85 |
msgstr ""
|
| 86 |
|
| 87 |
+
#: delete-duplicate-posts.php:452
|
| 88 |
msgid "Cleaning duplicates"
|
| 89 |
msgstr ""
|
| 90 |
|
| 91 |
+
#: delete-duplicate-posts.php:517
|
| 92 |
msgid "Error: Log is empty.. do something :-)"
|
| 93 |
msgstr ""
|
| 94 |
|
| 95 |
+
#: delete-duplicate-posts.php:749
|
| 96 |
msgid "Error, choose which meta_key to look for duplicate values in."
|
| 97 |
msgstr ""
|
| 98 |
|
| 99 |
+
#: delete-duplicate-posts.php:908
|
| 100 |
msgid "Error: Choose post types to check."
|
| 101 |
msgstr ""
|
| 102 |
|
| 103 |
+
#: delete-duplicate-posts.php:974
|
| 104 |
#, php-format
|
| 105 |
msgid "Created %1$s redirect from %2$s to %3$s"
|
| 106 |
msgstr ""
|
| 107 |
|
| 108 |
+
#: delete-duplicate-posts.php:1044
|
| 109 |
msgid "Rendering Help Scouts beacon for easy help and support"
|
| 110 |
msgstr ""
|
| 111 |
|
| 112 |
+
#: delete-duplicate-posts.php:1051
|
| 113 |
msgid ""
|
| 114 |
"Your email is added to cleverplugins.com newsletter. Unsubscribe any time."
|
| 115 |
msgstr ""
|
| 116 |
|
| 117 |
+
#: delete-duplicate-posts.php:1131
|
| 118 |
msgid "Cron job running."
|
| 119 |
msgstr ""
|
| 120 |
|
| 121 |
+
#: delete-duplicate-posts.php:1133
|
| 122 |
msgid "Manually cleaning."
|
| 123 |
msgstr ""
|
| 124 |
|
| 128 |
msgstr ""
|
| 129 |
|
| 130 |
#. translators: How many posts were deleted and how long it took in seconds
|
| 131 |
+
#: delete-duplicate-posts.php:1209
|
| 132 |
#, php-format
|
| 133 |
msgid "A total of %1$s duplicate posts were deleted in %2$s sec."
|
| 134 |
msgstr ""
|
| 135 |
|
| 136 |
#. translators:
|
| 137 |
+
#: delete-duplicate-posts.php:1217 delete-duplicate-posts.php:1275
|
| 138 |
#, php-format
|
| 139 |
msgid "A total of %s duplicate posts were deleted."
|
| 140 |
msgstr ""
|
| 141 |
|
| 142 |
#. translators:
|
| 143 |
+
#: delete-duplicate-posts.php:1234
|
| 144 |
#, php-format
|
| 145 |
msgid ""
|
| 146 |
+
"Hi Admin, I have deleted <strong>%1$d</strong> duplicated posts on your "
|
| 147 |
+
"blog, %2$s."
|
| 148 |
msgstr ""
|
| 149 |
|
| 150 |
+
#: delete-duplicate-posts.php:1236
|
| 151 |
msgid ""
|
| 152 |
"You are receiving this e-mail because you have turned on e-mail "
|
| 153 |
+
"notifications by the plugin"
|
| 154 |
msgstr ""
|
| 155 |
|
| 156 |
+
#: delete-duplicate-posts.php:1243
|
| 157 |
msgid "Deleted Duplicate Posts Status"
|
| 158 |
msgstr ""
|
| 159 |
|
| 160 |
+
#: delete-duplicate-posts.php:1247
|
| 161 |
+
#, php-format
|
| 162 |
+
msgid "DEBUG: Sending email: %1$s "
|
| 163 |
+
msgstr ""
|
| 164 |
+
|
| 165 |
#. translators:
|
| 166 |
+
#: delete-duplicate-posts.php:1253
|
| 167 |
#, php-format
|
| 168 |
msgid "Status email sent to %s."
|
| 169 |
msgstr ""
|
| 170 |
|
| 171 |
#. translators:
|
| 172 |
+
#: delete-duplicate-posts.php:1260
|
| 173 |
#, php-format
|
| 174 |
msgid "Not a vaild email %s."
|
| 175 |
msgstr ""
|
| 176 |
|
| 177 |
+
#: delete-duplicate-posts.php:1300
|
| 178 |
msgid "Every 5 minutes"
|
| 179 |
msgstr ""
|
| 180 |
|
| 181 |
+
#: delete-duplicate-posts.php:1304
|
| 182 |
msgid "Every 10 minutes"
|
| 183 |
msgstr ""
|
| 184 |
|
| 185 |
+
#: delete-duplicate-posts.php:1308
|
| 186 |
msgid "Every 15 minutes"
|
| 187 |
msgstr ""
|
| 188 |
|
| 189 |
+
#: delete-duplicate-posts.php:1312
|
| 190 |
msgid "Every 30 minutes"
|
| 191 |
msgstr ""
|
| 192 |
|
| 193 |
+
#: delete-duplicate-posts.php:1374
|
| 194 |
msgid "Are you sure you want to delete duplicates? There is no undo feature."
|
| 195 |
msgstr ""
|
| 196 |
|
| 197 |
+
#: delete-duplicate-posts.php:1375
|
| 198 |
msgid ""
|
| 199 |
"You have to select which duplicates to delete. Tip: You can click the top or "
|
| 200 |
"bottom checkbox to select all."
|
| 201 |
msgstr ""
|
| 202 |
|
| 203 |
+
#: delete-duplicate-posts.php:1405
|
| 204 |
msgid "Plugin activated."
|
| 205 |
msgstr ""
|
| 206 |
|
| 207 |
+
#: delete-duplicate-posts.php:1529 delete-duplicate-posts.php:1793
|
| 208 |
msgid "Settings"
|
| 209 |
msgstr ""
|
| 210 |
|
| 211 |
+
#: delete-duplicate-posts.php:1552
|
| 212 |
msgid "Usage and FAQ"
|
| 213 |
msgstr ""
|
| 214 |
|
| 215 |
+
#: delete-duplicate-posts.php:1554
|
| 216 |
msgid "What does this plugin do?"
|
| 217 |
msgstr ""
|
| 218 |
|
| 219 |
+
#: delete-duplicate-posts.php:1555
|
| 220 |
msgid ""
|
| 221 |
"Helps you clean duplicate posts from your blog. The plugin checks for "
|
| 222 |
"blogposts on your blog with the same title."
|
| 223 |
msgstr ""
|
| 224 |
|
| 225 |
+
#: delete-duplicate-posts.php:1556
|
| 226 |
msgid ""
|
| 227 |
"It can run automatically via WordPress's own internal CRON-system, or you "
|
| 228 |
"can run it automatically."
|
| 229 |
msgstr ""
|
| 230 |
|
| 231 |
+
#: delete-duplicate-posts.php:1557
|
| 232 |
msgid ""
|
| 233 |
"It also has a nice feature that can send you an e-mail when Delete Duplicate "
|
| 234 |
"Posts finds and deletes something (if you have turned on the CRON feature)."
|
| 235 |
msgstr ""
|
| 236 |
|
| 237 |
+
#: delete-duplicate-posts.php:1558
|
| 238 |
msgid "Help! Something was deleted that was not supposed to be deleted!"
|
| 239 |
msgstr ""
|
| 240 |
|
| 241 |
+
#: delete-duplicate-posts.php:1559
|
| 242 |
msgid ""
|
| 243 |
"I am sorry for that, I can only recommend you restore the database you took "
|
| 244 |
"just before you ran this plugin."
|
| 245 |
msgstr ""
|
| 246 |
|
| 247 |
+
#: delete-duplicate-posts.php:1560
|
| 248 |
msgid ""
|
| 249 |
"If you run this plugin, manually or automatically, it is at your OWN risk!"
|
| 250 |
msgstr ""
|
| 251 |
|
| 252 |
+
#: delete-duplicate-posts.php:1561
|
| 253 |
msgid ""
|
| 254 |
"We have done our best to avoid deleting something that should not be "
|
| 255 |
"deleted, but if it happens, there is nothing we can do to help you."
|
| 256 |
msgstr ""
|
| 257 |
|
| 258 |
+
#: delete-duplicate-posts.php:1591 delete-duplicate-posts.php:1688
|
| 259 |
+
#: delete-duplicate-posts.php:1699
|
| 260 |
msgid "Whoops! Some error occured, try again, please!"
|
| 261 |
msgstr ""
|
| 262 |
|
| 263 |
+
#: delete-duplicate-posts.php:1598
|
| 264 |
msgid ""
|
| 265 |
"Whoops! There was a problem with the data you posted. Please go back and try "
|
| 266 |
"again."
|
| 267 |
msgstr ""
|
| 268 |
|
| 269 |
+
#: delete-duplicate-posts.php:1682
|
| 270 |
msgid "Settings saved."
|
| 271 |
msgstr ""
|
| 272 |
|
| 273 |
+
#: delete-duplicate-posts.php:1692
|
| 274 |
msgid "The log was cleared."
|
| 275 |
msgstr ""
|
| 276 |
|
| 277 |
+
#: delete-duplicate-posts.php:1758 delete-duplicate-posts.php:1769
|
| 278 |
msgid "Duplicate"
|
| 279 |
msgstr ""
|
| 280 |
|
| 281 |
+
#: delete-duplicate-posts.php:1759 delete-duplicate-posts.php:1770
|
| 282 |
msgid "Original"
|
| 283 |
msgstr ""
|
| 284 |
|
| 285 |
+
#: delete-duplicate-posts.php:1781
|
| 286 |
msgid "Refresh list"
|
| 287 |
msgstr ""
|
| 288 |
|
| 289 |
+
#: delete-duplicate-posts.php:1784
|
| 290 |
msgid "Delete duplicates"
|
| 291 |
msgstr ""
|
| 292 |
|
| 293 |
+
#: delete-duplicate-posts.php:1803
|
| 294 |
msgid ""
|
| 295 |
"You have enabled automatic deletion, so I am running on automatic. I will "
|
| 296 |
"take care of everything..."
|
| 297 |
msgstr ""
|
| 298 |
|
| 299 |
#. translators: Showing when the next check happens and what the current time is
|
| 300 |
+
#: delete-duplicate-posts.php:1809
|
| 301 |
#, php-format
|
| 302 |
msgid "Next automated check %1$s. Current time %2$s"
|
| 303 |
msgstr ""
|
| 304 |
|
| 305 |
+
#: delete-duplicate-posts.php:1828
|
| 306 |
msgid "Which post types?:"
|
| 307 |
msgstr ""
|
| 308 |
|
| 309 |
#. translators: Total number of deleted duplicates
|
| 310 |
+
#: delete-duplicate-posts.php:1875
|
| 311 |
#, php-format
|
| 312 |
msgid "(%s total found)"
|
| 313 |
msgstr ""
|
| 314 |
|
| 315 |
+
#: delete-duplicate-posts.php:1887
|
| 316 |
msgid "Choose which post types to scan for duplicates."
|
| 317 |
msgstr ""
|
| 318 |
|
| 319 |
+
#: delete-duplicate-posts.php:1893
|
| 320 |
msgid "Post status"
|
| 321 |
msgstr ""
|
| 322 |
|
| 323 |
+
#: delete-duplicate-posts.php:1970
|
| 324 |
msgid "Comparison Method"
|
| 325 |
msgstr ""
|
| 326 |
|
| 327 |
+
#: delete-duplicate-posts.php:1978
|
| 328 |
msgid "Compare by title (default)"
|
| 329 |
msgstr ""
|
| 330 |
|
| 331 |
+
#: delete-duplicate-posts.php:1980
|
| 332 |
msgid "Looks at the title of the post itself."
|
| 333 |
msgstr ""
|
| 334 |
|
| 335 |
+
#: delete-duplicate-posts.php:1994
|
| 336 |
msgid "Compare by meta tag"
|
| 337 |
msgstr ""
|
| 338 |
|
| 339 |
+
#: delete-duplicate-posts.php:1996
|
| 340 |
msgid "Compare by any meta tag."
|
| 341 |
msgstr ""
|
| 342 |
|
| 343 |
+
#: delete-duplicate-posts.php:2040
|
| 344 |
msgid "Delete which posts?:"
|
| 345 |
msgstr ""
|
| 346 |
|
| 347 |
+
#: delete-duplicate-posts.php:2050
|
| 348 |
msgid "Keep oldest"
|
| 349 |
msgstr ""
|
| 350 |
|
| 351 |
+
#: delete-duplicate-posts.php:2057
|
| 352 |
msgid "Keep latest"
|
| 353 |
msgstr ""
|
| 354 |
|
| 355 |
+
#: delete-duplicate-posts.php:2060
|
| 356 |
msgid ""
|
| 357 |
"Keep the oldest or the latest version of duplicates? Default is keeping the "
|
| 358 |
"oldest, and deleting any subsequent duplicate posts"
|
| 359 |
msgstr ""
|
| 360 |
|
| 361 |
+
#: delete-duplicate-posts.php:2070
|
| 362 |
msgid "Find how many duplicates:"
|
| 363 |
msgstr ""
|
| 364 |
|
| 365 |
+
#: delete-duplicate-posts.php:2077
|
| 366 |
msgid "No limit"
|
| 367 |
msgstr ""
|
| 368 |
|
| 369 |
+
#: delete-duplicate-posts.php:2102
|
| 370 |
msgid ""
|
| 371 |
"If you have many duplicates, the plugin might time out before finding them "
|
| 372 |
"all. Try limiting the amount of duplicates here. Default: Unlimited."
|
| 373 |
msgstr ""
|
| 374 |
|
| 375 |
+
#: delete-duplicate-posts.php:2115
|
| 376 |
msgid "Enable 301 redirects?:"
|
| 377 |
msgstr ""
|
| 378 |
|
| 379 |
+
#: delete-duplicate-posts.php:2127
|
| 380 |
msgid "Automatically 301 redirects deleted posts to the original."
|
| 381 |
msgstr ""
|
| 382 |
|
| 383 |
#. translators: %s: Number of redirects registered
|
| 384 |
+
#: delete-duplicate-posts.php:2135
|
| 385 |
#, php-format
|
| 386 |
msgid "%s redirects saved."
|
| 387 |
msgstr ""
|
| 388 |
|
| 389 |
+
#: delete-duplicate-posts.php:2156
|
| 390 |
msgid "Enable automatic deletion?:"
|
| 391 |
msgstr ""
|
| 392 |
|
| 393 |
+
#: delete-duplicate-posts.php:2168
|
| 394 |
msgid "Clean duplicates automatically."
|
| 395 |
msgstr ""
|
| 396 |
|
| 397 |
+
#: delete-duplicate-posts.php:2175
|
| 398 |
msgid "How often?:"
|
| 399 |
msgstr ""
|
| 400 |
|
| 401 |
+
#: delete-duplicate-posts.php:2198
|
| 402 |
msgid "How often should the cron job run?"
|
| 403 |
msgstr ""
|
| 404 |
|
| 405 |
+
#: delete-duplicate-posts.php:2208
|
| 406 |
msgid "Send status mail?:"
|
| 407 |
msgstr ""
|
| 408 |
|
| 409 |
+
#: delete-duplicate-posts.php:2219
|
| 410 |
msgid "Sends a status email if duplicates have been found."
|
| 411 |
msgstr ""
|
| 412 |
|
| 413 |
+
#: delete-duplicate-posts.php:2226
|
| 414 |
msgid "Email recipient:"
|
| 415 |
msgstr ""
|
| 416 |
|
| 417 |
+
#: delete-duplicate-posts.php:2234
|
| 418 |
msgid "Who should get the notification email."
|
| 419 |
msgstr ""
|
| 420 |
|
| 421 |
+
#: delete-duplicate-posts.php:2248
|
| 422 |
msgid "Enable debug logging?:"
|
| 423 |
msgstr ""
|
| 424 |
|
| 425 |
+
#: delete-duplicate-posts.php:2259
|
| 426 |
msgid "Should only be enabled if debugging a problem."
|
| 427 |
msgstr ""
|
| 428 |
|
| 429 |
+
#: delete-duplicate-posts.php:2265
|
| 430 |
msgid "Save Settings"
|
| 431 |
msgstr ""
|
| 432 |
|
| 433 |
+
#: delete-duplicate-posts.php:2271
|
| 434 |
msgid "The Log"
|
| 435 |
msgstr ""
|
| 436 |
|
| 437 |
+
#: delete-duplicate-posts.php:2280
|
| 438 |
msgid "Reset log"
|
| 439 |
msgstr ""
|
| 440 |
|
| 448 |
"diagnostic tracking."
|
| 449 |
msgstr ""
|
| 450 |
|
| 451 |
+
#: sidebar.php:22
|
| 452 |
msgid "Click here to opt in."
|
| 453 |
msgstr ""
|
| 454 |
|
| 455 |
+
#: sidebar.php:49
|
| 456 |
msgid "We recommend you always make a backup before running this tool."
|
| 457 |
msgstr ""
|
| 458 |
|
| 459 |
+
#: sidebar.php:84
|
| 460 |
+
msgid "Click here"
|
| 461 |
+
msgstr ""
|
| 462 |
+
|
| 463 |
+
#: sidebar.php:102
|
| 464 |
msgid "Our other plugins"
|
| 465 |
msgstr ""
|
| 466 |
|
| 467 |
+
#: sidebar.php:118
|
| 468 |
msgid "Support Forum on WordPress.org"
|
| 469 |
msgstr ""
|
| 470 |
|
| 471 |
+
#: sidebar.php:121
|
| 472 |
msgid "Recreate Databases"
|
| 473 |
msgstr ""
|
| 474 |
|
readme.txt
CHANGED
|
@@ -5,8 +5,8 @@ Tags: delete duplicate posts, delete, duplicate
|
|
| 5 |
License: GPLv2 or later
|
| 6 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
| 7 |
Requires at least: 4.7
|
| 8 |
-
Tested up to: 6.0.
|
| 9 |
-
Stable tag: 4.8.
|
| 10 |
Requires PHP: 5.6
|
| 11 |
|
| 12 |
Get rid of duplicate posts and pages on your blog!
|
|
@@ -54,6 +54,13 @@ You should restore the backup you took of your website before you ran this tool.
|
|
| 54 |
|
| 55 |
== Changelog ==
|
| 56 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 57 |
= 4.8.1 =
|
| 58 |
* Add fixes to prevent menu items being deleted in some cases - "nav_menu_item"
|
| 59 |
* Update Freemius library to v. 2.4.5
|
| 5 |
License: GPLv2 or later
|
| 6 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
| 7 |
Requires at least: 4.7
|
| 8 |
+
Tested up to: 6.0.3
|
| 9 |
+
Stable tag: 4.8.2
|
| 10 |
Requires PHP: 5.6
|
| 11 |
|
| 12 |
Get rid of duplicate posts and pages on your blog!
|
| 54 |
|
| 55 |
== Changelog ==
|
| 56 |
|
| 57 |
+
= 4.8.2 =
|
| 58 |
+
* FIX: E-mails not getting sent - thank you @helenekh
|
| 59 |
+
* Added debug information for email sending in the log.
|
| 60 |
+
* Tested up to WP 6.0.3
|
| 61 |
+
* Updated 3rd party libraries
|
| 62 |
+
* Updated language files for translators
|
| 63 |
+
|
| 64 |
= 4.8.1 =
|
| 65 |
* Add fixes to prevent menu items being deleted in some cases - "nav_menu_item"
|
| 66 |
* Update Freemius library to v. 2.4.5
|
sidebar.php
CHANGED
|
@@ -7,135 +7,125 @@ if ( !defined( 'ABSPATH' ) ) {
|
|
| 7 |
?>
|
| 8 |
|
| 9 |
<div id="sidebar-container" class="ddp_content_cell">
|
| 10 |
-
<?php
|
| 11 |
global $ddp_fs ;
|
| 12 |
|
| 13 |
if ( !$ddp_fs->is_registered() && !$ddp_fs->is_pending_activation() ) {
|
| 14 |
?>
|
| 15 |
-
<div class="sidebarrow optin">
|
| 16 |
-
|
| 17 |
-
|
| 18 |
esc_html_e( 'Help us improve!', 'delete-duplicate-posts' );
|
| 19 |
?></h3>
|
| 20 |
-
|
| 21 |
-
|
| 22 |
esc_html_e( 'Opt-in to our security and feature updates notifications, and non-sensitive diagnostic tracking.', 'delete-duplicate-posts' );
|
| 23 |
?>
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
data-opt="yes"><?php
|
| 27 |
esc_html_e( 'Click here to opt in.', 'delete-duplicate-posts' );
|
| 28 |
?></a>
|
| 29 |
-
|
| 30 |
-
value="<?php
|
| 31 |
echo esc_attr( wp_create_nonce( 'cp-ddp-freemius-opt' ) ) ;
|
| 32 |
?>" />
|
| 33 |
-
</div>
|
| 34 |
-
|
| 35 |
}
|
| 36 |
|
| 37 |
$ddp_deleted_duplicates = get_option( 'ddp_deleted_duplicates' );
|
| 38 |
|
| 39 |
if ( $ddp_deleted_duplicates ) {
|
| 40 |
?>
|
| 41 |
-
<div class="sidebarrow">
|
| 42 |
-
|
| 43 |
-
|
| 44 |
printf(
|
| 45 |
/* translators: %s: Number of deleted posts */
|
| 46 |
esc_html__( '%s duplicates deleted!', 'delete-duplicate-posts' ),
|
| 47 |
esc_html( number_format_i18n( $ddp_deleted_duplicates ) )
|
| 48 |
);
|
| 49 |
?>
|
| 50 |
-
|
| 51 |
-
</div>
|
| 52 |
<?php
|
| 53 |
}
|
| 54 |
|
| 55 |
?>
|
| 56 |
|
| 57 |
-
<div class="sidebarrow">
|
| 58 |
-
|
| 59 |
-
|
| 60 |
esc_html_e( 'We recommend you always make a backup before running this tool.', 'delete-duplicate-posts' );
|
| 61 |
?>
|
| 62 |
-
|
| 63 |
-
</div>
|
| 64 |
|
| 65 |
-
<?php
|
| 66 |
$display_promotion = true;
|
| 67 |
|
| 68 |
if ( $display_promotion ) {
|
| 69 |
?>
|
| 70 |
-
<hr>
|
| 71 |
-
|
| 72 |
-
<div class="sidebarrow ddppro">
|
| 73 |
-
|
| 74 |
-
|
| 75 |
-
|
| 76 |
-
|
| 77 |
-
|
| 78 |
-
|
| 79 |
-
|
| 80 |
-
<?php
|
| 81 |
/*
|
| 82 |
<li>301 Redirect deleted posts <span>Make sure traffic is directed to the right place</span></li>
|
| 83 |
*/
|
| 84 |
?>
|
| 85 |
-
|
| 86 |
-
|
| 87 |
|
| 88 |
-
|
| 89 |
echo esc_url( $ddp_fs->pricing_url() ) ;
|
| 90 |
-
?>" class="button button-primary"
|
| 91 |
-
id="ddpprobutton">$14.99 <del>$19.99</del> /year</br><?php
|
| 92 |
_e( 'Click here', 'delete-duplicate-posts' );
|
| 93 |
?></a>
|
| 94 |
-
|
| 95 |
-
|
| 96 |
-
|
| 97 |
-
|
| 98 |
-
|
| 99 |
-
|
| 100 |
-
|
| 101 |
-
</div><!-- .sidebarrow -->
|
| 102 |
-
<hr>
|
| 103 |
|
| 104 |
-
<?php
|
| 105 |
}
|
| 106 |
|
| 107 |
?>
|
| 108 |
|
| 109 |
-
<div class="sidebarrow">
|
| 110 |
-
|
| 111 |
esc_html_e( 'Our other plugins', 'delete-duplicate-posts' );
|
| 112 |
?></h3>
|
| 113 |
-
|
| 114 |
-
src="<?php
|
| 115 |
echo esc_url( plugin_dir_url( __FILE__ ) . 'images/security-ninja-logo.png' ) ;
|
| 116 |
-
?>"
|
| 117 |
-
alt="Visit wpsecurityninja.com" class="logo"></a>
|
| 118 |
|
| 119 |
<strong>WordPress Security made easy</strong>
|
| 120 |
-
<p>Complete WordPress site protection with firewall, malware scanner, scheduled scans, security tests and much more - all you need to keep your website secure. Free trial.</p>
|
| 121 |
|
| 122 |
-
|
| 123 |
-
|
| 124 |
-
|
| 125 |
-
src="<?php
|
| 126 |
echo esc_url( plugin_dir_url( __FILE__ ) . 'images/seoboosterlogo.png' ) ;
|
| 127 |
-
?>"
|
| 128 |
-
|
| 129 |
-
|
| 130 |
-
|
| 131 |
-
|
| 132 |
-
|
| 133 |
-
|
| 134 |
-
<
|
| 135 |
-
|
| 136 |
-
<p>Email support only for pro customers.</p>
|
| 137 |
-
<p>Free users: <a href="https://wordpress.org/support/plugin/delete-duplicate-posts/" target="_blank"
|
| 138 |
-
rel="noopener"><?php
|
| 139 |
esc_html_e( 'Support Forum on WordPress.org', 'delete-duplicate-posts' );
|
| 140 |
?></a></p>
|
| 141 |
<form method="post" id="ddp_reactivate">
|
|
@@ -145,6 +135,6 @@ wp_nonce_field( 'ddp_reactivate_nonce' );
|
|
| 145 |
<input class="button button-secondary button-small" type="submit" name="ddp_reactivate" value="<?php
|
| 146 |
esc_html_e( 'Recreate Databases', 'delete-duplicate-posts' );
|
| 147 |
?>" />
|
| 148 |
-
</form>
|
| 149 |
-
</div><!-- .sidebarrow -->
|
| 150 |
-
</div>
|
| 7 |
?>
|
| 8 |
|
| 9 |
<div id="sidebar-container" class="ddp_content_cell">
|
| 10 |
+
<?php
|
| 11 |
global $ddp_fs ;
|
| 12 |
|
| 13 |
if ( !$ddp_fs->is_registered() && !$ddp_fs->is_pending_activation() ) {
|
| 14 |
?>
|
| 15 |
+
<div class="sidebarrow optin">
|
| 16 |
+
<h3><span class="dashicons dashicons-warning"></span>
|
| 17 |
+
<?php
|
| 18 |
esc_html_e( 'Help us improve!', 'delete-duplicate-posts' );
|
| 19 |
?></h3>
|
| 20 |
+
<p>
|
| 21 |
+
<?php
|
| 22 |
esc_html_e( 'Opt-in to our security and feature updates notifications, and non-sensitive diagnostic tracking.', 'delete-duplicate-posts' );
|
| 23 |
?>
|
| 24 |
+
</p>
|
| 25 |
+
<a href="javascript:;" class="button button-secondary" onclick="cp_ddp_freemius_opt_in(this)" data-opt="yes"><?php
|
|
|
|
| 26 |
esc_html_e( 'Click here to opt in.', 'delete-duplicate-posts' );
|
| 27 |
?></a>
|
| 28 |
+
<div id="cp-ddp-opt-spin" class="spinner"></div><input type="hidden" id="cp-ddp-freemius-opt-nonce" value="<?php
|
|
|
|
| 29 |
echo esc_attr( wp_create_nonce( 'cp-ddp-freemius-opt' ) ) ;
|
| 30 |
?>" />
|
| 31 |
+
</div>
|
| 32 |
+
<?php
|
| 33 |
}
|
| 34 |
|
| 35 |
$ddp_deleted_duplicates = get_option( 'ddp_deleted_duplicates' );
|
| 36 |
|
| 37 |
if ( $ddp_deleted_duplicates ) {
|
| 38 |
?>
|
| 39 |
+
<div class="sidebarrow">
|
| 40 |
+
<h3>
|
| 41 |
+
<?php
|
| 42 |
printf(
|
| 43 |
/* translators: %s: Number of deleted posts */
|
| 44 |
esc_html__( '%s duplicates deleted!', 'delete-duplicate-posts' ),
|
| 45 |
esc_html( number_format_i18n( $ddp_deleted_duplicates ) )
|
| 46 |
);
|
| 47 |
?>
|
| 48 |
+
</h3>
|
| 49 |
+
</div>
|
| 50 |
<?php
|
| 51 |
}
|
| 52 |
|
| 53 |
?>
|
| 54 |
|
| 55 |
+
<div class="sidebarrow">
|
| 56 |
+
<p class="warning">
|
| 57 |
+
<?php
|
| 58 |
esc_html_e( 'We recommend you always make a backup before running this tool.', 'delete-duplicate-posts' );
|
| 59 |
?>
|
| 60 |
+
</p>
|
| 61 |
+
</div>
|
| 62 |
|
| 63 |
+
<?php
|
| 64 |
$display_promotion = true;
|
| 65 |
|
| 66 |
if ( $display_promotion ) {
|
| 67 |
?>
|
| 68 |
+
<hr>
|
| 69 |
+
|
| 70 |
+
<div class="sidebarrow ddppro">
|
| 71 |
+
<h3><span class="dashicons dashicons-star-filled"></span> DDP Pro <span class="dashicons dashicons-star-filled"></span></h3>
|
| 72 |
+
<ul class="linklist">
|
| 73 |
+
<li><strong>301 Redirects</strong> - Automatically redirect deleted duplicates.</li>
|
| 74 |
+
<li><strong>New compare method</strong> - Compare by meta tag <span>Use with WooCommerce (compare SKU) or other plugins</span></li>
|
| 75 |
+
<li><strong>Choose post status</strong> - Look for duplicates in scheduled posts, drafts or any other available post status on your site.</li>
|
| 76 |
+
<li><strong>Premium Support</strong> - Get help from the developers behind the plugin.</li>
|
| 77 |
+
<?php
|
|
|
|
| 78 |
/*
|
| 79 |
<li>301 Redirect deleted posts <span>Make sure traffic is directed to the right place</span></li>
|
| 80 |
*/
|
| 81 |
?>
|
| 82 |
+
<li><strong>No ads</strong> - Support the developer ;-)</li>
|
| 83 |
+
</ul>
|
| 84 |
|
| 85 |
+
<a href="<?php
|
| 86 |
echo esc_url( $ddp_fs->pricing_url() ) ;
|
| 87 |
+
?>" class="button button-primary" id="ddpprobutton">$14.99 <del>$19.99</del> /year</br><?php
|
|
|
|
| 88 |
_e( 'Click here', 'delete-duplicate-posts' );
|
| 89 |
?></a>
|
| 90 |
+
<p>
|
| 91 |
+
<center><em>Or get <a href="https://checkout.freemius.com/mode/dialog/plugin/925/plan/9473/licenses/1/?billing_cycle=lifetime" target="_blank">a lifetime license for only $29.99</a></em></center>
|
| 92 |
+
</p>
|
| 93 |
+
<div class="moneybackguarantee">
|
| 94 |
+
<p><strong>Money Back Guarantee!</strong></p>
|
| 95 |
+
<p>You are fully protected by our 100% Money Back Guarantee. If during the next 30 days you experience an issue that makes the plugin unusable and we are unable to resolve it, we'll happily consider offering a full refund of your money.</p>
|
| 96 |
+
</div>
|
| 97 |
+
</div><!-- .sidebarrow -->
|
| 98 |
+
<hr>
|
| 99 |
|
| 100 |
+
<?php
|
| 101 |
}
|
| 102 |
|
| 103 |
?>
|
| 104 |
|
| 105 |
+
<div class="sidebarrow">
|
| 106 |
+
<h3><?php
|
| 107 |
esc_html_e( 'Our other plugins', 'delete-duplicate-posts' );
|
| 108 |
?></h3>
|
| 109 |
+
<a href="https://wpsecurityninja.com" target="_blank" style="float: right;" rel="noopener"><img src="<?php
|
|
|
|
| 110 |
echo esc_url( plugin_dir_url( __FILE__ ) . 'images/security-ninja-logo.png' ) ;
|
| 111 |
+
?>" alt="Visit wpsecurityninja.com" class="logo"></a>
|
|
|
|
| 112 |
|
| 113 |
<strong>WordPress Security made easy</strong>
|
| 114 |
+
<p>Complete WordPress site protection with firewall, malware scanner, scheduled scans, security tests and much more - all you need to keep your website secure. Free trial.</p>
|
| 115 |
|
| 116 |
+
<p><a href="https://wpsecurityninja.com/" target="_blank" rel="noopener" class="button button-primary">Visit wpsecurityninja.com</a></p>
|
| 117 |
+
<br />
|
| 118 |
+
<a href="https://cleverplugins.com" target="_blank" style="float: right;" rel="noopener"><img src="<?php
|
|
|
|
| 119 |
echo esc_url( plugin_dir_url( __FILE__ ) . 'images/seoboosterlogo.png' ) ;
|
| 120 |
+
?>" alt="Visit cleverplugins.com" class="logo"></a>
|
| 121 |
+
<p>SEO Booster is a powerful tool for anyone serious about SEO. <a href="https://wordpress.org/plugins/seo-booster/" target="_blank" rel="noopener">wordpress.org/plugins/seo-booster/</a><br />
|
| 122 |
+
<p><a href="https://cleverplugins.com/" target="_blank" rel="noopener" class="button button-primary">Visit cleverplugins.com</a></p>
|
| 123 |
+
|
| 124 |
+
</div><!-- .sidebarrow -->
|
| 125 |
+
<div class="sidebarrow">
|
| 126 |
+
<h3>Need help?</h3>
|
| 127 |
+
<p>Email support only for pro customers.</p>
|
| 128 |
+
<p>Free users: <a href="https://wordpress.org/support/plugin/delete-duplicate-posts/" target="_blank" rel="noopener"><?php
|
|
|
|
|
|
|
|
|
|
| 129 |
esc_html_e( 'Support Forum on WordPress.org', 'delete-duplicate-posts' );
|
| 130 |
?></a></p>
|
| 131 |
<form method="post" id="ddp_reactivate">
|
| 135 |
<input class="button button-secondary button-small" type="submit" name="ddp_reactivate" value="<?php
|
| 136 |
esc_html_e( 'Recreate Databases', 'delete-duplicate-posts' );
|
| 137 |
?>" />
|
| 138 |
+
</form>
|
| 139 |
+
</div><!-- .sidebarrow -->
|
| 140 |
+
</div>
|
vendor/autoload.php
CHANGED
|
@@ -3,8 +3,21 @@
|
|
| 3 |
// autoload.php @generated by Composer
|
| 4 |
|
| 5 |
if (PHP_VERSION_ID < 50600) {
|
| 6 |
-
|
| 7 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 8 |
}
|
| 9 |
|
| 10 |
require_once __DIR__ . '/composer/autoload_real.php';
|
| 3 |
// autoload.php @generated by Composer
|
| 4 |
|
| 5 |
if (PHP_VERSION_ID < 50600) {
|
| 6 |
+
if (!headers_sent()) {
|
| 7 |
+
header('HTTP/1.1 500 Internal Server Error');
|
| 8 |
+
}
|
| 9 |
+
$err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
|
| 10 |
+
if (!ini_get('display_errors')) {
|
| 11 |
+
if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
|
| 12 |
+
fwrite(STDERR, $err);
|
| 13 |
+
} elseif (!headers_sent()) {
|
| 14 |
+
echo $err;
|
| 15 |
+
}
|
| 16 |
+
}
|
| 17 |
+
trigger_error(
|
| 18 |
+
$err,
|
| 19 |
+
E_USER_ERROR
|
| 20 |
+
);
|
| 21 |
}
|
| 22 |
|
| 23 |
require_once __DIR__ . '/composer/autoload_real.php';
|
vendor/composer/InstalledVersions.php
CHANGED
|
@@ -28,7 +28,7 @@ class InstalledVersions
|
|
| 28 |
{
|
| 29 |
/**
|
| 30 |
* @var mixed[]|null
|
| 31 |
-
* @psalm-var array{root: array{name: string,
|
| 32 |
*/
|
| 33 |
private static $installed;
|
| 34 |
|
|
@@ -39,7 +39,7 @@ class InstalledVersions
|
|
| 39 |
|
| 40 |
/**
|
| 41 |
* @var array[]
|
| 42 |
-
* @psalm-var array<string, array{root: array{name: string,
|
| 43 |
*/
|
| 44 |
private static $installedByVendor = array();
|
| 45 |
|
|
@@ -243,7 +243,7 @@ class InstalledVersions
|
|
| 243 |
|
| 244 |
/**
|
| 245 |
* @return array
|
| 246 |
-
* @psalm-return array{name: string,
|
| 247 |
*/
|
| 248 |
public static function getRootPackage()
|
| 249 |
{
|
|
@@ -257,7 +257,7 @@ class InstalledVersions
|
|
| 257 |
*
|
| 258 |
* @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect.
|
| 259 |
* @return array[]
|
| 260 |
-
* @psalm-return array{root: array{name: string,
|
| 261 |
*/
|
| 262 |
public static function getRawData()
|
| 263 |
{
|
|
@@ -280,7 +280,7 @@ class InstalledVersions
|
|
| 280 |
* Returns the raw data of all installed.php which are currently loaded for custom implementations
|
| 281 |
*
|
| 282 |
* @return array[]
|
| 283 |
-
* @psalm-return list<array{root: array{name: string,
|
| 284 |
*/
|
| 285 |
public static function getAllRawData()
|
| 286 |
{
|
|
@@ -303,7 +303,7 @@ class InstalledVersions
|
|
| 303 |
* @param array[] $data A vendor/composer/installed.php data set
|
| 304 |
* @return void
|
| 305 |
*
|
| 306 |
-
* @psalm-param array{root: array{name: string,
|
| 307 |
*/
|
| 308 |
public static function reload($data)
|
| 309 |
{
|
|
@@ -313,7 +313,7 @@ class InstalledVersions
|
|
| 313 |
|
| 314 |
/**
|
| 315 |
* @return array[]
|
| 316 |
-
* @psalm-return list<array{root: array{name: string,
|
| 317 |
*/
|
| 318 |
private static function getInstalled()
|
| 319 |
{
|
| 28 |
{
|
| 29 |
/**
|
| 30 |
* @var mixed[]|null
|
| 31 |
+
* @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}|array{}|null
|
| 32 |
*/
|
| 33 |
private static $installed;
|
| 34 |
|
| 39 |
|
| 40 |
/**
|
| 41 |
* @var array[]
|
| 42 |
+
* @psalm-var array<string, array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
|
| 43 |
*/
|
| 44 |
private static $installedByVendor = array();
|
| 45 |
|
| 243 |
|
| 244 |
/**
|
| 245 |
* @return array
|
| 246 |
+
* @psalm-return array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}
|
| 247 |
*/
|
| 248 |
public static function getRootPackage()
|
| 249 |
{
|
| 257 |
*
|
| 258 |
* @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect.
|
| 259 |
* @return array[]
|
| 260 |
+
* @psalm-return array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}
|
| 261 |
*/
|
| 262 |
public static function getRawData()
|
| 263 |
{
|
| 280 |
* Returns the raw data of all installed.php which are currently loaded for custom implementations
|
| 281 |
*
|
| 282 |
* @return array[]
|
| 283 |
+
* @psalm-return list<array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
|
| 284 |
*/
|
| 285 |
public static function getAllRawData()
|
| 286 |
{
|
| 303 |
* @param array[] $data A vendor/composer/installed.php data set
|
| 304 |
* @return void
|
| 305 |
*
|
| 306 |
+
* @psalm-param array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $data
|
| 307 |
*/
|
| 308 |
public static function reload($data)
|
| 309 |
{
|
| 313 |
|
| 314 |
/**
|
| 315 |
* @return array[]
|
| 316 |
+
* @psalm-return list<array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
|
| 317 |
*/
|
| 318 |
private static function getInstalled()
|
| 319 |
{
|
vendor/composer/installed.php
CHANGED
|
@@ -1,31 +1,31 @@
|
|
| 1 |
<?php return array(
|
| 2 |
'root' => array(
|
|
|
|
| 3 |
'pretty_version' => 'dev-master',
|
| 4 |
'version' => 'dev-master',
|
|
|
|
| 5 |
'type' => 'library',
|
| 6 |
'install_path' => __DIR__ . '/../../',
|
| 7 |
'aliases' => array(),
|
| 8 |
-
'reference' => '2edb6a2c0196a0a9d59fa4277429d1c83549dfc0',
|
| 9 |
-
'name' => '__root__',
|
| 10 |
'dev' => false,
|
| 11 |
),
|
| 12 |
'versions' => array(
|
| 13 |
'__root__' => array(
|
| 14 |
'pretty_version' => 'dev-master',
|
| 15 |
'version' => 'dev-master',
|
|
|
|
| 16 |
'type' => 'library',
|
| 17 |
'install_path' => __DIR__ . '/../../',
|
| 18 |
'aliases' => array(),
|
| 19 |
-
'reference' => '2edb6a2c0196a0a9d59fa4277429d1c83549dfc0',
|
| 20 |
'dev_requirement' => false,
|
| 21 |
),
|
| 22 |
'collizo4sky/persist-admin-notices-dismissal' => array(
|
| 23 |
'pretty_version' => '1.4.4',
|
| 24 |
'version' => '1.4.4.0',
|
|
|
|
| 25 |
'type' => 'library',
|
| 26 |
'install_path' => __DIR__ . '/../collizo4sky/persist-admin-notices-dismissal',
|
| 27 |
'aliases' => array(),
|
| 28 |
-
'reference' => '900739eb6b0ec0210465f5983a6d4e0e420289e4',
|
| 29 |
'dev_requirement' => false,
|
| 30 |
),
|
| 31 |
),
|
| 1 |
<?php return array(
|
| 2 |
'root' => array(
|
| 3 |
+
'name' => '__root__',
|
| 4 |
'pretty_version' => 'dev-master',
|
| 5 |
'version' => 'dev-master',
|
| 6 |
+
'reference' => '8651c832b16b49e85fb2806ef4c86ac0a719707f',
|
| 7 |
'type' => 'library',
|
| 8 |
'install_path' => __DIR__ . '/../../',
|
| 9 |
'aliases' => array(),
|
|
|
|
|
|
|
| 10 |
'dev' => false,
|
| 11 |
),
|
| 12 |
'versions' => array(
|
| 13 |
'__root__' => array(
|
| 14 |
'pretty_version' => 'dev-master',
|
| 15 |
'version' => 'dev-master',
|
| 16 |
+
'reference' => '8651c832b16b49e85fb2806ef4c86ac0a719707f',
|
| 17 |
'type' => 'library',
|
| 18 |
'install_path' => __DIR__ . '/../../',
|
| 19 |
'aliases' => array(),
|
|
|
|
| 20 |
'dev_requirement' => false,
|
| 21 |
),
|
| 22 |
'collizo4sky/persist-admin-notices-dismissal' => array(
|
| 23 |
'pretty_version' => '1.4.4',
|
| 24 |
'version' => '1.4.4.0',
|
| 25 |
+
'reference' => '900739eb6b0ec0210465f5983a6d4e0e420289e4',
|
| 26 |
'type' => 'library',
|
| 27 |
'install_path' => __DIR__ . '/../collizo4sky/persist-admin-notices-dismissal',
|
| 28 |
'aliases' => array(),
|
|
|
|
| 29 |
'dev_requirement' => false,
|
| 30 |
),
|
| 31 |
),
|
