{"id":320280,"date":"2026-06-12T03:30:47","date_gmt":"2026-06-12T03:30:47","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/lskypro\/"},"modified":"2026-06-12T03:30:28","modified_gmt":"2026-06-12T03:30:28","slug":"yaoyue-image-upload-for-lskypro","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/yaoyue-image-upload-for-lskypro\/","author":23296307,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"2.0.5","stable_tag":"2.0.5","tested":"7.0","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"YAOYUE Image Upload for LskyPro","header_author":"\u5996\u6708","header_description":"\u5c06 WordPress \u5a92\u4f53\u4e0a\u4f20\u81f3 LskyPro\uff08\u5170\u7a7a\u56fe\u5e8a\uff09","assets_banners_color":"","last_updated":"2026-06-12 03:30:28","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/xiaoyaohanyue\/lsky_plugin_wp","header_author_uri":"https:\/\/fjwr.xyz","rating":0,"author_block_rating":0,"active_installs":0,"downloads":27,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.0.5":{"tag":"2.0.5","author":"yaoyue","date":"2026-06-12 03:30:28"}},"upgrade_notice":{"2.0.5":"<p>This release improves security checks, settings UI, API endpoint handling, and dual-channel packaging.<\/p>"},"ratings":[],"assets_icons":[],"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["2.0.5"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"LskyPro settings page."}},"plugin_section":[],"plugin_tags":[141888,33095,84,226939,259],"plugin_category":[50],"plugin_contributors":[266758],"plugin_business_model":[],"class_list":["post-320280","plugin","type-plugin","status-publish","hentry","plugin_tags-external-media","plugin_tags-image-hosting","plugin_tags-media","plugin_tags-remote-storage","plugin_tags-upload","plugin_category-media","plugin_contributors-yaoyue","plugin_committers-yaoyue"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/s.w.org\/plugins\/geopattern-icon\/yaoyue-image-upload-for-lskypro.svg","icon_2x":false,"generated":true},"screenshots":[],"raw_content":"<!--section=description-->\n<p>YAOYUE Image Upload for LskyPro uploads image files from the WordPress media workflow to a LskyPro image hosting service configured by the site administrator. After a successful upload, the plugin replaces the media library image URL with the remote image URL returned by LskyPro.<\/p>\n\n<p>Features:<\/p>\n\n<ul>\n<li>LskyPro API v1 \/ v2<\/li>\n<li>Domain-only API configuration. The plugin builds <code>\/api\/v1<\/code> or <code>\/api\/v2<\/code> automatically.<\/li>\n<li>Token configuration.<\/li>\n<li>Temporary username and password token refresh for open-source v1.<\/li>\n<li>Album and storage strategy options for commercial v2.<\/li>\n<li>Plugin option cleanup on uninstall.<\/li>\n<\/ul>\n\n<h4>External Services<\/h4>\n\n<p>This plugin connects to the LskyPro image hosting service configured by the site administrator.<\/p>\n\n<p>The service endpoint is not hard-coded for normal uploads. The administrator must enter their own LskyPro domain in the plugin settings before upload features can work.<\/p>\n\n<p>Data that may be sent to the configured LskyPro service:<\/p>\n\n<ul>\n<li>Image files uploaded through the WordPress media workflow<\/li>\n<li>Image file names<\/li>\n<li>MIME types<\/li>\n<li>The configured LskyPro token<\/li>\n<li>For open-source v1 token refresh only, the username and password entered by the administrator for that request<\/li>\n<\/ul>\n\n<p>The plugin does not store the v1 password. The password is used only during the current token request.<\/p>\n\n<p>Please review the terms and privacy policy of the LskyPro service you configure. If you use a self-hosted LskyPro instance, your own service rules apply. If you use a third-party LskyPro provider, follow that provider's terms and privacy policy.<\/p>\n\n<p>LskyPro project: https:\/\/github.com\/lsky-org\/lsky-pro<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin directory to <code>\/wp-content\/plugins\/yaoyue-image-upload-for-lskypro<\/code>.<\/li>\n<li>Activate the plugin through the WordPress Plugins screen.<\/li>\n<li>Open <code>Settings -&gt; Lsky Pro Settings<\/code>.<\/li>\n<li>Select the API version.<\/li>\n<li>Enter your LskyPro domain, for example <code>https:\/\/img.example.com<\/code>.<\/li>\n<li>Enter or refresh the Token.<\/li>\n<li>Save settings.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20to%20enter%20the%20full%20api%20path%3F\"><h3>Do I need to enter the full API path?<\/h3><\/dt>\n<dd><p>No. Enter only the LskyPro domain. The plugin automatically builds the API endpoint according to the selected API version:<\/p>\n\n<ul>\n<li>v1: <code>https:\/\/img.example.com\/api\/v1<\/code><\/li>\n<li>v2: <code>https:\/\/img.example.com\/api\/v2<\/code><\/li>\n<\/ul><\/dd>\n<dt id=\"does%20the%20plugin%20store%20my%20v1%20password%3F\"><h3>Does the plugin store my v1 password?<\/h3><\/dt>\n<dd><p>No. The password is only used during the current token request and is not saved.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20add%20public%20credit%20links%3F\"><h3>Does the plugin add public credit links?<\/h3><\/dt>\n<dd><p>No. The plugin does not add public \"powered by\" links or credit links to the front-end site.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>2.0.5<\/h4>\n\n<ul>\n<li>Improved settings page security checks and nonce validation.<\/li>\n<li>Added AJAX nonce and capability checks.<\/li>\n<li>Improved settings storage compatibility.<\/li>\n<li>Added WordPress.org and GitHub\/self-hosted dual-channel build flow.<\/li>\n<li>GitHub\/self-hosted channel supports <code>Update URI<\/code> and a self-hosted update manifest.<\/li>\n<li>WordPress.org package uses the <code>yaoyue-image-upload-for-lskypro\/yaoyue-image-upload-for-lskypro.php<\/code> structure.<\/li>\n<li>GitHub\/self-hosted package keeps the legacy <code>lsky_plugin_wp\/LskyPro.php<\/code> structure.<\/li>\n<li>Settings page now requires only the LskyPro domain and builds <code>\/api\/v1<\/code> or <code>\/api\/v2<\/code> automatically.<\/li>\n<li>v1 passwords are no longer stored.<\/li>\n<li>Improved upload error handling.<\/li>\n<li>Replaced direct database table updates with WordPress standard APIs.<\/li>\n<li>Improved remote request validation and error handling.<\/li>\n<li>Added PHP 8.5 compatibility for deprecated <code>finfo_close<\/code> and <code>curl_close<\/code> behavior.<\/li>\n<li>Improved settings page UI.<\/li>\n<\/ul>\n\n<h4>2.0.4<\/h4>\n\n<ul>\n<li>Fixed an upload failure caused by an incorrect variable name.<\/li>\n<\/ul>\n\n<h4>2.0.3<\/h4>\n\n<ul>\n<li>Fixed media library thumbnail display issues.<\/li>\n<\/ul>\n\n<h4>2.0.2<\/h4>\n\n<ul>\n<li>Fixed image name parsing issues in some naming formats.<\/li>\n<\/ul>\n\n<h4>2.0.1<\/h4>\n\n<ul>\n<li>Added support for open-source and paid LskyPro versions.<\/li>\n<li>Added token refresh support.<\/li>\n<li>Added settings link on the plugin list page.<\/li>\n<li>Added uninstall cleanup.<\/li>\n<\/ul>","raw_excerpt":"Upload WordPress media images to LskyPro and replace local media URLs with remote image URLs.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/320280","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=320280"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/yaoyue"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=320280"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=320280"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=320280"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=320280"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=320280"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=320280"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}