Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a9333e38f1 | ||
| 2c6d4a0c0c | |||
|
|
604911be84 | ||
|
|
ed82ea7ad9 |
25
.vscode/sftp.json
vendored
Normal file
25
.vscode/sftp.json
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"name": "acornfinehomes.com",
|
||||
"host": "og6.cleverogre.com",
|
||||
"protocol": "sftp",
|
||||
"port": 22,
|
||||
"username": "acornfinehomes",
|
||||
"password": "kwSSrK7nkV3J54nV2E7XcjHH",
|
||||
"privateKeyPath": "~/.ssh/id_rsa",
|
||||
"remotePath": "/home/acornfinehomes/htdocs/acornfinehomes.com/wp-content/plugins/ogre-sort/",
|
||||
"uploadOnSave": true,
|
||||
"useTempFile": false,
|
||||
"openSsh": false,
|
||||
"ignore": [
|
||||
".vscode",
|
||||
".git",
|
||||
".DS_Store",
|
||||
".gitignore",
|
||||
"composer.json",
|
||||
"composer.lock",
|
||||
"gulpfile.js",
|
||||
"Makefile",
|
||||
"package-lock.json",
|
||||
"package.json"
|
||||
]
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"$schema": "https://getcomposer.org/schema.json",
|
||||
"name": "cleverogre/ogre-sort",
|
||||
"version": "1.0.0",
|
||||
"version": "1.1.0",
|
||||
"title": "Ogre Sort",
|
||||
"description": "WordPress plugin which enables drag-and-drop sorting within the admin area for posts, terms, and posts within terms.",
|
||||
"author": "CleverOgre",
|
||||
|
||||
69
inc/class-refresh.php
Normal file
69
inc/class-refresh.php
Normal file
@@ -0,0 +1,69 @@
|
||||
<?php
|
||||
/**
|
||||
* @package ogre-sort
|
||||
* @author cleverogre
|
||||
* @copyright 2026 CleverOgre
|
||||
* @license GLP-3.0-or-later
|
||||
* @version 1.1.0
|
||||
* @since 1.1.0
|
||||
*/
|
||||
|
||||
namespace Ogre\Sort;
|
||||
|
||||
use Ogre\Singleton;
|
||||
use Ogre\Sort as Plugin;
|
||||
|
||||
defined('ABSPATH') || exit;
|
||||
|
||||
final class Refresh {
|
||||
use Singleton;
|
||||
|
||||
const CAPABILITY = 'manage_options';
|
||||
const ACTION = 'ogre-sort-refresh';
|
||||
|
||||
protected function __construct() {
|
||||
add_filter('plugin_action_links_' . Plugin::get_basename(), [$this, 'action_links'], 5);
|
||||
add_action('admin_post_' . self::ACTION, [$this, 'handle_action']);
|
||||
add_action('admin_notices', [$this, 'handle_notices']);
|
||||
}
|
||||
|
||||
public function action_links($links) {
|
||||
if (current_user_can(self::CAPABILITY)) {
|
||||
array_unshift($links, sprintf(
|
||||
'<a href="%s">%s</a>',
|
||||
esc_url(add_query_arg([
|
||||
'_wpnonce' => wp_create_nonce(self::ACTION),
|
||||
], self::get_url())),
|
||||
esc_html(Plugin::__('Refresh'))
|
||||
));
|
||||
}
|
||||
return $links;
|
||||
}
|
||||
|
||||
public function handle_action():void {
|
||||
if (!current_user_can(self::CAPABILITY)) wp_die(Plugin::__('Invalid request.'));
|
||||
check_admin_referer(self::ACTION);
|
||||
|
||||
Sort::instance()->refresh_all();
|
||||
|
||||
wp_redirect(add_query_arg([
|
||||
self::ACTION => '1',
|
||||
], Settings::get_url()));
|
||||
exit;
|
||||
}
|
||||
|
||||
public function handle_notices():void {
|
||||
if (!current_user_can(self::CAPABILITY) || $_GET['page'] != Plugin::get_id() || !isset($_GET[self::ACTION])) return;
|
||||
printf(
|
||||
'<div class="notice notice-success is-dismissable"><p>%s</p></div>',
|
||||
Plugin::esc_html__('All sort relationships successfully refreshed!')
|
||||
);
|
||||
}
|
||||
|
||||
public static function get_url():string {
|
||||
return admin_url('admin-post.php?action=' . self::ACTION);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Refresh::instance();
|
||||
@@ -4,7 +4,7 @@
|
||||
* @author cleverogre
|
||||
* @copyright 2025 CleverOgre
|
||||
* @license GLP-3.0-or-later
|
||||
* @version 1.0.0
|
||||
* @version 1.1.0
|
||||
* @since 1.0.0
|
||||
*/
|
||||
|
||||
@@ -88,6 +88,15 @@ final class Sort {
|
||||
// Post Updating
|
||||
add_action('save_post', [$this, 'save_post'], 10, 3);
|
||||
|
||||
// Ajax
|
||||
add_action('wp_ajax_ogre_sort', [$this, 'sort']);
|
||||
|
||||
$this->enable();
|
||||
}
|
||||
|
||||
protected function enable():void {
|
||||
if (empty($this->relationships)) return;
|
||||
|
||||
// Post Types
|
||||
add_action('pre_get_posts', [$this, 'pre_get_posts'], 10, 1);
|
||||
add_filter('get_previous_post_where', [$this, 'previous_post_where']);
|
||||
@@ -101,9 +110,24 @@ final class Sort {
|
||||
add_filter('wp_get_object_terms', [$this, 'wp_get_object_terms'], 10, 4);
|
||||
add_filter('get_terms', [$this, 'get_terms'], 10, 4);
|
||||
add_action('create_term', [$this, 'add_term_relationship'], 10, 3);
|
||||
}
|
||||
|
||||
// Ajax
|
||||
add_action('wp_ajax_ogre_sort', [$this, 'sort']);
|
||||
protected function disable():void {
|
||||
if (empty($this->relationships)) return;
|
||||
|
||||
// Post Types
|
||||
remove_action('pre_get_posts', [$this, 'pre_get_posts'], 10, 1);
|
||||
remove_filter('get_previous_post_where', [$this, 'previous_post_where']);
|
||||
remove_filter('get_previous_post_sort', [$this, 'previous_post_sort']);
|
||||
remove_filter('get_next_post_where', [$this, 'next_post_where']);
|
||||
remove_filter('get_next_post_sort', [$this, 'next_post_sort']);
|
||||
|
||||
// Taxonomy
|
||||
remove_filter('terms_clauses', [$this, 'terms_clauses'], 10, 3);
|
||||
remove_filter('get_terms_orderby', [$this, 'get_terms_orderby'], 10, 3);
|
||||
remove_filter('wp_get_object_terms', [$this, 'wp_get_object_terms'], 10, 4);
|
||||
remove_filter('get_terms', [$this, 'get_terms'], 10, 4);
|
||||
remove_action('create_term', [$this, 'add_term_relationship'], 10, 3);
|
||||
}
|
||||
|
||||
public function current_screen() {
|
||||
@@ -705,6 +729,8 @@ final class Sort {
|
||||
public function refresh($relationship) {
|
||||
global $wpdb;
|
||||
|
||||
$this->disable();
|
||||
|
||||
switch ($relationship['type']) {
|
||||
|
||||
case 'term':
|
||||
@@ -841,6 +867,8 @@ final class Sort {
|
||||
|
||||
}
|
||||
|
||||
$this->enable();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -6,14 +6,14 @@
|
||||
* @author cleverogre
|
||||
* @copyright 2025 CleverOgre
|
||||
* @license GLP-3.0-or-later
|
||||
* @version 1.0.0
|
||||
* @version 1.1.0
|
||||
* @since 1.0.0
|
||||
*
|
||||
* @wordpress-plugin
|
||||
* Plugin Name: Ogre Sort
|
||||
* Plugin URI: https://plugins.cleverogre.com/plugin/ogre-sort/
|
||||
* Description: WordPress plugin which enables drag-and-drop sorting within the admin area for posts, terms, and posts within terms.
|
||||
* Version: 1.0.0
|
||||
* Version: 1.1.0
|
||||
* Requires at least: 5.0
|
||||
* Requires PHP: 8.0
|
||||
* Author: CleverOgre
|
||||
@@ -41,6 +41,7 @@ final class Sort extends Plugin {
|
||||
$this->add_files([
|
||||
'inc/class-settings.php',
|
||||
'inc/class-sort.php',
|
||||
'inc/class-refresh.php',
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"$schema": "https://www.schemastore.org/package.json",
|
||||
"name": "cleverogre/ogre-sort",
|
||||
"version": "1.0.0",
|
||||
"version": "1.1.0",
|
||||
"title": "Ogre Sort",
|
||||
"description": "WordPress plugin which enables drag-and-drop sorting within the admin area for posts, terms, and posts within terms.",
|
||||
"author": "CleverOgre",
|
||||
|
||||
@@ -3,7 +3,7 @@ Contributors: ogrecooper, cleverogre
|
||||
Tested up to: 6.8
|
||||
Requires at least: 5.0
|
||||
Requires PHP: 8.0
|
||||
Version: 1.0.0
|
||||
Version: 1.1.0
|
||||
License: GPLv3 or later
|
||||
License URI: https://www.gnu.org/licenses/gpl-3.0.html
|
||||
Copyright: CleverOgre
|
||||
@@ -28,5 +28,9 @@ If you don't know what plugin you have downloaded, please contact [CleverOgre](t
|
||||
|
||||
== Changelog ==
|
||||
|
||||
= 1.1.0 - 2026-01-21 =
|
||||
* Add manual refresh action
|
||||
* Fix filtering issue during refresh
|
||||
|
||||
= 1.0.0 - 2025-11-18 =
|
||||
* Initial release
|
||||
|
||||
Reference in New Issue
Block a user