PluginProbe
Adminify – White Label, Admin Menu Editor, Login Customizer / 4.1.3
Adminify – White Label, Admin Menu Editor, Login Customizer v4.1.3
4.3.1 4.3.0 4.2.26 4.2.25 4.2.24 4.2.23 4.2.22 4.2.21 4.2.20 4.2.19 4.2.18 4.2.17 4.2.16 4.2.15 4.2.14 4.2.13 4.2.12 4.2.11 4.2.10 4.2.9 4.2.8 4.2.7 4.2.6 4.2.5 4.1.17 All 164 releases
adminify / Inc / Modules / PostDuplicator / TaxonomyDuplicator.php

TaxonomyDuplicator.php in Adminify – White Label, Admin Menu Editor, Login Customizer 4.1.3, at Inc/Modules/PostDuplicator/TaxonomyDuplicator.php

107 lines 3.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace WPAdminify\Inc\Modules\PostDuplicator;
4
5 use WPAdminify\Inc\Admin\AdminSettings;
6
7 if (!defined('ABSPATH')) {
8 exit; // No direct access allowed.
9 }
10
11 class TaxonomyDuplicator {
12
13 private $clone_title;
14 public $options = [];
15
16 public function __construct() {
17 $this->options = (array) AdminSettings::get_instance()->get('post_duplicator');
18 if( empty($this->options['taxonomies'])){
19 return;
20 }
21 $this->clone_title = AdminSettings::get_instance()->get('jltwp_adminify_wl_plugin_menu_label');
22
23 // Initialize taxonomy duplicator
24 add_action('admin_init', [$this, 'adminify_taxonomy_duplicator_init']);
25 }
26
27 public function adminify_taxonomy_duplicator_init() {
28 $taxonomies = [];
29 if (!empty($this->options['taxonomies'])) {
30 $taxonomies = $this->options['taxonomies'];
31 }
32 $all_taxonomies = get_taxonomies();
33
34 if (empty($taxonomies) || empty(array_intersect($all_taxonomies, $taxonomies))) {
35 return;
36 }
37
38 add_action('admin_action_adminify_duplicate_taxonomy', [$this, 'adminify_duplicate_taxonomy_as_draft']);
39
40 foreach ($taxonomies as $taxonomy) {
41 if (in_array($taxonomy, $all_taxonomies)) {
42 add_filter($taxonomy . '_row_actions', [$this, 'jltwp_adminify_duplicator_row_actions'], 10, 2);
43 }
44 }
45 }
46
47 /**
48 * Add the duplicate link to action list for taxonomy_row_actions
49 */
50 public function jltwp_adminify_duplicator_row_actions($actions, $term) {
51 $adminify_duplicate_link = admin_url('admin.php?action=adminify_duplicate_taxonomy&term=' . $term->term_id);
52 $adminify_duplicate_link = wp_nonce_url($adminify_duplicate_link, 'jltwp_adminify_taxonomy_duplicator_nonce');
53
54 $clone_title = !empty($this->clone_title) ? $this->clone_title : 'Adminify Clone';
55 $duplicate_title = 'Duplicate this taxonomy term: ' . $term->name;
56 $actions['adminify_duplicate'] = sprintf(__('<a href="%1$s" title="%2$s" rel="permalink">%3$s</a>', 'adminify'), $adminify_duplicate_link, $duplicate_title, $clone_title);
57
58 return $actions;
59 }
60
61 /**
62 * Duplicate taxonomy term as a draft
63 */
64 public function adminify_duplicate_taxonomy_as_draft() {
65 if (!(isset($_GET['term']) || isset($_POST['term']) || (isset($_REQUEST['action']) && 'adminify_duplicate_taxonomy' == $_REQUEST['action']))) {
66 wp_die('No taxonomy term to duplicate has been supplied!');
67 }
68
69
70 // Nonce verification
71 if (!wp_verify_nonce(sanitize_text_field(wp_unslash($_REQUEST['_wpnonce'])), 'jltwp_adminify_taxonomy_duplicator_nonce')) {
72 return;
73 }
74
75 $term_id = (isset($_GET['term']) ? absint($_GET['term']) : absint($_POST['term']));
76 $term = get_term($term_id);
77
78 if( isset( $_SERVER['HTTP_REFERER']) && str_contains( $_SERVER['HTTP_REFERER'], 'action=adminify_duplicate_taxonomy' )) {
79 // Redirect to the taxonomy edit page
80 $redirect_url = admin_url('edit-tags.php?taxonomy=' . $term->taxonomy);
81 wp_safe_redirect($redirect_url);
82 exit;
83 }
84 if (is_wp_error($term) || !$term) {
85 wp_die('Failed to retrieve the original taxonomy term: ' . $term_id);
86 }
87
88 // Duplicate the taxonomy term
89 $new_term_args = [
90 'description' => $term->description,
91 'slug' => $term->slug . '-duplicate',
92 'parent' => $term->parent,
93 ];
94
95 $new_term = wp_insert_term($term->name . ' (Duplicate)', $term->taxonomy, $new_term_args);
96
97 if (is_wp_error($new_term)) {
98 wp_die('Failed to duplicate taxonomy term: ' . $new_term->get_error_message());
99 }
100
101 // Redirect to the taxonomy edit page
102 $redirect_url = admin_url('edit-tags.php?taxonomy=' . $term->taxonomy);
103 wp_safe_redirect($redirect_url);
104 exit;
105 }
106 }
107