--- a/simple-tags/inc/terms-table.php
+++ b/simple-tags/inc/terms-table.php
@@ -118,9 +118,34 @@
$selected_post_type = (!empty($_REQUEST['terms_filter_post_type'])) ? [sanitize_text_field($_REQUEST['terms_filter_post_type'])] : '';
$selected_taxonomy = (!empty($_REQUEST['terms_filter_taxonomy'])) ? sanitize_text_field($_REQUEST['terms_filter_taxonomy']) : '';
- $order_setting = isset($taxonomy_settings[$selected_taxonomy]['order']) ? $taxonomy_settings[$selected_taxonomy]['order'] : 'desc';
+ $allowed_orderby = ['name', 'slug', 'taxonomy', 'count', 'id'];
+ $allowed_order = ['asc', 'desc'];
+
+ $requested_orderby = !empty($_REQUEST['orderby']) ? sanitize_key($_REQUEST['orderby']) : '';
+ $requested_order = !empty($_REQUEST['order']) ? strtolower(sanitize_text_field($_REQUEST['order'])) : '';
+
+ if (!in_array($requested_orderby, $allowed_orderby, true)) {
+ $requested_orderby = '';
+ }
+ if (!in_array($requested_order, $allowed_order, true)) {
+ $requested_order = '';
+ }
+
+ $order_setting = isset($taxonomy_settings[$selected_taxonomy]['order']) ? strtolower($taxonomy_settings[$selected_taxonomy]['order']) : 'desc';
$orderby_setting = isset($taxonomy_settings[$selected_taxonomy]['orderby']) ? $taxonomy_settings[$selected_taxonomy]['orderby'] : 'ID';
+ $orderby_setting = strtolower($orderby_setting);
+ if ($orderby_setting === 'id' || $orderby_setting === 'term_id') {
+ $orderby_setting = 'id';
+ }
+
+ if ($requested_orderby) {
+ $orderby_setting = $requested_orderby;
+ }
+ if ($requested_order) {
+ $order_setting = $requested_order;
+ }
+
// If viewing via taxopress_terms_taxonomy, override to show all terms in that taxonomy
if (!empty($_REQUEST['taxopress_terms_taxonomy'])) {
$selected_taxonomy = sanitize_text_field($_REQUEST['taxopress_terms_taxonomy']);
@@ -138,6 +163,12 @@
foreach ($taxonomies as $taxonomy) {
$order_setting = isset($taxonomy_settings[$taxonomy]['order']) ? $taxonomy_settings[$taxonomy]['order'] : 'desc';
$orderby_setting = isset($taxonomy_settings[$selected_taxonomy]['orderby']) ? $taxonomy_settings[$selected_taxonomy]['orderby'] : 'ID';
+ if ($requested_orderby) {
+ $orderby_setting = $requested_orderby;
+ }
+ if ($requested_order) {
+ $order_setting = $requested_order;
+ }
if ($order_setting === 'taxopress_term_order') {
$manual_order = true;
break;
@@ -160,7 +191,6 @@
'pad_counts' => true,
'update_term_meta_cache' => true,
'search' => $search,
- 'include' => 'all',
];
if (!$use_custom_order) {
@@ -235,7 +265,6 @@
'order' => $order_setting,
'search' => $search,
'hide_empty' => false,
- 'include' => 'all',
'pad_counts' => true,
'update_term_meta_cache' => true,
];
@@ -252,6 +281,13 @@
return [];
}
+ if (!empty($requested_orderby) && $requested_orderby === 'taxonomy') {
+ usort($terms, function ($a, $b) use ($order_setting) {
+ $cmp = strcmp($a->taxonomy, $b->taxonomy);
+ return ($order_setting === 'desc') ? -$cmp : $cmp;
+ });
+ }
+
if ($orderby_setting === 'random') {
shuffle($terms);
if ($order_setting === 'desc') {
--- a/simple-tags/inc/terms.php
+++ b/simple-tags/inc/terms.php
@@ -211,8 +211,11 @@
public function page_manage_terms()
{
// Default order
+ if (!isset($_GET['orderby'])) {
+ $_GET['orderby'] = 'name';
+ }
if (!isset($_GET['order'])) {
- $_GET['order'] = 'name-asc';
+ $_GET['order'] = 'asc';
}
settings_errors(__CLASS__);
--- a/simple-tags/modules/taxopress-ai/classes/TaxoPressAiAjax.php
+++ b/simple-tags/modules/taxopress-ai/classes/TaxoPressAiAjax.php
@@ -776,6 +776,13 @@
$post_type_label = $post_type_details->labels->singular_name;
}
+ if (!current_user_can('edit_post', $post_id)){
+ $response['status'] = 'error';
+ $response['content'] = esc_html__('You do not have permission to edit this post.', 'simple-tags');
+ wp_send_json($response);
+ exit;
+ }
+
if (empty($added_tags) && empty($removed_tags)) {
$response['status'] = 'error';
$response['content'] = sprintf(esc_html__('Click Term to select or deselect from this %1s', 'simple-tags'), esc_html($post_type_label));
--- a/simple-tags/simple-tags.php
+++ b/simple-tags/simple-tags.php
@@ -3,7 +3,7 @@
* Plugin Name: TaxoPress
* Plugin URI: https://wordpress.org/plugins/simple-tags/
* Description: TaxoPress allows you to create and manage Tags, Categories, and all your WordPress taxonomy terms.
- * Version: 3.41.0
+ * Version: 3.42.0
* Author: TaxoPress
* Author URI: https://taxopress.com
* Text Domain: simple-tags
@@ -51,7 +51,7 @@
}
if (!defined('STAGS_VERSION')) {
-define('STAGS_VERSION', '3.41.0');
+define('STAGS_VERSION', '3.42.0');
}
--- a/simple-tags/vendor/autoload.php
+++ b/simple-tags/vendor/autoload.php
@@ -19,4 +19,4 @@
require_once __DIR__ . '/composer/autoload_real.php';
-return ComposerAutoloaderInit4391545f5a841c6c763f54eb9d2770b9::getLoader();
+return ComposerAutoloaderInitc0b9cf8651db3495f9b5dfbdda71f0d8::getLoader();
--- a/simple-tags/vendor/composer/autoload_real.php
+++ b/simple-tags/vendor/composer/autoload_real.php
@@ -2,7 +2,7 @@
// autoload_real.php @generated by Composer
-class ComposerAutoloaderInit4391545f5a841c6c763f54eb9d2770b9
+class ComposerAutoloaderInitc0b9cf8651db3495f9b5dfbdda71f0d8
{
private static $loader;
@@ -24,16 +24,16 @@
require __DIR__ . '/platform_check.php';
- spl_autoload_register(array('ComposerAutoloaderInit4391545f5a841c6c763f54eb9d2770b9', 'loadClassLoader'), true, true);
+ spl_autoload_register(array('ComposerAutoloaderInitc0b9cf8651db3495f9b5dfbdda71f0d8', 'loadClassLoader'), true, true);
self::$loader = $loader = new ComposerAutoloadClassLoader(dirname(__DIR__));
- spl_autoload_unregister(array('ComposerAutoloaderInit4391545f5a841c6c763f54eb9d2770b9', 'loadClassLoader'));
+ spl_autoload_unregister(array('ComposerAutoloaderInitc0b9cf8651db3495f9b5dfbdda71f0d8', 'loadClassLoader'));
require __DIR__ . '/autoload_static.php';
- call_user_func(ComposerAutoloadComposerStaticInit4391545f5a841c6c763f54eb9d2770b9::getInitializer($loader));
+ call_user_func(ComposerAutoloadComposerStaticInitc0b9cf8651db3495f9b5dfbdda71f0d8::getInitializer($loader));
$loader->register(true);
- $filesToLoad = ComposerAutoloadComposerStaticInit4391545f5a841c6c763f54eb9d2770b9::$files;
+ $filesToLoad = ComposerAutoloadComposerStaticInitc0b9cf8651db3495f9b5dfbdda71f0d8::$files;
$requireFile = Closure::bind(static function ($fileIdentifier, $file) {
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
--- a/simple-tags/vendor/composer/autoload_static.php
+++ b/simple-tags/vendor/composer/autoload_static.php
@@ -4,7 +4,7 @@
namespace ComposerAutoload;
-class ComposerStaticInit4391545f5a841c6c763f54eb9d2770b9
+class ComposerStaticInitc0b9cf8651db3495f9b5dfbdda71f0d8
{
public static $files = array (
'320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php',
@@ -54,10 +54,10 @@
public static function getInitializer(ClassLoader $loader)
{
return Closure::bind(function () use ($loader) {
- $loader->prefixLengthsPsr4 = ComposerStaticInit4391545f5a841c6c763f54eb9d2770b9::$prefixLengthsPsr4;
- $loader->prefixDirsPsr4 = ComposerStaticInit4391545f5a841c6c763f54eb9d2770b9::$prefixDirsPsr4;
- $loader->prefixesPsr0 = ComposerStaticInit4391545f5a841c6c763f54eb9d2770b9::$prefixesPsr0;
- $loader->classMap = ComposerStaticInit4391545f5a841c6c763f54eb9d2770b9::$classMap;
+ $loader->prefixLengthsPsr4 = ComposerStaticInitc0b9cf8651db3495f9b5dfbdda71f0d8::$prefixLengthsPsr4;
+ $loader->prefixDirsPsr4 = ComposerStaticInitc0b9cf8651db3495f9b5dfbdda71f0d8::$prefixDirsPsr4;
+ $loader->prefixesPsr0 = ComposerStaticInitc0b9cf8651db3495f9b5dfbdda71f0d8::$prefixesPsr0;
+ $loader->classMap = ComposerStaticInitc0b9cf8651db3495f9b5dfbdda71f0d8::$classMap;
}, null, ClassLoader::class);
}
--- a/simple-tags/vendor/composer/installed.php
+++ b/simple-tags/vendor/composer/installed.php
@@ -3,7 +3,7 @@
'name' => 'taxopress/simple-tags',
'pretty_version' => 'dev-master',
'version' => 'dev-master',
- 'reference' => 'ffc503b436bc850fc2d9e7b23efe09e20cc5a3fd',
+ 'reference' => '64fe583c0ddd325962283417f6ed7044fb219975',
'type' => 'wordpress-plugin',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
@@ -49,7 +49,7 @@
'taxopress/simple-tags' => array(
'pretty_version' => 'dev-master',
'version' => 'dev-master',
- 'reference' => 'ffc503b436bc850fc2d9e7b23efe09e20cc5a3fd',
+ 'reference' => '64fe583c0ddd325962283417f6ed7044fb219975',
'type' => 'wordpress-plugin',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),