update
This commit is contained in:
17
wp-content/plugins/taxonomy-terms-order/composer.json
Normal file
17
wp-content/plugins/taxonomy-terms-order/composer.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"name" : "nsp-code/taxonomy-terms-order",
|
||||
"description" : "Order Categories and all custom taxonomies terms (hierarchically) and child terms using a Drag and Drop Sortable javascript capability.",
|
||||
"keywords" : ["category order","terms order", "taxonomy order", "admin order"],
|
||||
"homepage" : "http://www.nsp-code.com/",
|
||||
"authors" : [
|
||||
{
|
||||
"name": "Nsp Code",
|
||||
"email": "contact@nsp-code.com",
|
||||
"homepage": "http://www.nsp-code.com/"
|
||||
}
|
||||
],
|
||||
"type" : "wordpress-plugin",
|
||||
"require" : {
|
||||
"composer/installers": "~1.0"
|
||||
}
|
||||
}
|
||||
40
wp-content/plugins/taxonomy-terms-order/css/to.css
Normal file
40
wp-content/plugins/taxonomy-terms-order/css/to.css
Normal file
@@ -0,0 +1,40 @@
|
||||
|
||||
h2.subtitle {font-size: 15px; font-weight: bold; padding: 20px 0 10px 0}
|
||||
|
||||
#order-terms {}
|
||||
#order-terms img {vertical-align: middle}
|
||||
#order-terms #tto_sortable { list-style-type: none; margin: 20px 0 0; padding: 0; width: 100%; }
|
||||
#order-terms ul {list-style: none;}
|
||||
#order-terms ul.children {margin-left: 25px}
|
||||
|
||||
#order-terms #tto_sortable li > .item { padding: 2px 0px; margin: 4px 0px; border: 1px solid #DDDDDD; cursor: move; -moz-border-radius:6px; background-color: #f9f9f9;}
|
||||
#order-terms #tto_sortable li:nth-child(2n+1) > .item { background-color: #fff !important;}
|
||||
#order-terms #tto_sortable li span { display: block; padding: 5px 10px; color:#555; font-size:13px;}
|
||||
#order-terms #tto_sortable li.placeholder{border: dashed 2px #ccc;height:30px; background-color: #FFF;}
|
||||
|
||||
.wp-list-taxonomy {width: 100%}
|
||||
.wp-list-taxonomy thead tr th{padding: 10px 0; text-align: left;}
|
||||
.wp-list-taxonomy tr {background-color: #FCFCFC;}
|
||||
.wp-list-taxonomy tbody th.check-column { padding: 9px 0 22px;}
|
||||
.wp-list-taxonomy td { color: #555555;}
|
||||
.wp-list-taxonomy td, .wp-list-taxonomy th { border-bottom-color: #DFDFDF; border-top-color: #FFFFFF;}
|
||||
.wp-list-taxonomy th, .wp-list-taxonomy td { overflow: hidden;}
|
||||
.wp-list-taxonomy td { padding: 9px 7px 4px 7px; vertical-align: top;}
|
||||
.wp-list-taxonomy td, .wp-list-taxonomy th { border-style: solid; border-width: 1px 0;}
|
||||
.wp-list-taxonomy * { word-wrap: break-word;}
|
||||
|
||||
#cpt_info_box {padding: 0 10px; border: 1px dashed #6aadcc; background-color: #FFF; margin-top: 10px;
|
||||
-webkit-box-shadow: 1px 1px 7px rgba(50, 50, 50, 0.17);
|
||||
-moz-box-shadow: 1px 1px 7px rgba(50, 50, 50, 0.17);
|
||||
box-shadow: 1px 1px 7px rgba(50, 50, 50, 0.17);}
|
||||
#cpt_info_box a {text-decoration: none}
|
||||
#cpt_info_box #donate_form {float: right; padding: 10px 0 17px; text-align: center; width: 100%;}
|
||||
#p_right {float: right; background-color:#f5f5f5; border: 1px dashed #6aadcc; padding: 0px 10px; margin-top: 10px}
|
||||
.p_s_item {float: right; padding: 0px 5px; margin-top: 10px; margin-bottom: 5px; }
|
||||
.p_s_item.s_gp {padding-top: 2px; margin-left: 5px}
|
||||
|
||||
.menu_tto {margin-right: 4px; display: inline; vertical-align: middle; margin-top: -1px;}
|
||||
|
||||
.clear {clear: both}
|
||||
|
||||
|
||||
BIN
wp-content/plugins/taxonomy-terms-order/images/menu-icon.png
Normal file
BIN
wp-content/plugins/taxonomy-terms-order/images/menu-icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.7 KiB |
BIN
wp-content/plugins/taxonomy-terms-order/images/wpspin_light.gif
Normal file
BIN
wp-content/plugins/taxonomy-terms-order/images/wpspin_light.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 723 B |
75
wp-content/plugins/taxonomy-terms-order/include/addons.php
Normal file
75
wp-content/plugins/taxonomy-terms-order/include/addons.php
Normal file
@@ -0,0 +1,75 @@
|
||||
<?php
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
||||
|
||||
//Co-Authors Plus fix
|
||||
add_action ('to/get_terms_orderby/ignore', 'to_get_terms_orderby_ignore_coauthors', 10, 3);
|
||||
function to_get_terms_orderby_ignore_coauthors( $ignore, $orderby, $args )
|
||||
{
|
||||
if( !function_exists('is_plugin_active') )
|
||||
include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
|
||||
|
||||
if( ! is_plugin_active( 'co-authors-plus/co-authors-plus.php' ))
|
||||
return $ignore;
|
||||
|
||||
if ( ! isset($args['taxonomy']) || count($args['taxonomy']) !== 1 || array_search('author', $args['taxonomy']) === FALSE )
|
||||
return $ignore;
|
||||
|
||||
return TRUE;
|
||||
|
||||
}
|
||||
|
||||
|
||||
//Polylang fix
|
||||
add_action ('to/get_terms_orderby/ignore', 'to_get_terms_orderby_ignore_polylang', 10, 3);
|
||||
function to_get_terms_orderby_ignore_polylang( $ignore, $orderby, $args )
|
||||
{
|
||||
if( !function_exists('is_plugin_active') )
|
||||
include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
|
||||
|
||||
if( ! is_plugin_active( 'polylang/polylang.php' ))
|
||||
return $ignore;
|
||||
|
||||
if ( ! isset( $args['taxonomy'] ) || count( $args['taxonomy'] ) < 1 )
|
||||
return $ignore;
|
||||
|
||||
if( in_array( 'language', $args['taxonomy'] ) )
|
||||
return TRUE;
|
||||
|
||||
return $ignore;
|
||||
|
||||
}
|
||||
|
||||
//WooCommerce Attribute order
|
||||
add_action ('to/get_terms_orderby/ignore', 'to_get_terms_orderby_ignore_woocommerce', 10, 3);
|
||||
function to_get_terms_orderby_ignore_woocommerce( $ignore, $orderby, $args )
|
||||
{
|
||||
if( !function_exists('is_plugin_active') )
|
||||
include_once( ABSPATH . 'wp-admin/includes/plugin.php' );
|
||||
|
||||
if( ! is_plugin_active( 'woocommerce/woocommerce.php' ))
|
||||
return $ignore;
|
||||
|
||||
if ( ! function_exists ( 'wc_get_attribute_taxonomies' ) )
|
||||
return $ignore;
|
||||
|
||||
//create a list of attribute taxonomies
|
||||
$attributes = wc_get_attribute_taxonomies();
|
||||
$found_attributex_tax = array();
|
||||
foreach ( $attributes as $attribute )
|
||||
{
|
||||
$found_attributex_tax[] = 'pa_' . $attribute->attribute_name;
|
||||
}
|
||||
|
||||
if ( ! isset($args['taxonomy']) || count($args['taxonomy']) !== 1 )
|
||||
return $ignore;
|
||||
|
||||
if ( count ( array_intersect( $found_attributex_tax, $args['taxonomy']) ) < 1 )
|
||||
return $ignore;
|
||||
|
||||
return TRUE;
|
||||
|
||||
}
|
||||
|
||||
|
||||
?>
|
||||
@@ -0,0 +1,88 @@
|
||||
<?php
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
||||
|
||||
class TTO_functions
|
||||
{
|
||||
/**
|
||||
* Return default plugin options
|
||||
*
|
||||
*/
|
||||
static public function get_settings()
|
||||
{
|
||||
|
||||
$settings = get_option('tto_options');
|
||||
|
||||
$defaults = array (
|
||||
'capability' => 'manage_options',
|
||||
'autosort' => '1',
|
||||
'adminsort' => '1'
|
||||
);
|
||||
$settings = wp_parse_args( $settings, $defaults );
|
||||
|
||||
return $settings;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @desc
|
||||
*
|
||||
* Return UserLevel
|
||||
*
|
||||
*/
|
||||
static public function userdata_get_user_level($return_as_numeric = FALSE)
|
||||
{
|
||||
global $userdata;
|
||||
|
||||
$user_level = '';
|
||||
for ($i=10; $i >= 0;$i--)
|
||||
{
|
||||
if (current_user_can('level_' . $i) === TRUE)
|
||||
{
|
||||
$user_level = $i;
|
||||
if ($return_as_numeric === FALSE)
|
||||
$user_level = 'level_'.$i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return ($user_level);
|
||||
}
|
||||
|
||||
|
||||
static public function check_table_column()
|
||||
{
|
||||
global $wpdb;
|
||||
|
||||
//check if the menu_order column exists;
|
||||
$query = "SHOW COLUMNS FROM $wpdb->terms
|
||||
LIKE 'term_order'";
|
||||
$result = $wpdb->query($query);
|
||||
|
||||
if ($result == 0)
|
||||
{
|
||||
$query = "ALTER TABLE $wpdb->terms ADD `term_order` INT( 4 ) NULL DEFAULT '0'";
|
||||
$result = $wpdb->query($query);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static public function info_box()
|
||||
{
|
||||
?>
|
||||
<div id="cpt_info_box">
|
||||
<p><?php _e( "Did you find this plugin useful? Please support our work with a donation or write an article about this plugin in your blog with a link to our site", 'taxonomy-terms-order' ) ?> <strong>https://www.nsp-code.com/</strong></p>
|
||||
<h4><?php _e( "Did you know there is an Advanced Version of this plug-in?", 'taxonomy-terms-order' ) ?> <a target="_blank" href="https://www.nsp-code.com/premium-plugins/wordpress-plugins/advanced-taxonomy-terms-order/"><?php _e( "Read more", 'taxonomy-terms-order' ) ?></a></h4>
|
||||
<p><?php _e( "Check our", 'taxonomy-terms-order' ) ?> <a target="_blank" href="https://wordpress.org/plugins/post-types-order/">Post Types Order</a> <?php _e( "plugin which allows to custom sort all posts, pages, custom post types", 'taxonomy-terms-order' ) ?> </p>
|
||||
<p><?php _e('Check our', 'taxonomy-terms-order') ?> <a target="_blank" href="https://wordpress.org/plugins/post-terms-order/">Post Terms Order</a> <?php _e('plugin which allows to custom sort categories and custom taxonomies terms per post basis', 'taxonomy-terms-order') ?> </p>
|
||||
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
?>
|
||||
253
wp-content/plugins/taxonomy-terms-order/include/interface.php
Normal file
253
wp-content/plugins/taxonomy-terms-order/include/interface.php
Normal file
@@ -0,0 +1,253 @@
|
||||
<?php
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
||||
|
||||
|
||||
class TTO_Interface
|
||||
{
|
||||
|
||||
function Interface()
|
||||
{
|
||||
global $wpdb, $wp_locale;
|
||||
|
||||
$taxonomy = isset($_GET['taxonomy']) ? sanitize_key($_GET['taxonomy']) : '';
|
||||
$post_type = isset($_GET['post_type']) ? sanitize_key($_GET['post_type']) : '';
|
||||
if(empty($post_type))
|
||||
{
|
||||
$screen = get_current_screen();
|
||||
|
||||
if(isset($screen->post_type) && !empty($screen->post_type))
|
||||
$post_type = $screen->post_type;
|
||||
else
|
||||
{
|
||||
switch($screen->parent_file)
|
||||
{
|
||||
case "upload.php" :
|
||||
$post_type = 'attachment';
|
||||
break;
|
||||
|
||||
default:
|
||||
$post_type = 'post';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$post_type_data = get_post_type_object($post_type);
|
||||
|
||||
if (!taxonomy_exists($taxonomy))
|
||||
$taxonomy = '';
|
||||
|
||||
?>
|
||||
<div class="wrap">
|
||||
<h2><?php _e( "Taxonomy Order", 'taxonomy-terms-order' ) ?></h2>
|
||||
|
||||
<?php TTO_functions::info_box() ?>
|
||||
|
||||
<div id="ajax-response"></div>
|
||||
|
||||
<noscript>
|
||||
<div class="error message">
|
||||
<p><?php _e( "This plugin can't work without javascript, because it's use drag and drop and AJAX.", 'taxonomy-terms-order' ) ?></p>
|
||||
</div>
|
||||
</noscript>
|
||||
|
||||
<div class="clear"></div>
|
||||
|
||||
<?php
|
||||
|
||||
$current_section_parent_file = '';
|
||||
switch($post_type)
|
||||
{
|
||||
|
||||
case "attachment" :
|
||||
$current_section_parent_file = "upload.php";
|
||||
break;
|
||||
|
||||
default :
|
||||
$current_section_parent_file = "edit.php";
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
?>
|
||||
|
||||
<form action="<?php echo $current_section_parent_file ?>" method="get" id="to_form">
|
||||
<input type="hidden" name="page" value="to-interface-<?php echo esc_attr($post_type) ?>" />
|
||||
<?php
|
||||
|
||||
if (!in_array($post_type, array('post', 'attachment')))
|
||||
echo '<input type="hidden" name="post_type" value="'. esc_attr($post_type) .'" />';
|
||||
|
||||
//output all available taxonomies for this post type
|
||||
|
||||
$post_type_taxonomies = get_object_taxonomies($post_type);
|
||||
|
||||
foreach ($post_type_taxonomies as $key => $taxonomy_name)
|
||||
{
|
||||
$taxonomy_info = get_taxonomy($taxonomy_name);
|
||||
if ($taxonomy_info->hierarchical !== TRUE)
|
||||
unset($post_type_taxonomies[$key]);
|
||||
}
|
||||
|
||||
//use the first taxonomy if emtpy taxonomy
|
||||
if ($taxonomy == '' || !taxonomy_exists($taxonomy))
|
||||
{
|
||||
reset($post_type_taxonomies);
|
||||
$taxonomy = current($post_type_taxonomies);
|
||||
}
|
||||
|
||||
if (count($post_type_taxonomies) > 1)
|
||||
{
|
||||
|
||||
?>
|
||||
|
||||
<h2 class="subtitle"><?php echo ucfirst($post_type_data->labels->name) ?> <?php _e( "Taxonomies", 'taxonomy-terms-order' ) ?></h2>
|
||||
<table cellspacing="0" class="wp-list-taxonomy">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="" class="column-cb check-column" id="cb" scope="col"> </th><th style="" class="" id="author" scope="col"><?php _e( "Taxonomy Title", 'taxonomy-terms-order' ) ?></th><th style="" class="manage-column" id="categories" scope="col"><?php _e( "Total Posts", 'taxonomy-terms-order' ) ?></th> </tr>
|
||||
</thead>
|
||||
|
||||
|
||||
<tbody id="the-list">
|
||||
<?php
|
||||
|
||||
$alternate = FALSE;
|
||||
foreach ($post_type_taxonomies as $post_type_taxonomy)
|
||||
{
|
||||
$taxonomy_info = get_taxonomy($post_type_taxonomy);
|
||||
|
||||
$alternate = $alternate === TRUE ? FALSE :TRUE;
|
||||
|
||||
$args = array(
|
||||
'hide_empty' => 0,
|
||||
'taxonomy' => $post_type_taxonomy
|
||||
);
|
||||
$taxonomy_terms = get_terms( $args );
|
||||
|
||||
?>
|
||||
<tr valign="top" class="<?php if ($alternate === TRUE) {echo 'alternate ';} ?>" id="taxonomy-<?php echo esc_attr($taxonomy) ?>">
|
||||
<th class="check-column" scope="row"><input type="radio" onclick="to_change_taxonomy(this)" value="<?php echo $post_type_taxonomy ?>" <?php if ($post_type_taxonomy == $taxonomy) {echo 'checked="checked"';} ?> name="taxonomy"> </th>
|
||||
<td class="categories column-categories"><b><?php echo $taxonomy_info->label ?></b> (<?php echo $taxonomy_info->labels->singular_name; ?>)</td>
|
||||
<td class="categories column-categories"><?php echo count($taxonomy_terms) ?></td>
|
||||
</tr>
|
||||
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
</tbody>
|
||||
</table>
|
||||
<br />
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
|
||||
<div id="order-terms">
|
||||
|
||||
<div id="post-body">
|
||||
|
||||
<ul class="sortable" id="tto_sortable">
|
||||
<?php
|
||||
$this->listTerms($taxonomy);
|
||||
?>
|
||||
</ul>
|
||||
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
|
||||
<div class="alignleft actions">
|
||||
<p class="submit">
|
||||
<a href="javascript:;" class="save-order button-primary"><?php _e( "Update", 'taxonomy-terms-order' ) ?></a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</form>
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery(document).ready(function() {
|
||||
|
||||
jQuery("ul.sortable").sortable({
|
||||
'tolerance':'intersect',
|
||||
'cursor':'pointer',
|
||||
'items':'> li',
|
||||
'axi': 'y',
|
||||
'placeholder':'placeholder',
|
||||
'nested': 'ul'
|
||||
});
|
||||
|
||||
jQuery(".save-order").bind( "click", function() {
|
||||
var mySortable = new Array();
|
||||
jQuery(".sortable").each( function(){
|
||||
|
||||
var serialized = jQuery(this).sortable("serialize");
|
||||
|
||||
var parent_tag = jQuery(this).parent().get(0).tagName;
|
||||
parent_tag = parent_tag.toLowerCase()
|
||||
if (parent_tag == 'li')
|
||||
{
|
||||
//
|
||||
var tag_id = jQuery(this).parent().attr('id');
|
||||
mySortable[tag_id] = serialized;
|
||||
}
|
||||
else
|
||||
{
|
||||
//
|
||||
mySortable[0] = serialized;
|
||||
}
|
||||
});
|
||||
|
||||
//serialize the array
|
||||
var serialize_data = JSON.stringify( convArrToObj(mySortable));
|
||||
|
||||
jQuery.post( ajaxurl, { action:'update-taxonomy-order', order: serialize_data, nonce : '<?php echo wp_create_nonce( 'update-taxonomy-order' ); ?>' }, function() {
|
||||
jQuery("#ajax-response").html('<div class="message updated fade"><p><?php esc_html_e ( "Items Order Updated", 'taxonomy-terms-order' ) ?></p></div>');
|
||||
jQuery("#ajax-response div").delay(3000).hide("slow");
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
</div>
|
||||
<?php
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
function listTerms($taxonomy)
|
||||
{
|
||||
|
||||
// Query pages.
|
||||
$args = array(
|
||||
'orderby' => 'term_order',
|
||||
'depth' => 0,
|
||||
'child_of' => 0,
|
||||
'hide_empty' => 0
|
||||
);
|
||||
$taxonomy_terms = get_terms($taxonomy, $args);
|
||||
|
||||
$output = '';
|
||||
if (count($taxonomy_terms) > 0)
|
||||
{
|
||||
$output = $this->TOwalkTree($taxonomy_terms, $args['depth'], $args);
|
||||
}
|
||||
|
||||
echo $output;
|
||||
|
||||
}
|
||||
|
||||
function TOwalkTree($taxonomy_terms, $depth, $r)
|
||||
{
|
||||
$walker = new TO_Terms_Walker;
|
||||
$args = array($taxonomy_terms, $depth, $r);
|
||||
return call_user_func_array(array(&$walker, 'walk'), $args);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
93
wp-content/plugins/taxonomy-terms-order/include/options.php
Normal file
93
wp-content/plugins/taxonomy-terms-order/include/options.php
Normal file
@@ -0,0 +1,93 @@
|
||||
<?php
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
||||
|
||||
function to_plugin_options()
|
||||
{
|
||||
$options = TTO_functions::get_settings();
|
||||
|
||||
if (isset($_POST['to_form_submit']) && wp_verify_nonce($_POST['to_form_nonce'],'to_form_submit') )
|
||||
{
|
||||
|
||||
$options['capability'] = sanitize_key($_POST['capability']);
|
||||
|
||||
$options['autosort'] = isset($_POST['autosort']) ? intval($_POST['autosort']) : '';
|
||||
$options['adminsort'] = isset($_POST['adminsort']) ? intval($_POST['adminsort']) : '';
|
||||
|
||||
?><div class="updated fade"><p><?php _e('Settings Saved', 'taxonomy-terms-order') ?></p></div><?php
|
||||
|
||||
update_option('tto_options', $options);
|
||||
}
|
||||
|
||||
?>
|
||||
<div class="wrap">
|
||||
|
||||
<h2><?php _e( "General Settings", 'taxonomy-terms-order' ) ?></h2>
|
||||
|
||||
<?php TTO_functions::info_box() ?>
|
||||
|
||||
<form id="form_data" name="form" method="post">
|
||||
<br />
|
||||
<h2 class="subtitle"><?php _e( "General", 'taxonomy-terms-order' ) ?></h2>
|
||||
<table class="form-table">
|
||||
<tbody>
|
||||
|
||||
<tr valign="top">
|
||||
<th scope="row" style="text-align: right;"><label><?php _e( "Minimum Level to use this plugin", 'taxonomy-terms-order' ) ?></label></th>
|
||||
<td>
|
||||
<select id="role" name="capability">
|
||||
<option value="read" <?php if (isset($options['capability']) && $options['capability'] == "read") echo 'selected="selected"'?>><?php _e('Subscriber', 'taxonomy-terms-order') ?></option>
|
||||
<option value="edit_posts" <?php if (isset($options['capability']) && $options['capability'] == "edit_posts") echo 'selected="selected"'?>><?php _e('Contributor', 'taxonomy-terms-order') ?></option>
|
||||
<option value="publish_posts" <?php if (isset($options['capability']) && $options['capability'] == "publish_posts") echo 'selected="selected"'?>><?php _e('Author', 'taxonomy-terms-order') ?></option>
|
||||
<option value="publish_pages" <?php if (isset($options['capability']) && $options['capability'] == "publish_pages") echo 'selected="selected"'?>><?php _e('Editor', 'taxonomy-terms-order') ?></option>
|
||||
<option value="manage_options" <?php if (!isset($options['capability']) || empty($options['capability']) || (isset($options['capability']) && $options['capability'] == "manage_options")) echo 'selected="selected"'?>><?php _e('Administrator', 'taxonomy-terms-order') ?></option>
|
||||
<?php do_action('tto/admin/plugin_options/capability') ?>
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
<tr valign="top">
|
||||
<th scope="row" style="text-align: right;"><label><?php _e( "Auto Sort", 'taxonomy-terms-order' ) ?></label></th>
|
||||
<td>
|
||||
<select id="autosort" name="autosort">
|
||||
<option value="0" <?php if ($options['autosort'] == "0") echo 'selected="selected"'?>><?php _e('OFF', 'taxonomy-terms-order') ?></option>
|
||||
<option value="1" <?php if ($options['autosort'] == "1") echo 'selected="selected"'?>><?php _e('ON', 'taxonomy-terms-order') ?></option>
|
||||
</select>
|
||||
<label for="autosort"> *(<?php _e( "global setting", 'taxonomy-terms-order' ) ?>) <?php _e( "Additional description and details at ", 'taxonomy-terms-order' ) ?><a target="_blank" href="https://www.nsp-code.com/taxonomy-terms-order-and-auto-sort-admin-sort-description-an-usage/"><?php _e( "Auto Sort Description", 'taxonomy-terms-order' ) ?></a></label>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr valign="top">
|
||||
<th scope="row" style="text-align: right;"><label><?php _e( "Admin Sort", 'taxonomy-terms-order' ) ?></label></th>
|
||||
<td>
|
||||
<select id="adminsort" name="adminsort">
|
||||
<option value="0" <?php if ($options['adminsort'] == "0") echo 'selected="selected"'?>><?php _e('OFF', 'taxonomy-terms-order') ?></option>
|
||||
<option value="1" <?php if ($options['adminsort'] == "1") echo 'selected="selected"'?>><?php _e('ON', 'taxonomy-terms-order') ?></option>
|
||||
</select>
|
||||
<label for="adminsort"><?php _e("This will change the order of terms within the admin interface", 'taxonomy-terms-order') ?>. <?php _e( "Additional description and details at ", 'taxonomy-terms-order' ) ?><a target="_blank" href="https://www.nsp-code.com/taxonomy-terms-order-and-auto-sort-admin-sort-description-an-usage/"><?php _e( "Auto Sort Description", 'taxonomy-terms-order' ) ?></a></label>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
<p class="submit">
|
||||
<input type="submit" name="Submit" class="button-primary" value="<?php _e('Save Settings', 'taxonomy-terms-order') ?>">
|
||||
</p>
|
||||
|
||||
<?php wp_nonce_field('to_form_submit','to_form_nonce'); ?>
|
||||
<input type="hidden" name="to_form_submit" value="true" />
|
||||
|
||||
</form>
|
||||
|
||||
<?php
|
||||
echo '</div>';
|
||||
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -0,0 +1,49 @@
|
||||
<?php
|
||||
|
||||
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
|
||||
|
||||
class TO_Terms_Walker extends Walker
|
||||
{
|
||||
|
||||
var $db_fields = array ('parent' => 'parent', 'id' => 'term_id');
|
||||
|
||||
|
||||
function start_lvl(&$output, $depth = 0, $args = array() )
|
||||
{
|
||||
extract($args, EXTR_SKIP);
|
||||
|
||||
$indent = str_repeat("\t", $depth);
|
||||
$output .= "\n$indent<ul class='children sortable'>\n";
|
||||
}
|
||||
|
||||
|
||||
function end_lvl(&$output, $depth = 0, $args = array())
|
||||
{
|
||||
extract($args, EXTR_SKIP);
|
||||
|
||||
$indent = str_repeat("\t", $depth);
|
||||
$output .= "$indent</ul>\n";
|
||||
}
|
||||
|
||||
|
||||
function start_el(&$output, $term, $depth = 0, $args = array(), $current_object_id = 0)
|
||||
{
|
||||
if ( $depth )
|
||||
$indent = str_repeat("\t", $depth);
|
||||
else
|
||||
$indent = '';
|
||||
|
||||
//extract($args, EXTR_SKIP);
|
||||
$taxonomy = get_taxonomy($term->term_taxonomy_id);
|
||||
$output .= $indent . '<li class="term_type_li" id="item_'.$term->term_id.'"><div class="item"><span>'.apply_filters( 'to/term_title', $term->name, $term ).' </span></div>';
|
||||
}
|
||||
|
||||
|
||||
function end_el(&$output, $object, $depth = 0, $args = array())
|
||||
{
|
||||
$output .= "</li>\n";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
20
wp-content/plugins/taxonomy-terms-order/js/to-javascript.js
Normal file
20
wp-content/plugins/taxonomy-terms-order/js/to-javascript.js
Normal file
@@ -0,0 +1,20 @@
|
||||
|
||||
function to_change_taxonomy(element)
|
||||
{
|
||||
//select the default category (0)
|
||||
jQuery('#to_form #cat').val(jQuery("#to_form #cat option:first").val());
|
||||
jQuery('#to_form').submit();
|
||||
}
|
||||
|
||||
var convArrToObj = function(array){
|
||||
var thisEleObj = new Object();
|
||||
if(typeof array == "object"){
|
||||
for(var i in array){
|
||||
var thisEle = convArrToObj(array[i]);
|
||||
thisEleObj[i] = thisEle;
|
||||
}
|
||||
}else {
|
||||
thisEleObj = array;
|
||||
}
|
||||
return thisEleObj;
|
||||
}
|
||||
Binary file not shown.
@@ -0,0 +1,148 @@
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Category Order and Taxonomy Terms Order\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-12-29 12:16+0200\n"
|
||||
"PO-Revision-Date: 2023-12-29 12:16+0200\n"
|
||||
"Last-Translator: NspCode <contact@nsp-code.com>\n"
|
||||
"Language-Team: nsp-code <electronice_delphi@yahoo.com>\n"
|
||||
"Language: en_US\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Poedit-KeywordsList: _;gettext;__;_e\n"
|
||||
"X-Poedit-Basepath: ..\n"
|
||||
"X-Generator: Poedit 3.4\n"
|
||||
"X-Poedit-SearchPath-0: .\n"
|
||||
|
||||
#: include/functions.php:74
|
||||
msgid ""
|
||||
"Did you find this plugin useful? Please support our work with a donation or "
|
||||
"write an article about this plugin in your blog with a link to our site"
|
||||
msgstr ""
|
||||
|
||||
#: include/functions.php:75
|
||||
msgid "Did you know there is an Advanced Version of this plug-in?"
|
||||
msgstr ""
|
||||
|
||||
#: include/functions.php:75
|
||||
msgid "Read more"
|
||||
msgstr ""
|
||||
|
||||
#: include/functions.php:76 include/functions.php:77
|
||||
msgid "Check our"
|
||||
msgstr ""
|
||||
|
||||
#: include/functions.php:76
|
||||
msgid "plugin which allows to custom sort all posts, pages, custom post types"
|
||||
msgstr ""
|
||||
|
||||
#: include/functions.php:77
|
||||
msgid ""
|
||||
"plugin which allows to custom sort categories and custom taxonomies terms "
|
||||
"per post basis"
|
||||
msgstr ""
|
||||
|
||||
#: include/interface.php:42 taxonomy-terms-order.php:147
|
||||
#: taxonomy-terms-order.php:149 taxonomy-terms-order.php:151
|
||||
msgid "Taxonomy Order"
|
||||
msgstr ""
|
||||
|
||||
#: include/interface.php:50
|
||||
msgid ""
|
||||
"This plugin can't work without javascript, because it's use drag and drop "
|
||||
"and AJAX."
|
||||
msgstr ""
|
||||
|
||||
#: include/interface.php:104
|
||||
msgid "Taxonomies"
|
||||
msgstr ""
|
||||
|
||||
#: include/interface.php:108
|
||||
msgid "Taxonomy Title"
|
||||
msgstr ""
|
||||
|
||||
#: include/interface.php:108
|
||||
msgid "Total Posts"
|
||||
msgstr ""
|
||||
|
||||
#: include/interface.php:160
|
||||
msgid "Update"
|
||||
msgstr ""
|
||||
|
||||
#: include/options.php:17
|
||||
msgid "Settings Saved"
|
||||
msgstr ""
|
||||
|
||||
#: include/options.php:25
|
||||
msgid "General Settings"
|
||||
msgstr ""
|
||||
|
||||
#: include/options.php:31
|
||||
msgid "General"
|
||||
msgstr ""
|
||||
|
||||
#: include/options.php:36
|
||||
msgid "Minimum Level to use this plugin"
|
||||
msgstr ""
|
||||
|
||||
#: include/options.php:39
|
||||
msgid "Subscriber"
|
||||
msgstr ""
|
||||
|
||||
#: include/options.php:40
|
||||
msgid "Contributor"
|
||||
msgstr ""
|
||||
|
||||
#: include/options.php:41
|
||||
msgid "Author"
|
||||
msgstr ""
|
||||
|
||||
#: include/options.php:42
|
||||
msgid "Editor"
|
||||
msgstr ""
|
||||
|
||||
#: include/options.php:43
|
||||
msgid "Administrator"
|
||||
msgstr ""
|
||||
|
||||
#: include/options.php:51
|
||||
msgid "Auto Sort"
|
||||
msgstr ""
|
||||
|
||||
#: include/options.php:54 include/options.php:65
|
||||
msgid "OFF"
|
||||
msgstr ""
|
||||
|
||||
#: include/options.php:55 include/options.php:66
|
||||
msgid "ON"
|
||||
msgstr ""
|
||||
|
||||
#: include/options.php:57
|
||||
msgid "global setting"
|
||||
msgstr ""
|
||||
|
||||
#: include/options.php:57 include/options.php:68
|
||||
msgid "Additional description and details at "
|
||||
msgstr ""
|
||||
|
||||
#: include/options.php:57 include/options.php:68
|
||||
msgid "Auto Sort Description"
|
||||
msgstr ""
|
||||
|
||||
#: include/options.php:62
|
||||
msgid "Admin Sort"
|
||||
msgstr ""
|
||||
|
||||
#: include/options.php:68
|
||||
msgid "This will change the order of terms within the admin interface"
|
||||
msgstr ""
|
||||
|
||||
#: include/options.php:79
|
||||
msgid "Save Settings"
|
||||
msgstr ""
|
||||
|
||||
#: taxonomy-terms-order.php:110
|
||||
msgid "Taxonomy Terms Order"
|
||||
msgstr ""
|
||||
248
wp-content/plugins/taxonomy-terms-order/readme.txt
Normal file
248
wp-content/plugins/taxonomy-terms-order/readme.txt
Normal file
@@ -0,0 +1,248 @@
|
||||
=== Category Order and Taxonomy Terms Order ===
|
||||
Contributors: nsp-code
|
||||
Donate link: http://www.nsp-code.com/donate.php
|
||||
Tags: category order,terms order, taxonomy order, categories sort
|
||||
Requires at least: 2.8
|
||||
Tested up to: 6.5.4
|
||||
Stable tag: 1.8.2
|
||||
|
||||
Order Categories and all custom taxonomies terms (hierarchically) using a Drag and Drop Sortable JavaScript capability.
|
||||
|
||||
== Description ==
|
||||
|
||||
Order Categories and all custom taxonomies terms (hierarchically) using a Drag and Drop Sortable javascript capability. <strong>No Theme/plugins update is required</strong> the code apply the customised sorting to the front queries on the fly.
|
||||
If multiple taxonomies are created for a custom post type, a menu will allow to chose the one need to be sorted. If child categories (terms) are defined, those can be ordered too using the same interface.
|
||||
<br />Also you can have the admin terms interface sorted per your new sort.
|
||||
<br />This plugin is developed by <a target="_blank" href="http://www.nsp-code.com">Nsp-Code</a>
|
||||
|
||||
<br />See the <a target="_blank" href="https://www.nsp-code.com/premium-plugins/wordpress-plugins/advanced-taxonomy-terms-order/">Advanced Taxonomy Terms Order</a> for advanced features.
|
||||
|
||||
== Installation ==
|
||||
|
||||
1. Upload `taxonomy-terms-order` folder to your `/wp-content/plugins/` directory.
|
||||
2. Activate the plugin from Admin > Plugins menu.
|
||||
3. Once activated you should check with Settings > Taxonomy Terms Order
|
||||
4. Use Taxonomy Order link which appears into each post type section to make your sort.
|
||||
|
||||
== Screenshots ==
|
||||
|
||||
1. Category Order Interface.
|
||||
2. Multiple Taxonomies Interface.
|
||||
|
||||
== Frequently Asked Questions ==
|
||||
|
||||
Feel free to contact me at electronice_delphi@yahoo.com
|
||||
|
||||
= Since I have no PHP knowledge at all, is this plugin for me? =
|
||||
|
||||
Absolutely, you can!
|
||||
Unlike many other plugins, you don't have to do any code changes to make your post order to apply, accordingly to custom-defined order. There is an option to auto-update the WordPress queries so the posts will be returned in customised order. This can be turned off (Autosort) to allow customized code usage.
|
||||
|
||||
= I prefer to apply the sort through code, how can be done? =
|
||||
|
||||
Include a 'orderby' => 'term_order' within your get_terms() arguments.
|
||||
|
||||
= What taxonomies will allow me to sort? =
|
||||
|
||||
You can sort ALL taxonomies ( hierarhically active ), including the default Categories.
|
||||
|
||||
= Is there any way i can get my admin interface to use the custom terms order? =
|
||||
|
||||
Absolutely, the plugin can do that. In fact you can configure so only the admin will update and the front side template will display the terms as before.
|
||||
|
||||
= There is a feature that i want it implemented, can you do something about it? =
|
||||
|
||||
All ideas are welcome and i put them on my list to be implemented into the new versions. Anyway this may take time, but if you are in a rush, please consider a small donation and we can arrange something.
|
||||
|
||||
= I still need more features =
|
||||
|
||||
Consider upgrading to our advanced version of this plugin at a very resonable price <a target="_blank" href="http://www.nsp-code.com/premium-plugins/wordpress-plugins/advanced-taxonomy-terms-order/">Advanced Taxonomy Terms Order Order</a>
|
||||
|
||||
== Change Log ==
|
||||
|
||||
= 1.8.2 =
|
||||
- Polylang fix - Ignore the 'language' to avoid unnecessarily sorting.
|
||||
- Set-up the Live Preview for the plugin.
|
||||
- WordPress 6.5.4 compatibility check and tag update
|
||||
|
||||
= 1.8.1 =
|
||||
- WordPress 6.5 compatibility check and tag update
|
||||
|
||||
= 1.8 =
|
||||
- Check if the terms table still includ the custom column, to avoid errors ( mainly when upgrading WordPress )
|
||||
- Code improvements
|
||||
- WordPress 6.4.2 compatibility check and tag update
|
||||
|
||||
= 1.7.9 =
|
||||
- Trigger wp_cache_flush when saving the order to clear the internal caches
|
||||
- WordPress 6.3 compatibility tag
|
||||
|
||||
= 1.7.7 =
|
||||
- Use term name for admin queries, when the admin sort is active, to avoid "random" returns on certain servers, when term order are empty.
|
||||
- WordPress 6.2.2 compatibility tag
|
||||
|
||||
= 1.7.5 =
|
||||
- New filter tto/admin/plugin_options/capability to add custom roles and capabilities.
|
||||
- Compatibility tag update for WordPress 6.2
|
||||
|
||||
= 1.7.4 =
|
||||
- Compatibility tag update for WordPress 6.1.1
|
||||
|
||||
= 1.7.3 =
|
||||
- Use esc_html to escape the ajax response message, to avoid single quotes which will break the code.
|
||||
|
||||
= 1.7.1 =
|
||||
- Add the required column when create a new site, when running under MultiSite environment.
|
||||
|
||||
= 1.7 =
|
||||
- Create the required columns for all sites, when running under MultiSite environment.
|
||||
- Compatibility tag update for WordPress 6.0.1
|
||||
|
||||
= 1.6.1 =
|
||||
- Compatibility tag update for WordPress 6.0
|
||||
|
||||
= 1.6 =
|
||||
- Readme file updates, typos fixes.
|
||||
- Compatibility tag update for WordPress 5.9.1
|
||||
|
||||
= 1.5.9 =
|
||||
- Remove Twitter button
|
||||
- Compatibility tag update for WordPress 5.8.2
|
||||
|
||||
= 1.5.7.7 =
|
||||
- Minor code updates
|
||||
- Code cleanup
|
||||
- Compatibility tag update for WordPress 5.8.1
|
||||
|
||||
= 1.5.7.6 =
|
||||
- Clear the term cache to ensure the updated order reflect for certain caches
|
||||
|
||||
= 1.5.7.5 =
|
||||
- Apply the order within admin if ignore_term_order argument is set and not true
|
||||
- Compatibility tag update for WordPress 5.7
|
||||
|
||||
= 1.5.7.4 =
|
||||
- Fix: Call to undefined function wc_get_attribute_taxonomies()
|
||||
- Compatibility tag update for WordPress 5.6
|
||||
|
||||
= 1.5.7.3 =
|
||||
- Compatibility tag update for WordPress 5.5
|
||||
|
||||
= 1.5.7.2 =
|
||||
- Compatibility tag update for WordPress 5.4
|
||||
|
||||
= 1.5.7.1 =
|
||||
- Compatibility tag update for WordPress 5.3
|
||||
|
||||
= 1.5.7 =
|
||||
- Ignore WooCOmmerce Attributes order as being changed through default interface
|
||||
|
||||
= 1.5.6 =
|
||||
- Rely on 'terms_clauses' filter than 'get_terms_orderby' as producing issues with the $maybe_orderby_meta backward compatibility.
|
||||
- Fix WooCommerce category order apply
|
||||
|
||||
= 1.5.5 =
|
||||
- Ignore admin sort when using columns order within Taxonomy interface
|
||||
|
||||
= 1.5.4 =
|
||||
- Replaced serialize with JSON when saving terms order
|
||||
- New filter to/get_terms_orderby/ignore to allow sort ignore when Autosort is turned On
|
||||
- Addon code to ignore term_order sorting when Co-Authors plugin term query
|
||||
|
||||
= 1.5.3.2 =
|
||||
- Add nonce field for AJAX sort update
|
||||
|
||||
= 1.5.3.1 =
|
||||
- Removed Google Plus share button which triggered some JavaScript errors
|
||||
|
||||
= 1.5.3 =
|
||||
- Use JSON instead serialize method when sending order through AJAX
|
||||
- Updated PO language file
|
||||
|
||||
= 1.5.2.2 =
|
||||
- Default admin capability changed from install_plugins to manage_options to prevent DISALLOW_FILE_MODS issue. https://wordpress.org/support/topic/plugin-breaks-when-disallow_file_mods-is-set-to-true/
|
||||
- Prepare plugin for Composer package
|
||||
- Interface table th elements titles left align
|
||||
- Interface Taxonomy terms count fix
|
||||
|
||||
= 1.5 =
|
||||
- Included 'ignore_term_order' to force menu_order ignore when autosort active.
|
||||
- Translations issues update
|
||||
|
||||
= 1.4.9 =
|
||||
- Remove translations from the package
|
||||
- Removed donate banner
|
||||
- PHP 7 fix
|
||||
- Unused action remove
|
||||
|
||||
= 1.4.8 =
|
||||
- textdomain folder fix
|
||||
- Translation fix for user roles
|
||||
- the_title filter replaced with terms_walker
|
||||
- Add Nonce for admin settings
|
||||
|
||||
= 1.4.7 =
|
||||
- Texdomain change to taxonomy-terms-order to allow translations through translate.wordpress.org
|
||||
- WordPress 4.4 compatibility update
|
||||
- Css updates
|
||||
|
||||
= 1.4.6.1 =
|
||||
- Security bug fix
|
||||
|
||||
= 1.4.5 =
|
||||
- Translation textdomain fix - thanks to Pedro Mendonça
|
||||
- Portuguese localization update - Pedro Mendonça
|
||||
|
||||
= 1.4.4 =
|
||||
- User role switch from deprecated user_level to capabilities
|
||||
- Taxonomy sort for media
|
||||
- Admin Options update
|
||||
|
||||
= 1.4.2 =
|
||||
- Iranian Language (eydaaad@gmail.com)
|
||||
- Admin css updates.
|
||||
|
||||
= 1.4.1 =
|
||||
- Polish Language(Pozdrawiam - www.difreo.pl/ ; Mateusz - www.czar-net.com )
|
||||
|
||||
= 1.4.0 =
|
||||
- Hungarian Language(Adam Laki - http://codeguide.hu/)
|
||||
- Ukrainian translation (Michael Yunat - http://getvoip.com)
|
||||
- Czech translation
|
||||
|
||||
= 1.3.7 =
|
||||
- Brazilian Portuguese Language (Rafael Forcadell - www.rafaelforcadell.com.br)
|
||||
|
||||
= 1.3.6 =
|
||||
- Traditional Chinese Language (Danny - http://sofree.cc)
|
||||
- Minor admin styling
|
||||
|
||||
= 1.3.4 =
|
||||
- Menu walker update
|
||||
- Translations load fix
|
||||
- Japanese language
|
||||
|
||||
= 1.3.0 =
|
||||
- Headers already sent bug fix
|
||||
- Slovak Language (Branco Slovak http://webhostinggeeks.com/user-reviews/)
|
||||
|
||||
= 1.2.9 =
|
||||
- Small updates
|
||||
- German and French languages.
|
||||
|
||||
= 1.2.7 =
|
||||
- Localization implement, Dutch and Romanian.
|
||||
- Many thanks to Anja Fokker http://www.werkgroepen.net/
|
||||
|
||||
|
||||
== Upgrade Notice ==
|
||||
|
||||
Make sure you get the latest version
|
||||
|
||||
|
||||
== Localization ==
|
||||
|
||||
Available in English, Dutch, French, Deutch, Slovak, Japanese, Traditional Chinese, Brazilian Portuguese, Hungarian, Ukrainian, Czech and Romanian
|
||||
Whant to contribute with a translation to your language? Please check at https://translate.wordpress.org/projects/wp-plugins/taxonomy-terms-order
|
||||
|
||||
There isn't any Editors for your native language on plugin Contributors? You can help to moderate! https://translate.wordpress.org/projects/wp-plugins/taxonomy-terms-order/contributors
|
||||
BIN
wp-content/plugins/taxonomy-terms-order/screenshot-1.png
Normal file
BIN
wp-content/plugins/taxonomy-terms-order/screenshot-1.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 27 KiB |
BIN
wp-content/plugins/taxonomy-terms-order/screenshot-2.png
Normal file
BIN
wp-content/plugins/taxonomy-terms-order/screenshot-2.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 33 KiB |
246
wp-content/plugins/taxonomy-terms-order/taxonomy-terms-order.php
Normal file
246
wp-content/plugins/taxonomy-terms-order/taxonomy-terms-order.php
Normal file
@@ -0,0 +1,246 @@
|
||||
<?php
|
||||
/*
|
||||
* Plugin Name: Category Order and Taxonomy Terms Order
|
||||
* Plugin URI: http://www.nsp-code.com
|
||||
* Description: Order Categories and all custom taxonomies terms (hierarchically) and child terms using a Drag and Drop Sortable javascript capability.
|
||||
* Version: 1.8.2
|
||||
* Author: Nsp-Code
|
||||
* Author URI: https://www.nsp-code.com
|
||||
* Author Email: electronice_delphi@yahoo.com
|
||||
* Text Domain: taxonomy-terms-order
|
||||
* Domain Path: /languages/
|
||||
*/
|
||||
|
||||
|
||||
define('TOPATH', plugin_dir_path(__FILE__));
|
||||
define('TOURL', plugins_url('', __FILE__));
|
||||
|
||||
include_once ( TOPATH . '/include/functions.php' );
|
||||
include_once ( TOPATH . '/include/addons.php' );
|
||||
|
||||
register_deactivation_hook(__FILE__, 'TO_deactivated');
|
||||
register_activation_hook(__FILE__, 'TO_activated');
|
||||
|
||||
function TO_activated( $network_wide )
|
||||
{
|
||||
global $wpdb;
|
||||
|
||||
// check if it is a network activation
|
||||
if ( $network_wide )
|
||||
{
|
||||
// Get all blog ids
|
||||
$blogids = $wpdb->get_col("SELECT blog_id FROM $wpdb->blogs");
|
||||
foreach ( $blogids as $blog_id )
|
||||
{
|
||||
switch_to_blog( $blog_id );
|
||||
TTO_functions::check_table_column();
|
||||
restore_current_blog();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
else
|
||||
TTO_functions::check_table_column();
|
||||
}
|
||||
|
||||
|
||||
add_action( 'wp_initialize_site', 'TO_wp_initialize_site', 99, 2 );
|
||||
function TO_wp_initialize_site( $blog_data, $args )
|
||||
{
|
||||
global $wpdb;
|
||||
|
||||
if ( is_plugin_active_for_network('taxonomy-terms-order/taxonomy-terms-order.php') )
|
||||
{
|
||||
switch_to_blog( $blog_data->blog_id );
|
||||
TTO_functions::check_table_column();
|
||||
restore_current_blog();
|
||||
}
|
||||
}
|
||||
|
||||
function TO_deactivated()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
add_action( 'plugins_loaded', 'to_load_textdomain');
|
||||
function to_load_textdomain()
|
||||
{
|
||||
load_plugin_textdomain('taxonomy-terms-order', FALSE, dirname( plugin_basename( __FILE__ ) ) . '/languages');
|
||||
}
|
||||
|
||||
|
||||
//check if the table column still exists
|
||||
add_action( 'plugins_loaded', 'tto_check_setup');
|
||||
function tto_check_setup()
|
||||
{
|
||||
if ( is_admin() )
|
||||
TTO_functions::check_table_column();
|
||||
}
|
||||
|
||||
add_action('admin_print_scripts', 'TO_admin_scripts');
|
||||
function TO_admin_scripts()
|
||||
{
|
||||
wp_enqueue_script('jquery');
|
||||
|
||||
wp_enqueue_script('jquery-ui-sortable');
|
||||
|
||||
$myJsFile = TOURL . '/js/to-javascript.js';
|
||||
wp_register_script('to-javascript', $myJsFile);
|
||||
wp_enqueue_script( 'to-javascript');
|
||||
|
||||
}
|
||||
|
||||
add_action('admin_print_styles', 'TO_admin_styles');
|
||||
function TO_admin_styles()
|
||||
{
|
||||
$myCssFile = TOURL . '/css/to.css';
|
||||
wp_register_style('to.css', $myCssFile);
|
||||
wp_enqueue_style( 'to.css');
|
||||
}
|
||||
|
||||
add_action('admin_menu', 'TO_PluginMenu', 99);
|
||||
function TO_PluginMenu()
|
||||
{
|
||||
include (TOPATH . '/include/interface.php');
|
||||
include (TOPATH . '/include/terms_walker.php');
|
||||
|
||||
include (TOPATH . '/include/options.php');
|
||||
add_options_page('Taxonomy Terms Order', '<img class="menu_tto" src="'. TOURL .'/images/menu-icon.png" alt="" />' . __('Taxonomy Terms Order', 'taxonomy-terms-order'), 'manage_options', 'to-options', 'to_plugin_options');
|
||||
|
||||
$options = TTO_functions::get_settings();
|
||||
|
||||
if(isset($options['capability']) && !empty($options['capability']))
|
||||
$capability = $options['capability'];
|
||||
else if (is_numeric($options['level']))
|
||||
{
|
||||
//maintain the old user level compatibility
|
||||
$capability = TTO_functions::userdata_get_user_level();
|
||||
}
|
||||
else
|
||||
{
|
||||
$capability = 'manage_options';
|
||||
}
|
||||
|
||||
//put a menu within all custom types if apply
|
||||
$post_types = get_post_types();
|
||||
foreach( $post_types as $post_type)
|
||||
{
|
||||
|
||||
//check if there are any taxonomy for this post type
|
||||
$post_type_taxonomies = get_object_taxonomies($post_type);
|
||||
|
||||
foreach ($post_type_taxonomies as $key => $taxonomy_name)
|
||||
{
|
||||
$taxonomy_info = get_taxonomy($taxonomy_name);
|
||||
if (empty($taxonomy_info->hierarchical) || $taxonomy_info->hierarchical !== TRUE)
|
||||
unset($post_type_taxonomies[$key]);
|
||||
}
|
||||
|
||||
if (count($post_type_taxonomies) == 0)
|
||||
continue;
|
||||
|
||||
$TTO_Interface = new TTO_Interface();
|
||||
|
||||
if ($post_type == 'post')
|
||||
add_submenu_page('edit.php', __('Taxonomy Order', 'taxonomy-terms-order'), __('Taxonomy Order', 'taxonomy-terms-order'), $capability, 'to-interface-'.$post_type, array ( $TTO_Interface, 'Interface' ) );
|
||||
elseif ($post_type == 'attachment')
|
||||
add_submenu_page('upload.php', __('Taxonomy Order', 'taxonomy-terms-order'), __('Taxonomy Order', 'taxonomy-terms-order'), $capability, 'to-interface-'.$post_type, array ( $TTO_Interface, 'Interface' ) );
|
||||
else
|
||||
add_submenu_page('edit.php?post_type='.$post_type, __('Taxonomy Order', 'taxonomy-terms-order'), __('Taxonomy Order', 'taxonomy-terms-order'), $capability, 'to-interface-'.$post_type, array ( $TTO_Interface, 'Interface' ) );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
add_filter('terms_clauses', 'TO_apply_order_filter', 10, 3);
|
||||
function TO_apply_order_filter( $clauses, $taxonomies, $args)
|
||||
{
|
||||
if ( apply_filters('to/get_terms_orderby/ignore', FALSE, $clauses['orderby'], $args) )
|
||||
return $clauses;
|
||||
|
||||
$options = TTO_functions::get_settings();
|
||||
|
||||
//if admin make sure use the admin setting
|
||||
if (is_admin())
|
||||
{
|
||||
|
||||
//return if use orderby columns
|
||||
if (isset($_GET['orderby']) && $_GET['orderby'] != 'term_order')
|
||||
return $clauses;
|
||||
|
||||
if ( $options['adminsort'] == "1" && (!isset($args['ignore_term_order']) || (isset($args['ignore_term_order']) && $args['ignore_term_order'] !== TRUE) ) )
|
||||
{
|
||||
if ( $clauses['orderby'] == 'ORDER BY t.name' )
|
||||
$clauses['orderby'] = 'ORDER BY t.term_order '. $clauses['order'] .', t.name';
|
||||
else
|
||||
$clauses['orderby'] = 'ORDER BY t.term_order';
|
||||
|
||||
}
|
||||
|
||||
return $clauses;
|
||||
}
|
||||
|
||||
//if autosort, then force the menu_order
|
||||
if ($options['autosort'] == "1" && (!isset($args['ignore_term_order']) || (isset($args['ignore_term_order']) && $args['ignore_term_order'] !== TRUE) ) )
|
||||
{
|
||||
$clauses['orderby'] = 'ORDER BY t.term_order';
|
||||
}
|
||||
|
||||
return $clauses;
|
||||
}
|
||||
|
||||
|
||||
add_filter('get_terms_orderby', 'TO_get_terms_orderby', 1, 2);
|
||||
function TO_get_terms_orderby($orderby, $args)
|
||||
{
|
||||
if ( apply_filters('to/get_terms_orderby/ignore', FALSE, $orderby, $args) )
|
||||
return $orderby;
|
||||
|
||||
if (isset($args['orderby']) && $args['orderby'] == "term_order" && $orderby != "term_order")
|
||||
return "t.term_order";
|
||||
|
||||
return $orderby;
|
||||
}
|
||||
|
||||
add_action( 'wp_ajax_update-taxonomy-order', 'TO_saveAjaxOrder' );
|
||||
function TO_saveAjaxOrder()
|
||||
{
|
||||
global $wpdb;
|
||||
|
||||
if ( ! wp_verify_nonce( $_POST['nonce'], 'update-taxonomy-order' ) )
|
||||
die();
|
||||
|
||||
$data = stripslashes($_POST['order']);
|
||||
$unserialised_data = json_decode($data, TRUE);
|
||||
|
||||
if (is_array($unserialised_data))
|
||||
foreach($unserialised_data as $key => $values )
|
||||
{
|
||||
//$key_parent = str_replace("item_", "", $key);
|
||||
$items = explode("&", $values);
|
||||
unset($item);
|
||||
foreach ($items as $item_key => $item_)
|
||||
{
|
||||
$items[$item_key] = trim(str_replace("item[]=", "",$item_));
|
||||
}
|
||||
|
||||
if (is_array($items) && count($items) > 0)
|
||||
{
|
||||
foreach( $items as $item_key => $term_id )
|
||||
{
|
||||
$wpdb->update( $wpdb->terms, array('term_order' => ($item_key + 1)), array('term_id' => $term_id) );
|
||||
}
|
||||
clean_term_cache($items);
|
||||
}
|
||||
}
|
||||
|
||||
do_action('tto/update-order');
|
||||
|
||||
wp_cache_flush();
|
||||
|
||||
die();
|
||||
}
|
||||
|
||||
|
||||
?>
|
||||
Reference in New Issue
Block a user