image-source-control / image-source-control Goto Github PK
View Code? Open in Web Editor NEWWordPress plugin to manage and display image sources
Home Page: https://imagesourcecontrol.com
WordPress plugin to manage and display image sources
Home Page: https://imagesourcecontrol.com
=== Image Source Control Lite – Show Image Credits and Captions === Contributors: webzunft Tags: credits, captions, copyrights, attributions, image sources Requires at least: 5.3 Tested up to: 6.5 Stable tag: 2.24.1 Requires PHP: 7.2 License: GPLv3 or later License URI: http://www.gnu.org/licenses/gpl-3.0.html Show image credits, image captions, and copyrights. Manage image sources and warn if they are missing. The original plugin since 2012. == Description == Are you concerned about being held liable for violating copyright law and would like to start crediting owners properly? Do you want to give back to photographers and illustrators by adding image credits, so they are rightfully attributed? Or are you a creator yourself and want to show information on the picture licenses for your image gallery under which publishers can use or purchase your work? Image Source Control is your go-to solution when it comes to handling copyright-protected photos and illustrations. **Image Credit layouts** Choose between different credit displays: * List all image sources below the content of a specific page or place the list manually * Show an image caption overlay above or below the image * Embed a complete image credit list with thumbnails on your website **Frontend Features** * Display image credits in the content, for image galleries, images added by shortcodes, and featured images * … see more listed under Premium features below * Define the layout and position of the caption overlay * Show the image source fully, or only on click or mouseover * Attach the Per-page list automatically, by using a shortcode, or with a PHP function * Display image sources on archive pages * Link to the copyright holder and include a link to the image license **Backend Features** * Add credits for any image file uploaded to the Media library * Dedicated image source fields for the following blocks: Image, Cover Image, Featured Image, Media & Text * Quickly assign a centrally defined source to any image and choose three options: hide image sources for these images, show a specific source (e.g., your name), or the uploader’s name * Warn about missing image sources * Manage, display, and link available licenses **Featured Image Caption** ISC Lite works for Featured Images. By default, you will see the image credits options in the media library and the featured image options in the block editor. The featured image caption shows in the Per-page list with all other image sources on the page. Check out the premium features to display the image caption overlay for featured images. **Premium Features** [Check out all features of Image Source Control](https://imagesourcecontrol.com/?utm_source=wporg&utm_medium=link&utm_campaign=all-features). * List credits for images outside the content * Add multiple links to the source string * Manage image credits for images hosted outside the Media Library * Handle images without file extensions * Bulk-edit image copyright information in the media library * Show the standard picture credit for all images without a selected source * [Display IPTC copyright metadata](https://imagesourcecontrol.com/blog/iptc-copyright-information-image-caption-wordpress/) in the backend and automatically as a standard source in the frontend * Show the full text only after a click or on mouseover on the caption overlay * Choose which data is displayed in the Global List * List only images with a proper source in the Global List * Show image sources for Elementor background images, images in Kadence Blocks Galleries, and Kadence Related Content Carousel * Developer options to show overlay captions for CSS background images * Support for [background images of the Group block](https://imagesourcecontrol.com/blog/group-block-background-image/) * Exclude certain images from showing the overlay by adding the `isc-disable-overlay` class * Unused Images (see below) * Personal email support [See Pricing](https://imagesourcecontrol.com/pricing/?utm_source=wporg&utm_medium=link&utm_campaign=pricing). **Unused Images** Premium media cleaner features to remove unused images safely. – Go to _Media > Unused Images_ to see and remove unused images - Run an additional deep check to see if images are used in widgets, meta fields, or options - Bulk delete unused images - Filter the list by various states [See Pricing](https://imagesourcecontrol.com/pricing/?utm_source=wporg&utm_medium=link&utm_campaign=pricing). == Instructions == Take a look at the [Image Source Control Documentation](https://imagesourcecontrol.com/documentation/?utm_source=wporg&utm_medium=link&utm_campaign=documentation). Find a list of missing images sources and other debug tools under _Media > Image sources_ You can choose to display image sources below the post content or as a small caption overlay above your images. Just visit the settings page of the plugin to enable those options. **Manually included image sources on pages/posts** You can add the Per-page list manually to pages or posts via the shortcode `[isc_list]` in your content editor or a text widget. Use `[isc_list id="123"]` to show the list of any post or page. Use the PHP code `<?php if( function_exists('isc_list') ) { isc_list(); } ?>` within your template files. **List all image sources** You can add a paginated list with ALL attachments and sources attached to posts and pages—the Global list—using the shortcode `[isc_list_all]`. Use `[isc_list_all per_page="25"]` to show only a limited number of images per page. Use `[isc_list_all included="all"]` to show all attachments in the list, including those not explicitly attached to a post. The plugin searches your post content and thumbnail for images (attachments) and lists them if you included at least the image source or marked it to use the default image source. **Remove “nofollow” from all source links** In order to remove “nofollow” from source links, follow the [instructions in our documentation](https://imagesourcecontrol.com/documentation/#remove-nofollow-from-all-source-links). == Installation == This section describes how to install the plugin and get it working. e.g. 1. Upload `image-source-control-isc.zip` through the 'Plugin' menu in your WordPress backend 1. Activate the plugin 1. Visit _Settings > Image Sources_ for the main settings See the _Instructions_ section [here](https://wordpress.org/plugins/image-source-control-isc/#description). == Screenshots == 1. Display image attribution captions as an overlay above the image 1. Display a list of all images of your site and their sources on a dedicated page 1. Edit image source settings in the Image block 1. Bulk-editing image sources in the Media Library 1. Unused Images – Media Cleaner feature to safely remove unused images 1. Customizing the display of image captions as an overlay 1. Customizing the list of image sources displayed under posts 1. Customizing the global list of image sources 1. Manage image usage licenses == Changelog == = 2.24.1 = - Improvement (Pro): catch more background images added by WP Bakery - Fix: a wrong format of the `isc_post_images` post meta value could cause a PHP error = 2.24.0 = - Feature: (Pro) support for background images added by the WP Bakery page builder - Improvement: allow to remove individual entries from the image-posts and post-images indices on the Tools page - Improvement: include all page types in the post-image index list, not only posts - Dev: added the `isc_add_sources_to_content_ignore_post_images_index` filter to allow users to manually ignore the post-images index on all page views in case another plugin or page builder indexes the wrong content - Dev: speed up the query for images without sources - Dev: added debug log entries and log parameters = 2.23.1 = - Fix: a fatal error prevented the settings page from loading fully when Elementor was enabled - Fix: (Pro) license activations on subsites on a multisite didn’t work reliably = 2.23.0 = - Feature: (Pro) two new overlay behaviors: show the full caption only after a click or on mouseover - Improvement: rearranged the settings page for more clarity - Improvement: renamed the "pre-text" option for overlay text to "prefix" - Improvement: added a button to close the newsletter signup form - Dev: rewritten the code that renders and handles the settings page = 2.22.0 = - Note about WordPress 6.5: The lightbox feature in WordPress core changed significantly and no longer supports image source overlays out of the box. I am working on a solution. - Improvement: (Pro) removed the hotfix for Elementor’s Image Optimization feature after they fixed the issue on their end - Improvement: (Pro) added PHP translation files as supported in WP 6.5 - Fix: (Pro) the bulk edit fields could show a wrong default value in the backend for certain options - Dev: (Pro) added the `isc_unused_images_per_page` filter to adjust the number of items per page in the [Unused Images list](https://imagesourcecontrol.com/features/delete-unused-images/) - Dev: adjusted the URL sanitization check to allow special characters in image URLs, like "©" - Dev: prevent a PHP deprecation warning when the `isc_public_global_list_view_path` filter returns an expected value - Dev: remove cached options in `Standard_Source` class to prevent caching of old options = 2.21.0 = - Improvement: (Pro) the bulk edit options are visually more compact now - Improvement: (Pro) Elementor: disable the Image Optimization module in Elementor when checking images in the whole content. This module is known for conflicting with many plugins and in review by the Elementor team - Improvement: (Pro) Avada: recognize the `data-preload-img` attribute for Avada background images - Improvement: (Pro) add a link to some words in the image source, but not to words at the end of the caption - Improvement: show a feedback form when disabling the plugin - Fix: (Pro) comma-separated URLs in the bulk edit fields were wrongly sanitized - Fix: the image source fields in the media edit page disappeared when saving the page - Fix: labels in the block editor were not translated - Fix: newsletter subscription returned an error for subscribed users - Dev: `ISC_Block_Options` threw a PHP warning due to an early hook - Dev: introduced `ISC\User` to gather user-based helper functions - Dev: add an output buffer handle to better analyze a conflict with other output buffers = 2.20.1 = - Fix: image source fields for image blocks in the site editor threw a JavaScript error - Dev: resolved a PHP 8.2 encoding warning - Dev: improved code style in the caption frontend script = 2.20.0 = - Improvement: (Pro) the deep check for image usages looks for attachment IDs in options, e.g., to find site logos - Fix: unused images table layout was shifted for non-English backends - Dev: added a helper class for utility functions - Dev: use a custom unserialize function to prevent object injection = 2.19.0 = - Feature: (Pro) show caption overlay for [Avada Builder background images](https://imagesourcecontrol.com/documentation/compatibility/#Avada_Builder) - Improvement: the check for unused images became faster and more reliable by excluding non-images - Improvement: updated the uninstall script to remove recently added data when the plugin is deleted - Improvement: (Pro) allow editors to use the bulk edit feature for image sources - Improvement: (Pro) introduced pagination for the list of unused images - Improvement: (Pro) bulk selecting enabled for checking unused images and deleting them - Improvement: (Pro) introduced various filters to the list of unused images - Fix: a possible empty post ID for the excerpt block caused a PHP warning - Fix: (Pro) a PHP warning appeared when an unused image was associated with a deleted post - Dev: introducing the ISC\Unused_Images class with improvements to unused images code - Dev: (Pro) use WP_List_Table when displaying the Unused Images list = 2.18.1 = - Improvement: show a hint about where to edit image sources in the block editor, depending on The Block Options settings - Fix: the Global List didn’t show any images when _Miscellaneous settings > Standard source > Exclude from lists_ was enabled = 2.18.0 = - Feature (Pro): show the IPTC copyright or credit meta information as a standard source. See this [blog post](https://imagesourcecontrol.com/blog/iptc-copyright-information-image-caption-wordpress/) - Feature (Pro): authors now see the IPTC copyright and credit meta information in the backend and can copy it to the image source field with one click - Feature (Pro): the standard source appears as a placeholder in the image source field in media list overview, when no individual source is entered - Fix: pre-select the "custom text" standard source option when the plugin options weren’t saved yet to reflect how this state behaves in the frontend - Dev: added an autoloader for plugin classes - Dev: move all features related to the standard source into ISC\Standard_Source - Dev: replace the `isc_raw_attachment_use_standard_source` and `isc_public_attachment_use_standard_source` with the `isc_use_standard_source_for_attachment` filter - Dev: added the `isc_can_load` filter to allow developers to disable ISC on certain pages in the frontend - Dev: added the `isc_force_block_options` filter hook to enable ISC fields in the block options and media modal in the block editor at the same time = 2.17.1 = - Improvement: create a unique name for the log file - Improvement: show the overlay caption in the bottom left in the lightbox (added in WordPress 6.4) where the current position doesn’t show up = 2.17.0 = - Improvement: detect images file names generated by DALL·E - Improvement: (Pro) support for [background images for the Group block](https://imagesourcecontrol.com/blog/group-block-background-image/) in WordPress 6.4 = 2.16.0 = - Feature (Pro): Unused Images feature to help clean up the media library - Improvement: combine images without sources and with empty sources in the "Images without sources" list on the Tools page instead of having two separate tables = 2.15.0 = - Improvement: (Pro) Support for dynamic background images in Elementor templates, e.g., featured images - Improvement: (Pro) Disable links in overlays, e.g., when Elementor assigns a background image to `<a>` tags - Fix: The `<style>` block detection could sometimes cover multiple blocks and add the caption only to the last one - Dev: Added argument to `render_image_source_string()` that allows to disable links in the caption output
Review https://github.com/webgilde/image-source-control/blob/master/admin/assets/js/post.js if we still need it, especially after so many changes on how media is handled and the block editor.
When the general option to add the source list below the content of posts is disabled, the source list is still showing up when the option "Display sources list below full posts" is enabled in the Archive Pages settings.
I see two solutions here:
In any way, a change in the behavior might lead to some users not seeing sources below the content anymore.
Adding a change of behavior to the 2.0 release might raise enough awareness to users checking the output and noticing the issue.
Rewrite https://github.com/webgilde/image-source-control/blob/master/public/assets/js/front-js.js to use plain JavaScript only since WordPress is discouraging the usage of jQuery by default.
Here https://github.com/webgilde/image-source-control/blob/master/public/assets/js/front-js.js#L69
//caption horizontal margin
var tml = 5;
//caption vertical margin
var tmt = 5;
is some margin hardocded. Please make this editable in Options or remove it.
Especially settings in admin/admin.php
While we are at it, we could improve the templates by separating the HTML of the layout for the sections with the HTML that just renders the individual options.
While the options we show for image sources are showing up in the image block, I have the feeling that the code might not be 100% valid and could be improved.
I have added sources, URLs or checked the "It's mine" checkbox on several images that are used on published pages.
Whenever I insert one of the shortcodes [isc_list] or [isc_list_all] into a page, the shortcode is executed (the literal shortcode is not showing anymore), but no content is generated on the page. How can I make the sources display?
(If that has any influence: The site uses Visual Composer elements.)
As reported on wordpress.org, ISC gives an error and prevents features from working in various editors after upgrading to WordPress 5.5.
While I couldn’t reproduce a critical issue that prevented me from using any of the features in these editors, I saw a JavaScript warning that might indicate the problem saying TypeError: jQuery(...).live is not a function
which pointed to https://github.com/webgilde/image-source-control/blob/7d15a3f654a099202fdeb8b0c900dcb6221766d7/admin/assets/js/post.js#L182.
The live() function is deprecated and with jQuery migrate being disabled by default in the WP backend since 5.5, this sounds like a possible explanation for issues. As the documentation states, it would need to be replaced with on()
.
What confuses me is that the error described above happens only with the current release of 1.10.4 but not with master
, which contains the same script.
Sometimes, the image-post relation seems to be broken. Especially after a bug or when indexing failed for other reasons.
ISC should have a method to remove the indexes so that ISC could re-set them.
Setting up the image-post relation should happen when the post is called in the frontend so indexing happens with every page load.
For testing, we could set up a few images and posts, then remove the index and see if they show up a) in the source list on the pages and b) in the full list.
ISC is currently listing image sources for images uploaded to a specific post. However, when the image is removed from that post and used in another, the image source list (the full one) still gets it wrong.
I need to rewrite indexing of images so that it is independent of the "Uploaded to" information stored in Wordpress. Might also be related to #39
This is how my featured image is displayed. I want to add the $source_string manually without the p-markup and source-pretext to my figcaption (maybe add other markup by myself), but I really don't know, how to get that $source_string for my featured image.
<figure>
<img ...>
<figcaption>
caption text - $imagesourcecontroloutput
</figcaption>
</figure>
Output of isc_thumbnail_source()
return '<p class="isc-source-text">' . $options['source_pretext'] . ' ' . $source_string . '</p>';
Looking forward to a hint and a little help
ISC restricts sources to known image formats. .webp
and the very new AVIF format are not among them. I need to test them (especially, if they work with the WP media library) and whitelist them if that is the case.
For sites with many images, it should be possible to change sources in bulk from a simple list on a dedicated page
When first installed, the plugin scans images and posts to create the list of missing sources. I wasn’t able to reproduce an issue, but it could theoretically break sites with many images and posts. We might need to change the index process to something working in batches and using a dedicated page.
In WordPress 5.3, the function wp_get_original_image_path()
was introduced to get the original URL or an image. We might use that in ISC if it also helps to resolve image URLs from the frontend.
When I understand it correctly, it will only work with images uploaded after 5.3. They need the original_image
value in the attachment meta.
See https://make.wordpress.org/core/2019/10/09/introducing-handling-of-big-images-in-wordpress-5-3/
Add an option to automatically inject the full source list to a page that already exists (or is created dynamically).
It should be listed below existing content, if there is any.
Remember to automatically disable the output of the automatic image source list below the content for the selected page. One can do this in can_add_list_to_content
.
Is it possible to import IPTC fields which are embedded in XMP while importing the image to WordPress? I think it would be the field "Credit Line" out of IPTC.
We modifiy the src-URL of the images to use relative URLs instead of absolute URLs. With this, captions are no longer displayed.
The reason for this is that the caption is build by the function get_source_by_url
. This tries to identify the image-id from the URL and the renders the caption using render_image_source_string
. Since the URLs are relative, get_image_by_url
can not identify the image.
I'm curious what the reasoning behind using get_source_by_url
is. The regex already returns the image-id. It is used to check if the image has a source: get_post_meta($id, 'isc_image_source_own', true)
.
So why not call render_image_source_string
directly?
Needs reproducing.
Mentioned in https://wordpress.org/support/topic/nimmt-lastige-arbeit-ab/
We might just fall back to the list below the content on AMP pages since the overlay is not going to work.
On smaller devices, the table of image sources might be cut off. The following CSS rule would help with that and at least allow mobile users to see everything.
.isc_all_image_list_box { overflow: scroll; }
The setup for the sources of images that have the "this is my image" is not self-explanatory enough.
It does not explicitly say that the "image source" input is ignored when that checkbox is enabled.
When one does not enable the "Use authors names" or enter anything into "Custom text for owned images" in the main settings, the output for "own" images is empty even if "Exclude own images" is unchecked.
Some ideas:
ISC does already look for some class types to get the attachment ID instead of looking for the URL in https://github.com/webgilde/image-source-control/blob/7d15a3f654a099202fdeb8b0c900dcb6221766d7/isc.class.php#L226.
We should maybe add the image ID to all attachments, if that is even possible, dynamically using some hooks so that we can read it from there directly. This could speed up the lookup process.
See Line https://github.com/webgilde/image-source-control/blob/v1.10/public/public.php#L108
my link tags have no rel attribute (perhaps because it's an ACF field, perhaps it's because we have a lightbox plugin as well).
this should still be matched correctly. At the moment I changed this line to:
$pattern = '#(<[^>]*class="[^"]*(alignleft|alignright|alignnone|aligncenter).*)?((<a [^>]*(href="([^"]*)"[^>]*)>)? *(<img [^>]*[^>]*src="(.+)".*\/?>).*(</a>)??[^<]*).*(<\/figure.*>)?#isU';
and I have set $id to false in line 121.
With this change, it can find Links withouth rel attribute as well.
New posts cannot be saved or existing ones auto-updated when the [isc_list]
is used in the post content of the block editor. I added it using the /shortcode
block and having images in the content as well. It doesn’t break all the time so I might be missing something.
At the same time, I can see a PHP issue raised in debug.log:
PHP Fatal error: Uncaught Error: Maximum function nesting level of '256' reached, aborting! in /isc/wp-includes/class-wp-block-parser.php:83
Stack trace:
#0 /isc/wp-includes/class-wp-block-parser.php(477): WP_Block_Parser_Block->__construct(NULL, Array, Array, '\n\n', Array)
#1 /isc/wp-includes/class-wp-block-parser.php(548): WP_Block_Parser->freeform('\n\n')
#2 /isc/wp-includes/class-wp-block-parser.php(359): WP_Block_Parser->add_block_from_stack(456)
#3 /isc/wp-includes/class-wp-block-parser.php(236): WP_Block_Parser->proceed()
#4 /isc/wp-includes/blocks.php(521): WP_Block_Parser->parse('<!-- wp:paragra...')
#5 /isc/wp-includes/blocks.php(533): parse_blocks('<!-- wp:paragra...')
#6 /isc in /Users/thomas/Entwicklung/wp-testumgebungen/isc/wp-includes/class-wp-block-parser.php on line 83
Some tests I could do:
We should show a list of images related to a specific post/page on the post edit page. Could be useful for debugging.
Alternatively, we just add a link to the "Images Sources" page where we already show lists of image-post relations, but show them for a particular post, only. This way we don’t need to rewrite a lot of logic.
In the list of missing sources ( upload.php?page=isc_missing_sources_page ) the media title is linked to the page
( /wp-admin/media.php?attachment_id={$ID}&action=edit ) on which an unnecessary button (insert post) is and does not allow me to delete the medium, among other things. It would be better to link to the media editing page from the title
/wp-admin/upload.php?item={$ID}
Instead of saving the source information and the post-image relation in post meta, we should have a dedicated index table. It would be much simpler to debug.
We could still keep the image source relation in post meta, but at least the image source information should move to a custom table. That might also be much faster.
The plugin does not recognize images that have dimensions in the basic name, like ad-300x250.pnp
. get_image_by_url()
strips the 300x250
part.
We would probably need to look for the original URL as well.
The plugin seems to include block editor related files in the frontend.
Find a way to place the source also below images.
Could just use the current overlay logic, but without the placing part.
Taken from https://wordpress.org/support/topic/great-timesaver-21/
If you think about a PRO/Paid Version: I use the same Image Sources often so it would save me even more time if I could pick one from a dropdown boy and/or set a default.
If possible, we should add source options to Gutenberg blocks directly.
That would be great when using WP 5.0 and ongoing and much quicker as well.
As set in https://github.com/webgilde/image-source-control/blob/7d15a3f654a099202fdeb8b0c900dcb6221766d7/admin/admin.php#L678 and also remove the output code.
Add block options to the Gutenberg image block to handle image sources from there.
Notice: Undefined variable: content_after in path\to\plugins\image-source-control-isc\public\public.php on line 166
when using the shortcode [isc_list]
.
Image list is missing completely.
WordPress v4.9.6 based on Bedrock with Twenty SeventeenVersion v1.6
Image Source Control v1.9.5
PHP v7.1.12
As discussed on wordpress.org, it might be useful to not show the source overlay for certain images. In this case, it breaks the Revolution Slider script.
There are a couple of alternatives to resolve this:
the_content
hook function in ISC to run before the other images are injectedThe second solution sounds most useful here and should work without any additional options since we can assume that overlays will always break the slider. It should be built in a way that allows extending it dynamically.
A todo list could look like this:
img
tags for dedicated classes – at least draft a solution for that?The challenge is to think about what users might expect here. Imagine, one chose the overlay method to show sources. The solution above would cause the sources of images in the slider to not being displayed, anywhere. Is this what most users would expect?
In that case, they would probably also have to use the source list under the content or the full source list embedded on a dedicated page.
We still create a wrapper, but maybe it isn’t needed if the image is wrapped in <figure>
and we can just give it our class to save on some HTML clutter.
Show a tooltip so that new users know where the ISC pages are in the WP menu.
The block editor gives a warning when it tries to save a post.
How to reproduce this: Create a new post or update an existing one (with an image in it?) and wait until the block editor tries to store an autosave.
A red warning will come up saying that updating failed.
Looking into the browser console, I see a couple of issues mentioning ISC:
Warning: Each child in a list should have a unique "key" prop.
Check the render method of `IscWithSourceControl(WithInspectorControl(WithInspectorControl(WithToolbarControls(Edit))))`. See https://fb.me/react-warning-keys for more information.
in TextControl (created by IscWithSourceControl(WithInspectorControl(WithInspectorControl(WithToolbarControls(Edit)))))
in IscWithSourceControl(WithInspectorControl(WithInspectorControl(WithToolbarControls(Edit))))
in Unknown (created by WithDispatch(Component))
in WithDispatch(Component)
in Unknown (created by WithMultipleValidation(IscWithSourceControl(WithInspectorControl(WithInspectorControl(WithToolbarControls(Edit))))))
in WithMultipleValidation(IscWithSourceControl(WithInspectorControl(WithInspectorControl(WithToolbarControls(Edit))))) (created by WithFilters(Edit))
in WithFilters(Edit) (created by BlockEdit)
in BlockEdit (created by block_BlockListBlock)
in BlockCrashBoundary (created by block_BlockListBlock)
in div (created by ForwardRef)
in ForwardRef (created by block_BlockListBlock)
in block_BlockListBlock (created by (block_BlockListBlock))
in (block_BlockListBlock) (created by WithFilters(block_BlockListBlock))
in WithFilters(block_BlockListBlock) (created by IfCondition(WithFilters(block_BlockListBlock)))
in IfCondition(WithFilters(block_BlockListBlock)) (created by WithDispatch(IfCondition(WithFilters(block_BlockListBlock))))
in WithDispatch(IfCondition(WithFilters(block_BlockListBlock)))
in Unknown (created by WithSelect(WithDispatch(IfCondition(WithFilters(block_BlockListBlock)))))
in WithSelect(WithDispatch(IfCondition(WithFilters(block_BlockListBlock))))
in Unknown (created by Pure(WithViewportMatch(WithSelect(WithDispatch(IfCondition(WithFilters(block_BlockListBlock)))))))
in Pure(WithViewportMatch(WithSelect(WithDispatch(IfCondition(WithFilters(block_BlockListBlock)))))) (created by BlockList)
in div (created by ForwardRef(RootContainer))
in div (created by InsertionPoint)
in InsertionPoint (created by ForwardRef(RootContainer))
in ForwardRef(RootContainer) (created by BlockList)
in BlockList
in Unknown (created by VisualEditor)
in div (created by CopyHandler)
in CopyHandler (created by WithDispatch(CopyHandler))
in WithDispatch(CopyHandler) (created by VisualEditor)
in div (created by ObserveTyping)
in ObserveTyping (created by WithSafeTimeout(ObserveTyping))
in WithSafeTimeout(ObserveTyping) (created by VisualEditor)
in div (created by WritingFlow)
in div (created by WritingFlow)
in WritingFlow (created by VisualEditor)
in div (created by CopyHandler)
in CopyHandler (created by WithDispatch(CopyHandler))
in WithDispatch(CopyHandler) (created by VisualEditor)
in div (created by Typewriter)
in Typewriter
in Unknown (created by WithSelect(Typewriter))
in WithSelect(Typewriter) (created by VisualEditor)
in div (created by BlockSelectionClearer)
in BlockSelectionClearer (created by WithDispatch(BlockSelectionClearer))
in WithDispatch(BlockSelectionClearer)
in Unknown (created by WithSelect(WithDispatch(BlockSelectionClearer)))
in WithSelect(WithDispatch(BlockSelectionClearer)) (created by VisualEditor)
in VisualEditor (created by Layout)
in div (created by EditorSkeleton)
in div (created by EditorSkeleton)
in div (created by EditorSkeleton)
in EditorSkeleton (created by NavigateRegions(EditorSkeleton))
in div (created by NavigateRegions(EditorSkeleton))
in NavigateRegions(EditorSkeleton) (created by Layout)
in div (created by FocusReturnProvider)
in FocusReturnProvider (created by Layout)
in Layout (created by Editor)
in ErrorBoundary (created by Editor)
in BlockEditorProvider (created by WithDispatch(BlockEditorProvider))
in WithDispatch(BlockEditorProvider)
in Unknown (created by Context.Consumer)
in WithRegistryProvider(WithDispatch(BlockEditorProvider)) (created by EditorProvider)
in EntityProvider (created by EditorProvider)
in EntityProvider (created by EditorProvider)
in EditorProvider (created by WithDispatch(EditorProvider))
in WithDispatch(EditorProvider)
in Unknown (created by WithSelect(WithDispatch(EditorProvider)))
in WithSelect(WithDispatch(EditorProvider))
in Unknown (created by Context.Consumer)
in WithRegistryProvider(WithSelect(WithDispatch(EditorProvider))) (created by Editor)
in div (created by DropZoneProvider)
in DropZoneProvider (created by Editor)
in slot_fill_provider_SlotFillProvider (created by SlotFillProvider)
in SlotFillProvider (created by Editor)
in StrictMode (created by Editor)
in Editor (created by WithDispatch(Editor))
in WithDispatch(Editor)
in Unknown (created by WithSelect(WithDispatch(Editor)))
in WithSelect(WithDispatch(Editor))
and
Warning: A component is changing an uncontrolled input of type text to be controlled. Input elements should not switch from uncontrolled to controlled (or vice versa). Decide between using a controlled or uncontrolled input element for the lifetime of the component. More info: https://fb.me/react-controlled-components
in input (created by TextControl)
in div (created by BaseControl)
in div (created by BaseControl)
in BaseControl (created by TextControl)
in TextControl (created by IscWithSourceControl(WithInspectorControl(WithInspectorControl(WithToolbarControls(Edit)))))
in div (created by PanelBody)
in PanelBody (created by ForwardRef(PanelBody))
in ForwardRef(PanelBody) (created by IscWithSourceControl(WithInspectorControl(WithInspectorControl(WithToolbarControls(Edit)))))
in bubbles_virtually_fill_Fill (created by slot_fill_Fill)
in slot_fill_Fill (created by InspectorControlsFill)
in InspectorControlsFill (created by Context.Consumer)
in IfBlockEditSelected(InspectorControlsFill) (created by IscWithSourceControl(WithInspectorControl(WithInspectorControl(WithToolbarControls(Edit)))))
in IscWithSourceControl(WithInspectorControl(WithInspectorControl(WithToolbarControls(Edit))))
in Unknown (created by WithDispatch(Component))
in WithDispatch(Component)
in Unknown (created by WithMultipleValidation(IscWithSourceControl(WithInspectorControl(WithInspectorControl(WithToolbarControls(Edit))))))
in WithMultipleValidation(IscWithSourceControl(WithInspectorControl(WithInspectorControl(WithToolbarControls(Edit))))) (created by WithFilters(Edit))
in WithFilters(Edit) (created by BlockEdit)
in BlockEdit (created by block_BlockListBlock)
in BlockCrashBoundary (created by block_BlockListBlock)
in div (created by ForwardRef)
in ForwardRef (created by block_BlockListBlock)
in block_BlockListBlock (created by (block_BlockListBlock))
in (block_BlockListBlock) (created by WithFilters(block_BlockListBlock))
in WithFilters(block_BlockListBlock) (created by IfCondition(WithFilters(block_BlockListBlock)))
in IfCondition(WithFilters(block_BlockListBlock)) (created by WithDispatch(IfCondition(WithFilters(block_BlockListBlock))))
in WithDispatch(IfCondition(WithFilters(block_BlockListBlock)))
in Unknown (created by WithSelect(WithDispatch(IfCondition(WithFilters(block_BlockListBlock)))))
in WithSelect(WithDispatch(IfCondition(WithFilters(block_BlockListBlock))))
in Unknown (created by Pure(WithViewportMatch(WithSelect(WithDispatch(IfCondition(WithFilters(block_BlockListBlock)))))))
in Pure(WithViewportMatch(WithSelect(WithDispatch(IfCondition(WithFilters(block_BlockListBlock)))))) (created by BlockList)
in div (created by ForwardRef(RootContainer))
in div (created by InsertionPoint)
in InsertionPoint (created by ForwardRef(RootContainer))
in ForwardRef(RootContainer) (created by BlockList)
in BlockList
in Unknown (created by VisualEditor)
in div (created by CopyHandler)
in CopyHandler (created by WithDispatch(CopyHandler))
in WithDispatch(CopyHandler) (created by VisualEditor)
in div (created by ObserveTyping)
in ObserveTyping (created by WithSafeTimeout(ObserveTyping))
in WithSafeTimeout(ObserveTyping) (created by VisualEditor)
in div (created by WritingFlow)
in div (created by WritingFlow)
in WritingFlow (created by VisualEditor)
in div (created by CopyHandler)
in CopyHandler (created by WithDispatch(CopyHandler))
in WithDispatch(CopyHandler) (created by VisualEditor)
in div (created by Typewriter)
in Typewriter
in Unknown (created by WithSelect(Typewriter))
in WithSelect(Typewriter) (created by VisualEditor)
in div (created by BlockSelectionClearer)
in BlockSelectionClearer (created by WithDispatch(BlockSelectionClearer))
in WithDispatch(BlockSelectionClearer)
in Unknown (created by WithSelect(WithDispatch(BlockSelectionClearer)))
in WithSelect(WithDispatch(BlockSelectionClearer)) (created by VisualEditor)
in VisualEditor (created by Layout)
in div (created by EditorSkeleton)
in div (created by EditorSkeleton)
in div (created by EditorSkeleton)
in EditorSkeleton (created by NavigateRegions(EditorSkeleton))
in div (created by NavigateRegions(EditorSkeleton))
in NavigateRegions(EditorSkeleton) (created by Layout)
in div (created by FocusReturnProvider)
in FocusReturnProvider (created by Layout)
in Layout (created by Editor)
in ErrorBoundary (created by Editor)
in BlockEditorProvider (created by WithDispatch(BlockEditorProvider))
in WithDispatch(BlockEditorProvider)
in Unknown (created by Context.Consumer)
in WithRegistryProvider(WithDispatch(BlockEditorProvider)) (created by EditorProvider)
in EntityProvider (created by EditorProvider)
in EntityProvider (created by EditorProvider)
in EditorProvider (created by WithDispatch(EditorProvider))
in WithDispatch(EditorProvider)
in Unknown (created by WithSelect(WithDispatch(EditorProvider)))
in WithSelect(WithDispatch(EditorProvider))
in Unknown (created by Context.Consumer)
in WithRegistryProvider(WithSelect(WithDispatch(EditorProvider))) (created by Editor)
in div (created by DropZoneProvider)
in DropZoneProvider (created by Editor)
in slot_fill_provider_SlotFillProvider (created by SlotFillProvider)
in SlotFillProvider (created by Editor)
in StrictMode (created by Editor)
in Editor (created by WithDispatch(Editor))
in WithDispatch(Editor)
in Unknown (created by WithSelect(WithDispatch(Editor)))
in WithSelect(WithDispatch(Editor))
The source overlay doesn’t display above images outside the content, like also the featured image. Maybe, we find a way to place all image sources anywhere on a site.
I noticed that the Cover-Image available in the Gutenberg editor will not be recognized.
Some ideas to improve the settings page.
Hey, is there any Option to get a compatibility to Elementor page builder?
For now the Plugin doesn't recognize any Image which is coming from Elementor so far.
Or is there any Option for a function.php or something similar to get the ISC-Information out of Elementors Image-Galleries, Background-Images or the simple Image-Element?
Right now, ISC removes the plugin options on uninstall by default. The desired behavior should be:
E.g., to exclude gravatars automatically
Edit: gravatars don’t use an image file extension, so that shouldn’t be an issue.
Practically, a source would not show up if not given.
The background of this "feature" is rather to prevent unnecessary queries for sources to the database, e.g., profile pictures of authors or other cases in which there are many images, including images from other plugins (blacklist wp-content/plugins/
?
The challenge here would be to properly explain what this is doing and how users can verify that it works properly.
After enabling ISC, add a link to the plugin settings below the plugin name.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.