[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fBtd6A1ETpIFw3Kz6I1APp7QmBL-cMnfy_8HlScMHZAE":3},{"slug":4,"name":5,"version":6,"author":7,"author_profile":8,"description":9,"short_description":10,"active_installs":11,"downloaded":12,"rating":13,"num_ratings":14,"last_updated":15,"tested_up_to":16,"requires_at_least":17,"requires_php":18,"tags":19,"homepage":24,"download_link":25,"security_score":26,"vuln_count":27,"unpatched_count":27,"last_vuln_date":28,"fetched_at":29,"vulnerabilities":30,"developer":31,"crawl_stats":28,"alternatives":38,"analysis":146,"fingerprints":657},"text-truncator","Text Truncator","1","miunosoft","https:\u002F\u002Fprofiles.wordpress.org\u002Fmiunosoft\u002F","\u003Cp>Do you have too long text elements sticking out and breaking the web site layout?\u003C\u002Fp>\n\u003Cp>If you have such a problem, fix their length by specifying the elements with CSS selectors.\u003C\u002Fp>\n\u003Cp>Notes: you need a basic understanding of CSS (jQuery) selectors to use this plugin.\u003C\u002Fp>\n\u003Ch4>Supported Language\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>English\u003C\u002Fli>\n\u003C\u002Ful>\n","Truncates text of specified HTML elements by number of lines.",10,1584,100,2,"2015-07-04T22:20:00.000Z","4.2.39","3.3","",[20,21,22,23],"appearance","text","truncate","truncator","http:\u002F\u002Fen.michaeluno.jp\u002Ftext-truncator","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Ftext-truncator.1.zip",85,0,null,"2026-03-15T15:16:48.613Z",[],{"slug":7,"display_name":7,"profile_url":8,"plugin_count":32,"total_installs":33,"avg_security_score":34,"avg_patch_time_days":35,"trust_score":36,"computed_at":37},15,2220,86,30,84,"2026-04-04T17:07:57.189Z",[39,60,77,99,122],{"slug":40,"name":41,"version":42,"author":43,"author_profile":44,"description":45,"short_description":46,"active_installs":11,"downloaded":47,"rating":13,"num_ratings":48,"last_updated":49,"tested_up_to":50,"requires_at_least":51,"requires_php":52,"tags":53,"homepage":18,"download_link":59,"security_score":13,"vuln_count":27,"unpatched_count":27,"last_vuln_date":28,"fetched_at":29},"click-to-read-more-button","Read More Button  – Expand Content Without Refresh","1.0.4","Jose Varghese","https:\u002F\u002Fprofiles.wordpress.org\u002Fjosevarghese\u002F","\u003Cp>The \u003Cstrong>Read More Button\u003C\u002Fstrong> plugin is the ultimate solution for managing long content on your WordPress site. Whether you have lengthy blog posts, detailed product descriptions, or extensive service pages, this \u003Cstrong>content expander\u003C\u002Fstrong> tool allows you to keep your layout clean and user-friendly.\u003C\u002Fp>\n\u003Cp>By adding a customizable \u003Cstrong>read more button\u003C\u002Fstrong>, you can \u003Cstrong>truncate text\u003C\u002Fstrong> after a specific number of lines, encouraging users to click to \u003Cstrong>expand content\u003C\u002Fstrong>. This improves the user experience by preventing large blocks of text from overwhelming your visitors. The best part? The content expands instantly \u003Cstrong>without refresh\u003C\u002Fstrong>, ensuring a seamless reading experience.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Why Use a Read More Plugin?\u003C\u002Fstrong>\u003Cbr \u002F>\nImproving readability is key to retaining visitors. A \u003Cstrong>read more tag\u003C\u002Fstrong> or button ensures that your users see the most important information first. This \u003Cstrong>expand text\u003C\u002Fstrong> functionality is perfect for mobile users who prefer scrolling through concise summaries before diving into deep content.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Key Features:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Customizable Read More Button\u003C\u002Fstrong>: Style your \u003Cstrong>show more\u003C\u002Fstrong> button to match your theme.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Automatic Content Truncation\u003C\u002Fstrong>: Automatically \u003Cstrong>limit posts\u003C\u002Fstrong> and pages by line count.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Instant Expansion\u003C\u002Fstrong>: Smoothly \u003Cstrong>reveal text\u003C\u002Fstrong> and \u003Cstrong>show hidden content\u003C\u002Fstrong> \u003Cstrong>without page reload\u003C\u002Fstrong>.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>SEO Friendly\u003C\u002Fstrong>: Hidden content remains accessible to search engines.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Exclusion Options\u003C\u002Fstrong>: Exclude specific pages\u002Fposts by ID\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Post Type Selection\u003C\u002Fstrong>: Choose which post types to apply the functionality to\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Flexible Content Control\u003C\u002Fstrong>: Set after how many lines the button should appear\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Custom Button Text\u003C\u002Fstrong>: Change the button text to match your site’s tone\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Public CPT Support\u003C\u002Fstrong>: Works with all public custom post types\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Performance Optimized\u003C\u002Fstrong>: Lightweight code that only loads where needed\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Perfect for:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Blog posts with long content\u003C\u002Fli>\n\u003Cli>Product descriptions\u003C\u002Fli>\n\u003Cli>Service pages\u003C\u002Fli>\n\u003Cli>News articles\u003C\u002Fli>\n\u003Cli>Any content where you want to improve readability and user engagement\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Easy Setup:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Col>\n\u003Cli>Install and activate the plugin\u003C\u002Fli>\n\u003Cli>Go to Settings > Read More Button\u003C\u002Fli>\n\u003Cli>Configure your preferences (colors, text, line count, post types)\u003C\u002Fli>\n\u003Cli>The button will automatically appear on your selected content types\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>Love using this plugin? Please consider \u003Ca href=\"https:\u002F\u002Fsuperwebshare.com\u002Fread-more-plugin-donate\" rel=\"nofollow ugc\">donating\u003C\u002Fa> to support its development.\u003C\u002Fp>\n\u003Ch3>Developer Information\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>Technical Details:\u003C\u002Fstrong>\u003Cbr \u002F>\n* Uses WordPress coding standards and security practices\u003Cbr \u002F>\n* All data properly sanitized and escaped\u003Cbr \u002F>\n* Follows WordPress plugin guidelines\u003Cbr \u002F>\n* Uses proper enqueue methods for scripts and styles\u003Cbr \u002F>\n* Implements WordPress hooks and filters correctly\u003Cbr \u002F>\n* Translation ready with proper text domain\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Hooks and Filters:\u003C\u002Fstrong>\u003Cbr \u002F>\n* \u003Ccode>click_to_read_more_button_content_filter\u003C\u002Fcode> – Filter the content before applying read more functionality\u003Cbr \u002F>\n* \u003Ccode>click_to_read_more_button_button_text\u003C\u002Fcode> – Filter the button text\u003Cbr \u002F>\n* \u003Ccode>click_to_read_more_button_should_show\u003C\u002Fcode> – Filter to control where the button should appear\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Support:\u003C\u002Fstrong>\u003Cbr \u002F>\nFor support and feature requests, please contact the plugin author or submit issues through the WordPress.org support forums.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Donate:\u003C\u002Fstrong>\u003Cbr \u002F>\n\u003Ca href=\"https:\u002F\u002Fsuperwebshare.com\u002Fread-more-plugin-donate\" rel=\"nofollow ugc\">Donate Here\u003C\u002Fa>\u003C\u002Fp>\n","Easily add a customizable Read More button to expand long posts. Reveal hidden content automatically and smoothly without a page refresh.",388,1,"2026-02-09T23:26:00.000Z","6.9.4","5.0","7.4",[54,55,56,57,58],"excerpt","expand-content","read-more","show-more","truncate-text","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fclick-to-read-more-button.1.0.4.zip",{"slug":58,"name":61,"version":62,"author":63,"author_profile":64,"description":65,"short_description":66,"active_installs":11,"downloaded":67,"rating":13,"num_ratings":14,"last_updated":68,"tested_up_to":69,"requires_at_least":51,"requires_php":70,"tags":71,"homepage":75,"download_link":76,"security_score":13,"vuln_count":27,"unpatched_count":27,"last_vuln_date":28,"fetched_at":29},"Truncate Text","1.0.3","WebPro","https:\u002F\u002Fprofiles.wordpress.org\u002Fnchisley\u002F","\u003Cp>Truncate Text lets you shorten long strings of text in posts, pages, or custom content. Ideal for trimming usernames, crypto wallet addresses, or any lengthy content, it offers flexible options to control exactly how and where the text is truncated.\u003C\u002Fp>\n\u003Cp>Check out our other awesome plugins: \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fadmin-hero\" rel=\"ugc\">Admin Hero\u003C\u002Fa> | \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fadmin-shift\" rel=\"ugc\">Admin Shift\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch3>Usage\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Use the \u003Ccode>[truncate-text]\u003C\u002Fcode> shortcode to truncate text in your post or page content.\u003C\u002Fli>\n\u003Cli>Use the \u003Ccode>[truncate-shortcode]\u003C\u002Fcode> shortcode to process nested shortcodes before truncating.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Optional Attributes\u003C\u002Fh3>\n\u003Cp>These attributes work with both shortcodes:\u003Cbr \u002F>\n– \u003Cstrong>\u003Ccode>limit\u003C\u002Fcode>\u003C\u002Fstrong>: Set the number of characters to display (default: 6).\u003Cbr \u002F>\n  Example: \u003Ccode>[truncate-text limit=\"8\"]0x8755B12f034ee7b2383fCF5E849201C71622CC44[\u002Ftruncate-text]\u003C\u002Fcode> \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> \u003Ccode>0x8755B1...1622CC44\u003C\u002Fcode>\u003Cbr \u002F>\n– \u003Cstrong>\u003Ccode>encoding\u003C\u002Fcode>\u003C\u002Fstrong>: Specify the text encoding (default: UTF-8).\u003Cbr \u002F>\n  Example: \u003Ccode>[truncate-text encoding=\"ISO-8859-1\"]text[\u002Ftruncate-text]\u003C\u002Fcode>\u003Cbr \u002F>\n– \u003Cstrong>\u003Ccode>location\u003C\u002Fcode>\u003C\u002Fstrong>: Choose where to truncate: “start”, “middle” (default), or “end”.\u003Cbr \u002F>\n  Examples:\u003Cbr \u002F>\n  – \u003Ccode>[truncate-text location=\"start\"]0x8755B12f034ee7b2383fCF5E849201C71622CC44[\u002Ftruncate-text]\u003C\u002Fcode> \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> \u003Ccode>...1622CC44\u003C\u002Fcode>\u003Cbr \u002F>\n  – \u003Ccode>[truncate-text location=\"middle\"]0x8755B12f034ee7b2383fCF5E849201C71622CC44[\u002Ftruncate-text]\u003C\u002Fcode> \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> \u003Ccode>0x8755...22CC44\u003C\u002Fcode>\u003Cbr \u002F>\n  – \u003Ccode>[truncate-text location=\"end\"]0x8755B12f034ee7b2383fCF5E849201C71622CC44[\u002Ftruncate-text]\u003C\u002Fcode> \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> \u003Ccode>0x8755...\u003C\u002Fcode>\u003Cbr \u002F>\n– \u003Cstrong>\u003Ccode>dots\u003C\u002Fcode>\u003C\u002Fstrong>: Set the number of dots in the ellipsis (default: 3).\u003Cbr \u002F>\n  Examples:\u003Cbr \u002F>\n  – \u003Ccode>[truncate-text location=\"end\" dots=\"10\"]0x8755B12f034ee7b2383fCF5E849201C71622CC44[\u002Ftruncate-text]\u003C\u002Fcode> \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> \u003Ccode>0x8755..........\u003C\u002Fcode>\u003Cbr \u002F>\n  – \u003Ccode>[truncate-text location=\"middle\" dots=\"5\"]0x8755B12f034ee7b2383fCF5E849201C71622CC44[\u002Ftruncate-text]\u003C\u002Fcode> \u003Cspan aria-hidden=\"true\" class=\"wp-exclude-emoji\">→\u003C\u002Fspan> \u003Ccode>0x8755.....22CC44\u003C\u002Fcode>\u003C\u002Fp>\n\u003Ch3>Nested Shortcode Example\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\u003Ccode>[truncate-shortcode limit=\"6\" location=\"end\" dots=\"4\"][another-shortcode][\u002Ftruncate-shortcode]\u003C\u002Fcode>\u003Cbr \u002F>\nProcesses the inner shortcode first, then truncates the result.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>Support\u003C\u002Fh3>\n\u003Cp>If you have questions or issues, please reach out through our support channel at \u003Ca href=\"https:\u002F\u002Fnatechisley.com\" rel=\"nofollow ugc\">NateChisley.com\u003C\u002Fa>. We’re happy to assist!\u003C\u002Fp>\n\u003Ch3>Contributing\u003C\u002Fh3>\n\u003Cp>We welcome contributions! Please follow our guidelines for contributing at \u003Ca href=\"https:\u002F\u002Fnatechisley.com\" rel=\"nofollow ugc\">NateChisley.com\u003C\u002Fa>.\u003C\u002Fp>\n","Truncate Text lets you shorten long strings of text in posts, pages, or custom content.",1449,"2025-05-18T18:12:00.000Z","6.8.5","7.2",[72,73,74,22,58],"content-formatting","shorten-text","text-truncation","https:\u002F\u002FNateChisley.com\u002Fwordpress-plugins\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Ftruncate-text.1.0.3.zip",{"slug":78,"name":79,"version":80,"author":81,"author_profile":82,"description":83,"short_description":84,"active_installs":85,"downloaded":86,"rating":87,"num_ratings":88,"last_updated":89,"tested_up_to":50,"requires_at_least":90,"requires_php":18,"tags":91,"homepage":97,"download_link":98,"security_score":13,"vuln_count":27,"unpatched_count":27,"last_vuln_date":28,"fetched_at":29},"auto-image-attributes-from-filename-with-bulk-updater","Auto Image Attributes From Filename With Bulk Updater (Add Alt Text, Image Title For Image SEO)","4.9","Arun Basil Lal","https:\u002F\u002Fprofiles.wordpress.org\u002Farunbasillal\u002F","\u003Cp>Automatically add Image attributes such as Image Alt Text, Image Title, Image Caption and Image Description from Image Filename.\u003C\u002Fp>\n\u003Cp>The plugin can update image attributes for both new image uploads and existing images in the media library. Great for Image SEO and Accessibility.\u003C\u002Fp>\n\u003Cp>\u003Cspan class=\"embed-youtube\" style=\"text-align:center; display: block;\">\u003Ciframe loading=\"lazy\" class=\"youtube-player\" width=\"750\" height=\"422\" src=\"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FV5SOU4okOfU?version=3&rel=1&showsearch=0&showinfo=1&iv_load_policy=1&fs=1&hl=en-US&autohide=2&wmode=transparent\" allowfullscreen=\"true\" style=\"border:0;\" sandbox=\"allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox\">\u003C\u002Fiframe>\u003C\u002Fspan>\u003C\u002Fp>\n\u003Cp>Image alt text and title is critical for your image SEO and will help users discover your images (and there by your website) in Google \u002F Yahoo \u002F Bing image search.\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>\u003Cstrong>Life-Saver\u003C\u002Fstrong>\u003Cbr \u002F>\n  It allowed me to save tons of time. Further, the support is nice and ready to help.\u003Cbr \u002F>\n  – \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fsupport\u002Ftopic\u002Flife-saver-188\u002F\" rel=\"ugc\">thnk4\u003C\u002Fa>\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>Proper alt text also helps people who are blind or who have low vision understand your images there by improving the accessibility of your website. This will open up your website to a new segment of visitors and increase your traffic.\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>\u003Cstrong>Wow!\u003C\u002Fstrong>\u003Cbr \u002F>\n  If I could give this 1 more star I would!\u003Cbr \u002F>\n  – \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fsupport\u002Ftopic\u002Fwow-550\u002F\" rel=\"ugc\">jdev\u003C\u002Fa>\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>With this plugin you can:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Set the image filename as the image Title.\u003C\u002Fli>\n\u003Cli>Set the image filename as the image Caption.\u003C\u002Fli>\n\u003Cli>Set the image filename as the image Description.\u003C\u002Fli>\n\u003Cli>Set the image filename as the image Alt Text. This was a default feature in WordPress before 4.7. The plugin restores this essential feature which is great for SEO.\u003C\u002Fli>\n\u003Cli>Insert Image Title into post HTML. WordPress stopped adding Image Titles to images since WordPress 3.5. The plugin restores it.\u003C\u002Fli>\n\u003Cli>Remove hyphens from the image filename.\u003C\u002Fli>\n\u003Cli>Remove underscores from the image filename.\u003C\u002Fli>\n\u003Cli>Remove full stops from filename.\u003C\u002Fli>\n\u003Cli>Remove commas from filename.\u003C\u002Fli>\n\u003Cli>Remove all numbers from filename.\u003C\u002Fli>\n\u003Cli>Choose to turn off any of the above mentioned features.\u003C\u002Fli>\n\u003Cli>Display image attributes as columns in Media Library list view.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>With the bulk updater you can:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Set the image filename as image Title, Caption, Description and Alt Text after removing hyphens and underscores from the filename.\u003C\u002Fli>\n\u003Cli>Update any number of images in your Media Library in one click.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>If your image filename is \u003Cem>My_image-name.jpg\u003C\u002Fem>, your Image Title, Caption, Description And Alt Text will be \u003Cem>My image name\u003C\u002Fem>.\u003C\u002Fp>\n\u003Cp>The plugin settings and bulk updater are in WordPress Admin > Settings > Image Attributes. Here you can choose which attributes to update for NEW uploads.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Please remember to take a database backup before running the bulk updater (or anything bulk in general). The bulk updater updates ALL attributes for existing images in the Media Library and ignores the settings set for NEW uploads.\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Ch3>Image Attributes Pro\u003C\u002Fh3>\n\u003Cp>A pro add-on is now available for the plugin. Check out \u003Ca href=\"https:\u002F\u002Fimageattributespro.com\u002F?utm_source=wordpress.org&utm_medium=readme\" rel=\"nofollow ugc\">Image Attributes Pro\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>The pro add-on can update the image attributes from not just the image filename, but also from the post \u002F page \u002F product \u002F custom post type title. You can fine tune the bulk updater settings and even clean up the actual image filename.\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>Thank you so much for all your help in trying to fix this, its very much appreciated indeed. You’ve gone above and beyond what I was expecting in support!\u003Cbr \u002F>\n  Rest assured I will give great feedback on your plugin anywhere I can!!\u003Cbr \u002F>\n  – \u003Cstrong>James Barber\u003C\u002Fstrong>, for \u003Ca href=\"https:\u002F\u002Fimageattributespro.com\u002F?utm_source=wordpress.org&utm_medium=readme\" rel=\"nofollow ugc\">Image Attributes Pro\u003C\u002Fa> via email.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Cp>\u003Cstrong>What the pro add-on you get these additional features:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Use post title as title text. If image is not attached to a post, image filename will be used instead.\u003C\u002Fli>\n\u003Cli>Use post title as alt text. If image is not attached to a post, image filename will be used instead.\u003C\u002Fli>\n\u003Cli>Use post title as caption. If image is not attached to a post, image filename will be used instead.\u003C\u002Fli>\n\u003Cli>Use post title as description. If image is not attached to a post, image filename will be used instead.\u003C\u002Fli>\n\u003Cli>Build your own attributes using custom tags like \u003Ccode>%filename%\u003C\u002Fcode>, \u003Ccode>%posttitle%\u003C\u002Fcode>, \u003Ccode>%sitetitle%\u003C\u002Fcode>, \u003Ccode>%category%\u003C\u002Fcode>, \u003Ccode>%tag%\u003C\u002Fcode>, \u003Ccode>%wc_variation%\u003C\u002Fcode>, \u003Ccode>%yoastfocuskw%\u003C\u002Fcode>, \u003Ccode>%yoastseotitle%\u003C\u002Fcode>, \u003Ccode>%rankmathfocuskw%\u003C\u002Fcode>, \u003Ccode>%seopresstargetkw%\u003C\u002Fcode> and \u003Ca href=\"https:\u002F\u002Fimageattributespro.com\u002Fcustom-image-attribute-tags\u002F?utm_source=wordpress.org&utm_medium=readme\" rel=\"nofollow ugc\">many more\u003C\u002Fa>. Each custom tag will be replaced  with it’s value. You can combine them as you please!\u003C\u002Fli>\n\u003Cli>Use Yoast Focus Keyword and Rank Math Focus Keyword as image attributes.\u003C\u002Fli>\n\u003Cli>Clear any image attribute by setting it as blank \u002F empty. \u003C\u002Fli>\n\u003Cli>Exclude images from Bulk Updater. A meta box and a checkbox is added to the \u003Ccode>Media Library\u003C\u002Fcode> > \u003Ccode>Edit Media\u003C\u002Fcode> sidebar. When checked, the bulk updater will not update the attributes of that image in the media library or in posts \u002F products where the image is used. \u003C\u002Fli>\n\u003Cli>Remove apostrophe ( ‘ ) from filename\u003C\u002Fli>\n\u003Cli>Remove tilde ( ~ ) from filename\u003C\u002Fli>\n\u003Cli>Remove plus ( + ) from filename\u003C\u002Fli>\n\u003Cli>Remove pound ( # ) from filename\u003C\u002Fli>\n\u003Cli>Remove ampersand ( & ) from filename\u003C\u002Fli>\n\u003Cli>Remove round brackets ( ( ) ) from filename\u003C\u002Fli>\n\u003Cli>Remove square brackets ( [ ] ) from filename\u003C\u002Fli>\n\u003Cli>Remove curly brackets ( { } ) from filename\u003C\u002Fli>\n\u003Cli>Filter words or characters from filename\u003C\u002Fli>\n\u003Cli>Filter filename with regex\u003C\u002Fli>\n\u003Cli>convert image attributes to lowercase\u003C\u002Fli>\n\u003Cli>CONVERT IMAGE ATTRIBUTES TO UPPERCASE\u003C\u002Fli>\n\u003Cli>Use title casing for image attributes. First Letter Of Each Word Will Be Capitalized.\u003C\u002Fli>\n\u003Cli>Use sentence casing for image attributes. First letter of a sentence will be capitalized.\u003C\u002Fli>\n\u003Cli>Clean the actual image filename after upload.\u003C\u002Fli>\n\u003Cli>Choose to turn off any of the above mentioned features.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>With the Image Attributes Pro bulk updater you can:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Update image title and alt text \u003Cstrong>for images inserted into posts and custom post types\u003C\u002Fstrong>. Not just the media library. \u003Ca href=\"https:\u002F\u002Fimageattributespro.com\u002Fhow-wordpress-store-image-attributes\u002F?utm_source=wordpress.org&utm_medium=readme\" rel=\"nofollow ugc\">What is the difference?\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>Fine tune all settings. Choose what to update.\u003C\u002Fli>\n\u003Cli>Update image titles \u002F alt text in media library and \u002F or existing posts.\u003C\u002Fli>\n\u003Cli>Update image titles \u002F alt text in media library and \u002F or existing posts only if no title \u002F alt text is set. Existing image titles \u002F alt text will be preserved.\u003C\u002Fli>\n\u003Cli>Update image caption and description in the media library. Existing image captions and descriptions can be preserved.\u003C\u002Fli>\n\u003Cli>Build your own attributes using custom tags like \u003Ccode>%filename%\u003C\u002Fcode>, \u003Ccode>%posttitle%\u003C\u002Fcode>, \u003Ccode>%sitetitle%\u003C\u002Fcode>, \u003Ccode>%category%\u003C\u002Fcode>, \u003Ccode>%tag%\u003C\u002Fcode>, \u003Ccode>%yoastfocuskw%\u003C\u002Fcode>, \u003Ccode>%yoastseotitle%\u003C\u002Fcode>, \u003Ccode>%rankmathfocuskw%\u003C\u002Fcode>, \u003Ccode>%seopresstargetkw%\u003C\u002Fcode> and \u003Ca href=\"https:\u002F\u002Fimageattributespro.com\u002Fcustom-image-attribute-tags\u002F?utm_source=wordpress.org&utm_medium=readme\" rel=\"nofollow ugc\">many more\u003C\u002Fa>. Each custom tag will be replaced  with it’s value. You can combine them as you please!\u003C\u002Fli>\n\u003Cli>Choose to turn off any of the above mentioned features.\u003C\u002Fli>\n\u003Cli>Choose specific post types to bulk update.\u003C\u002Fli>\n\u003Cli>Bulk update image attributes in \u003Ca href=\"https:\u002F\u002Fimageattributespro.com\u002Facf-compatibility\u002F?utm_source=wordpress.org&utm_medium=readme\" rel=\"nofollow ugc\">ACF’s WYSIWYG Editor\u003C\u002Fa> and \u003Ca href=\"https:\u002F\u002Fimageattributespro.com\u002Fdivi-compatibility\u002F?utm_source=wordpress.org&utm_medium=readme\" rel=\"nofollow ugc\">Divi theme\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>Modify auto generated image attributes using the \u003Ca href=\"https:\u002F\u002Fimageattributespro.com\u002Fcodex\u002Fiaffpro_image_attributes\u002F?utm_source=wordpress.org&utm_medium=readme\" rel=\"nofollow ugc\">iaffpro_image_attributes filter\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>Disable updating of attributes in media library completely and just updated attributes in Post HTML or vice versa.\u003C\u002Fli>\n\u003Cli>Add or remove custom image attributes using the \u003Ca href=\"https:\u002F\u002Fimageattributespro.com\u002Fcodex\u002Fiaffpro_html_image_markup_post_update\u002F?utm_source=wordpress.org&utm_medium=readme\" rel=\"nofollow ugc\">iaffpro_html_image_markup_post_update filter\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Other Image Attributes Pro features:\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Bulk edit image attributes from the Media Library quickly and easily. \u003Ca href=\"https:\u002F\u002Fimageattributespro.com\u002Fmedia-library-bulk-editing\u002F?utm_source=wordpress.org&utm_medium=readme\" rel=\"nofollow ugc\">Read more.\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>Bulk Update image attributes from WordPress Media Library. Select images and choose \u003Ccode>Update image attributes\u003C\u002Fcode> Bulk action in Media Library (list view). \u003Ca href=\"https:\u002F\u002Fimageattributespro.com\u002Fbulk-actions\u002F?utm_source=wordpress.org&utm_medium=readme\" rel=\"nofollow ugc\">Read more.\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>Bulk Update image attributes from WordPress admin page for Posts, Pages and WooCommerce Products. Select the posts, pages or WooCommerce products in bulk and choose “Update image attributes” Bulk action. \u003Ca href=\"https:\u002F\u002Fimageattributespro.com\u002Fbulk-actions\u002F?utm_source=wordpress.org&utm_medium=readme\" rel=\"nofollow ugc\">Read more.\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>Copy image attributes to post HTML while updating in Media Library. Any changes made to image attributes in the media library will be automatically synced to the corresponding post HTML. \u003Ca href=\"https:\u002F\u002Fimageattributespro.com\u002Fauto-copy-image-attributes-to-post-html-from-media-library\u002F?utm_source=wordpress.org&utm_medium=readme\" rel=\"nofollow ugc\">Read more.\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>Update image attributes on post publish or update. Automatically updates image attributes when a post is published or updated. Ensures image attributes are always consistent with settings. \u003Ca href=\"https:\u002F\u002Fimageattributespro.com\u002Fupdate-image-attributes-on-save-post\u002F?utm_source=wordpress.org&utm_medium=readme\" rel=\"nofollow ugc\">Read more.\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>For screenshots, FAQ and full list of features, please see the \u003Ca href=\"https:\u002F\u002Fimageattributespro.com\u002F?utm_source=wordpress.org&utm_medium=readme\" rel=\"nofollow ugc\">product website\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>\u003Cstrong>No Competitors\u003C\u002Fstrong>\u003Cbr \u002F>\n  This is the only one that enables you to add missing tags to your images in one go, simple! … This one is very well coded and the author pays great attentions to users feedback \u002F requests \u002F support.\u003Cbr \u002F>\n  – \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fsupport\u002Ftopic\u002Fno-competitors\u002F\" rel=\"ugc\">arsenalemusica\u003C\u002Fa>\u003C\u002Fp>\n\u003C\u002Fblockquote>\n","Automatically add Image Alt Text, Title, Caption and Description from Filename. Bulk update existing images. Great for Image SEO and Accessibility.",100000,909017,96,93,"2025-12-17T18:52:00.000Z","3.5.0",[92,93,94,95,96],"accessibility","alt-text","bulk-edit-images","image-seo","image-title","https:\u002F\u002Fimageattributespro.com\u002F?utm_source=plugin-header&utm_medium=plugin-uri","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fauto-image-attributes-from-filename-with-bulk-updater.zip",{"slug":100,"name":101,"version":102,"author":103,"author_profile":104,"description":105,"short_description":106,"active_installs":85,"downloaded":107,"rating":108,"num_ratings":109,"last_updated":110,"tested_up_to":111,"requires_at_least":80,"requires_php":18,"tags":112,"homepage":117,"download_link":118,"security_score":119,"vuln_count":120,"unpatched_count":27,"last_vuln_date":121,"fetched_at":29},"string-locator","String locator","2.6.7","InstaWP","https:\u002F\u002Fprofiles.wordpress.org\u002Finstawp\u002F","\u003Cp>When working on themes and plugins you often notice a piece of text that appears hardcoded into the files, you need to modify it, but you don’t know what theme or plugin it’s in, and certainly not which individual file to look in.\u003C\u002Fp>\n\u003Cp>Easily search through your themes, plugins or even WordPress core and be presented with a list of files, the matched text and what line of the file matched your search.\u003Cbr \u002F>\nYou can then quickly make edits directly in your browser by clicking the link from the search results.\u003C\u002Fp>\n\u003Cp>By default a consistency check is performed when making edits to files, this will look for inconsistencies with braces, brackets and parenthesis that are often accidentally left in.\u003Cbr \u002F>\nThis drastically reduces the risk of breaking your site when making edits, but is in no way an absolute guarantee.\u003C\u002Fp>\n\u003Cp>Create a replica of your live site a.k.a – \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Finstawp-connect\" rel=\"ugc\">WordPress Staging\u003C\u002Fa> site before testing substitutions.\u003C\u002Fp>\n","Find and edit code or texts in your themes and plugins",1364797,92,123,"2025-01-15T13:59:00.000Z","6.7.5",[113,114,115,116,21],"find","highlight","search","syntax","https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fstring-locator\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fstring-locator.2.6.7.zip",87,4,"2025-01-20 00:00:00",{"slug":123,"name":124,"version":125,"author":126,"author_profile":127,"description":128,"short_description":129,"active_installs":85,"downloaded":130,"rating":87,"num_ratings":131,"last_updated":132,"tested_up_to":111,"requires_at_least":133,"requires_php":134,"tags":135,"homepage":141,"download_link":142,"security_score":143,"vuln_count":144,"unpatched_count":27,"last_vuln_date":145,"fetched_at":29},"yet-another-related-posts-plugin","YARPP – Yet Another Related Posts Plugin","5.30.11","YARPP","https:\u002F\u002Fprofiles.wordpress.org\u002Fjeffparker\u002F","\u003Ch4>Related Posts Plugin for WordPress\u003C\u002Fh4>\n\u003Cp>\u003Cem>Yet Another Related Posts Plugin (YARPP)\u003C\u002Fem> is a professionally maintained, highly customizable, performant and feature rich plugin that displays pages, posts, and custom post types related to the current entry. YARPP introduces your visitors to other relevant content on your site — boosting visitor engagement, time on site and SEO. Related Posts can increase your pageviews up to 10%. Simply install, activate and watch your sessions and pageviews increase.\u003C\u002Fp>\n\u003Ch4>Key Features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>An advanced and versatile algorithm\u003C\u002Fstrong>: Using a customizable algorithm considering post titles, content, tags, categories, and custom taxonomies, YARPP finds related content from across your site\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Caching\u003C\u002Fstrong>: Inbuilt cache makes subsequent queries super efficient and fast\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Custom Templates and Styles\u003C\u002Fstrong>: Use a pre-built \u003Cstrong>list\u003C\u002Fstrong> or \u003Cstrong>thumbnail\u003C\u002Fstrong> template, or use the YARPP custom templating system for 100% control of how results are styles and displayed\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Flexible\u003C\u002Fstrong> with a full range of placement options, including:\n\u003Cul>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fyet-another-related-posts-plugin\u002F#installation\" rel=\"ugc\">Automatic Display Options\u003C\u002Fa> (pick where to show YARPP from the YARPP settings page)\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fyet-another-related-posts-plugin\u002F#installation\" rel=\"ugc\">RSS\u002FFeed Options\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fyet-another-related-posts-plugin\u002F#installation\" rel=\"ugc\">Block Editor (Gutenberg)\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fyet-another-related-posts-plugin\u002F#installation\" rel=\"ugc\">[yarpp] Shortcode\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fyet-another-related-posts-plugin\u002F#installation\" rel=\"ugc\">Widget\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fyet-another-related-posts-plugin\u002F#installation\" rel=\"ugc\">YARPP functions()\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fyet-another-related-posts-plugin\u002F#installation\" rel=\"ugc\">REST API\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Works with all languages\u003C\u002Fstrong>, including those with full-width (double-byte) characters and those that don’t use spaces between words\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Custom post type and taxonomy\u003C\u002Fstrong> support\u003C\u002Fli>\n\u003Cli>\u003Cstrong>WordPress Multisite\u003C\u002Fstrong> support\u003C\u002Fli>\n\u003Cli>\u003Cstrong>bbPress forums\u003C\u002Fstrong> support\u003C\u002Fli>\n\u003Cli>\u003Cstrong>WooCommerce\u003C\u002Fstrong> support\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Professionally maintained and supported\u003C\u002Fstrong> with regular updates\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>YARPP Algorithm Explained\u003C\u002Fh4>\n\u003Cp>\u003Ciframe title=\"VideoPress Video Player\" aria-label='VideoPress Video Player' width='750' height='422' src='https:\u002F\u002Fvideo.wordpress.com\u002Fembed\u002F0n2TSzkb?hd=0&cover=1' frameborder='0' allowfullscreen allow='clipboard-write'>\u003C\u002Fiframe>\u003Cscript src='https:\u002F\u002Fv0.wordpress.com\u002Fjs\u002Fnext\u002Fvideopress-iframe.js?m=1674852142'>\u003C\u002Fscript>\u003C\u002Fp>\n\u003Ch4>Contribute: Translate YARPP\u003C\u002Fh4>\n\u003Cp>YARPP is available for \u003Ca href=\"https:\u002F\u002Ftranslate.wordpress.org\u002Fprojects\u002Fwp-plugins\u002Fyet-another-related-posts-plugin\u002F\" rel=\"nofollow ugc\">translation directly on WordPress.org\u003C\u002Fa>. Please check out the official \u003Ca href=\"https:\u002F\u002Fmake.wordpress.org\u002Fpolyglots\u002Fhandbook\u002Frosetta\u002Ftheme-plugin-directories\u002F\" rel=\"nofollow ugc\">Translator Handbook\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch4>Wide Support\u003C\u002Fh4>\n\u003Cp>YARPP is the \u003Cstrong>most popular\u003C\u002Fstrong> and \u003Cstrong>the highest rated\u003C\u002Fstrong> \u003Ca href=\"https:\u002F\u002Fyarpp.com\u002F\" rel=\"nofollow ugc\">Related Posts Plugin for WordPress\u003C\u002Fa>. With your support, this plugin always strives to be the best WordPress plugin for Content Discovery and Related Posts.\u003C\u002Fp>\n\u003Cp>✔ Over 10 years of development\u003Cbr \u002F>\n✔ Over 6 million downloads\u003Cbr \u002F>\n✔ Translated into more than a dozen languages\u003Cbr \u002F>\n✔ Professionally maintained and actively supported with regular updates\u003Cbr \u002F>\n✔ Works with all languages\u003C\u002Fp>\n\u003Cp>YARPP works best with PHP 5.3 or greater, MySQL 5.6 or greater OR MariaDB 10.1 or greater, and WordPress 3.7 or greater. See \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fplugins\u002Fyet-another-related-posts-plugin\u002Ffaq\u002F\" rel=\"ugc\">the FAQ\u003C\u002Fa> for answers to common questions.\u003C\u002Fp>\n","The best WordPress plugin for displaying related posts. Simple and flexible, with a powerful proven algorithm and inbuilt caching.",7947492,1148,"2024-11-11T18:16:00.000Z","3.7","5.3",[136,137,138,139,140],"contextual-related-posts","posts","related-posts","seo","similar-posts","https:\u002F\u002Fyarpp.com\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fyet-another-related-posts-plugin.5.30.11.zip",83,8,"2024-08-26 00:00:00",{"attackSurface":147,"codeSignals":409,"taintFlows":499,"riskAssessment":642,"analyzedAt":656},{"hooks":148,"ajaxHandlers":405,"restRoutes":406,"shortcodes":407,"cronEvents":408,"entryPointCount":27,"unprotectedCount":27},[149,155,160,163,169,175,179,183,186,191,195,200,205,209,211,217,222,225,228,231,234,236,240,244,247,251,254,256,258,260,262,266,268,272,275,278,282,286,290,293,295,299,303,305,309,312,316,319,322,324,326,329,330,335,338,341,345,347,350,352,355,359,363,365,367,370,372,373,376,378,380,383,386,388,391,394,397,401,404],{"type":150,"name":151,"callback":152,"file":153,"line":154},"action","wp_enqueue_scripts","replyToEnqueueScripts","include\\class\\script\\TextTruncator_ScriptLoader.php",44,{"type":150,"name":156,"callback":157,"file":158,"line":159},"network_admin_notices","_replyToPrintAdminNotices","include\\library\\admin-page-framework\\factory\\AdminPageFramework\\AdminPageFramework_Controller.php",59,{"type":150,"name":161,"callback":157,"file":158,"line":162},"admin_notices",61,{"type":150,"name":164,"callback":165,"priority":166,"file":167,"line":168},"admin_menu","_replyToBuildMenu",98,"include\\library\\admin-page-framework\\factory\\AdminPageFramework\\AdminPageFramework_Menu_Controller.php",14,{"type":150,"name":170,"callback":171,"priority":172,"file":173,"line":174},"current_screen","anonymous",20,"include\\library\\admin-page-framework\\factory\\AdminPageFramework\\AdminPageFramework_Menu_Model.php",79,{"type":176,"name":177,"callback":178,"priority":11,"file":173,"line":13},"filter","admin_title","_replyToFixPageTitleForHiddenPages",{"type":150,"name":180,"callback":181,"file":182,"line":168},"admin_head","_replyToEnableMetaBox","include\\library\\admin-page-framework\\factory\\AdminPageFramework\\AdminPageFramework_Page_View_MetaBox.php",{"type":176,"name":184,"callback":185,"priority":11,"file":182,"line":32},"screen_layout_columns","_replyToSetNumberOfScreenLayoutColumns",{"type":150,"name":187,"callback":188,"file":189,"line":190},"wp_loaded","setup_pre","include\\library\\admin-page-framework\\factory\\AdminPageFramework\\AdminPageFramework_Router.php",16,{"type":150,"name":180,"callback":192,"priority":193,"file":194,"line":32},"_replyToRegisterHelpTabs",200,"include\\library\\admin-page-framework\\factory\\AdminPageFramework\\controller\\AdminPageFramework_HelpPane_Page.php",{"type":176,"name":196,"callback":197,"priority":11,"file":198,"line":199},"plugin_row_meta","_replyToAddLinkToPluginDescription","include\\library\\admin-page-framework\\factory\\AdminPageFramework\\controller\\AdminPageFramework_Link_Page.php",25,{"type":176,"name":201,"callback":202,"file":203,"line":204},"wp_mail_content_type","_replyToSetMailContentTypeToHTML","include\\library\\admin-page-framework\\factory\\AdminPageFramework\\model\\AdminPageFramework_FormEmail.php",24,{"type":176,"name":206,"callback":207,"file":203,"line":208},"wp_mail_from","_replyToSetEmailSenderAddress",27,{"type":176,"name":210,"callback":207,"file":203,"line":35},"wp_mail_from_name",{"type":176,"name":212,"callback":213,"priority":214,"file":215,"line":216},"update_footer","_replyToGetPageLoadInfo",999,"include\\library\\admin-page-framework\\factory\\AdminPageFramework\\view\\AdminPageFramework_PageLoadInfo_Page.php",19,{"type":150,"name":218,"callback":219,"file":220,"line":221},"shutdown","_replyToSaveFieldErrors","include\\library\\admin-page-framework\\factory\\AdminPageFramework_Factory\\AdminPageFramework_Factory_Controller.php",53,{"type":150,"name":218,"callback":223,"file":220,"line":224},"_replyToSaveNotices",64,{"type":150,"name":218,"callback":226,"file":227,"line":159},"_replyToDeleteFieldErrors","include\\library\\admin-page-framework\\factory\\AdminPageFramework_Factory\\AdminPageFramework_Factory_Model.php",{"type":150,"name":170,"callback":229,"file":230,"line":204},"_replyToLoadComponents","include\\library\\admin-page-framework\\factory\\AdminPageFramework_Factory\\AdminPageFramework_Factory_Router.php",{"type":150,"name":156,"callback":232,"file":233,"line":216},"_replyToPrintSettingNotice","include\\library\\admin-page-framework\\factory\\AdminPageFramework_Factory\\AdminPageFramework_Factory_View.php",{"type":150,"name":161,"callback":232,"file":233,"line":235},21,{"type":150,"name":237,"callback":238,"file":239,"line":32},"in_admin_footer","_replyToSetFooterInfo","include\\library\\admin-page-framework\\factory\\AdminPageFramework_Factory\\controller\\AdminPageFramework_Link_Base.php",{"type":176,"name":241,"callback":242,"file":239,"line":243},"admin_footer_text","_replyToAddInfoInFooterLeft",52,{"type":176,"name":212,"callback":245,"priority":246,"file":239,"line":221},"_replyToAddInfoInFooterRight",11,{"type":150,"name":248,"callback":249,"file":250,"line":235},"admin_enqueue_scripts","_replyToEnqueueScripts","include\\library\\admin-page-framework\\factory\\AdminPageFramework_Factory\\controller\\AdminPageFramework_Resource_Base.php",{"type":150,"name":248,"callback":252,"file":250,"line":253},"_replyToEnqueueStyles",22,{"type":150,"name":255,"callback":249,"file":250,"line":199},"customize_controls_print_footer_scripts",{"type":150,"name":255,"callback":252,"file":250,"line":257},26,{"type":150,"name":259,"callback":249,"file":250,"line":208},"admin_footer",{"type":150,"name":259,"callback":252,"file":250,"line":261},28,{"type":150,"name":263,"callback":264,"priority":214,"file":250,"line":265},"admin_print_footer_scripts","_replyToAddStyle",29,{"type":150,"name":263,"callback":267,"priority":214,"file":250,"line":35},"_replyToAddScript",{"type":176,"name":269,"callback":270,"priority":48,"file":250,"line":271},"script_loader_src","_replyToSetupArgumentCallback",31,{"type":176,"name":273,"callback":270,"priority":48,"file":250,"line":274},"style_loader_src",32,{"type":176,"name":276,"callback":277,"priority":48,"file":250,"line":154},"clean_url","_replyToModifyEnqueuedAttrbutes",{"type":176,"name":279,"callback":280,"file":281,"line":174},"media_upload_tabs","_replyToRemovingMediaLibraryTab","include\\library\\admin-page-framework\\factory\\AdminPageFramework_Factory\\view\\AdminPageFramework_FieldType\\AdminPageFramework_FieldType_Base.php",{"type":176,"name":283,"callback":284,"priority":48,"file":281,"line":285},"gettext","_replyToReplaceThickBoxText",89,{"type":150,"name":237,"callback":287,"priority":214,"file":288,"line":289},"_replyToSetPageLoadInfoInFooter","include\\library\\admin-page-framework\\factory\\AdminPageFramework_Factory\\view\\AdminPageFramework_PageLoadInfo_Base.php",17,{"type":150,"name":255,"callback":291,"file":292,"line":289},"_replyToPrintScript","include\\library\\admin-page-framework\\factory\\AdminPageFramework_Factory\\view\\AdminPageFramework_Script\\AdminPageFramework_Script_Base.php",{"type":150,"name":259,"callback":291,"file":292,"line":294},18,{"type":150,"name":259,"callback":296,"priority":48,"file":297,"line":298},"_replyToEnqueueMedia","include\\library\\admin-page-framework\\factory\\AdminPageFramework_Factory\\view\\AdminPageFramework_Script\\AdminPageFramework_Script_MediaUploader.php",12,{"type":176,"name":300,"callback":301,"priority":11,"file":302,"line":298},"wp_insert_attachment_data","_replyToFilterSavingData","include\\library\\admin-page-framework\\factory\\AdminPageFramework_MetaBox\\AdminPageFramework_MetaBox_Model.php",{"type":176,"name":304,"callback":301,"priority":11,"file":302,"line":168},"wp_insert_post_data",{"type":176,"name":306,"callback":307,"file":302,"line":308},"redirect_post_location","_replyToModifyRedirectPostLocation",104,{"type":150,"name":170,"callback":310,"file":311,"line":172},"_replyToDetermineToLoad","include\\library\\admin-page-framework\\factory\\AdminPageFramework_MetaBox\\AdminPageFramework_MetaBox_Router.php",{"type":150,"name":313,"callback":314,"file":311,"line":315},"add_meta_boxes","_replyToAddMetaBox",46,{"type":150,"name":180,"callback":317,"file":318,"line":168},"_replyToRegisterHelpTabTextForMetaBox","include\\library\\admin-page-framework\\factory\\AdminPageFramework_MetaBox\\controller\\AdminPageFramework_HelpPane_MetaBox.php",{"type":150,"name":164,"callback":320,"priority":13,"file":321,"line":168},"_replyToSetUpProperties","include\\library\\admin-page-framework\\factory\\AdminPageFramework_MetaBox_Page\\model\\AdminPageFramework_Property_MetaBox_Page.php",{"type":150,"name":323,"callback":320,"priority":13,"file":321,"line":190},"network_admin_menu",{"type":150,"name":323,"callback":165,"priority":166,"file":325,"line":168},"include\\library\\admin-page-framework\\factory\\AdminPageFramework_NetworkAdmin\\AdminPageFramework_NetworkAdmin.php",{"type":150,"name":237,"callback":287,"priority":214,"file":327,"line":328},"include\\library\\admin-page-framework\\factory\\AdminPageFramework_NetworkAdmin\\view\\AdminPageFramework_PageLoadInfo_NetworkAdminPage.php",13,{"type":176,"name":212,"callback":213,"priority":214,"file":327,"line":261},{"type":150,"name":331,"callback":332,"file":333,"line":334},"init","_replyToRegisterTaxonomies","include\\library\\admin-page-framework\\factory\\AdminPageFramework_PostType\\AdminPageFramework_PostType_Controller.php",58,{"type":150,"name":164,"callback":336,"priority":214,"file":333,"line":337},"_replyToRemoveTexonomySubmenuPages",65,{"type":150,"name":248,"callback":339,"file":340,"line":289},"_replyToDisableAutoSave","include\\library\\admin-page-framework\\factory\\AdminPageFramework_PostType\\AdminPageFramework_PostType_Model.php",{"type":150,"name":342,"callback":343,"file":344,"line":298},"restrict_manage_posts","_replyToAddAuthorTableFilter","include\\library\\admin-page-framework\\factory\\AdminPageFramework_PostType\\AdminPageFramework_PostType_View.php",{"type":150,"name":342,"callback":346,"file":344,"line":328},"_replyToAddTaxonomyTableFilter",{"type":176,"name":348,"callback":349,"file":344,"line":168},"parse_query","_replyToGetTableFilterQueryForTaxonomies",{"type":150,"name":180,"callback":351,"file":344,"line":32},"_replyToPrintStyle",{"type":150,"name":353,"callback":354,"file":344,"line":289},"the_content","_replyToFilterPostTypeContent",{"type":150,"name":356,"callback":357,"priority":11,"file":358,"line":298},"get_edit_post_link","_replyToAddPostTypeQueryInEditPostLink","include\\library\\admin-page-framework\\factory\\AdminPageFramework_PostType\\controller\\AdminPageFramework_Link_PostType.php",{"type":150,"name":360,"callback":361,"file":362,"line":265},"after_switch_theme","FlushRewriteRules","include\\library\\admin-page-framework\\factory\\AdminPageFramework_PostType\\model\\AdminPageFramework_Property_PostType.php",{"type":176,"name":212,"callback":213,"priority":214,"file":364,"line":253},"include\\library\\admin-page-framework\\factory\\AdminPageFramework_PostType\\view\\AdminPageFramework_PageLoadInfo_PostType.php",{"type":150,"name":187,"callback":310,"file":366,"line":298},"include\\library\\admin-page-framework\\factory\\AdminPageFramework_TaxonomyField\\AdminPageFramework_TaxonomyField_Router.php",{"type":150,"name":170,"callback":368,"priority":172,"file":366,"line":369},"_replyToRegisterFormElements",34,{"type":150,"name":187,"callback":310,"file":371,"line":298},"include\\library\\admin-page-framework\\factory\\AdminPageFramework_UserMeta\\AdminPageFramework_UserMeta_Router.php",{"type":150,"name":170,"callback":368,"priority":172,"file":371,"line":261},{"type":150,"name":374,"callback":375,"file":371,"line":265},"show_user_profile","_replyToPrintFields",{"type":150,"name":377,"callback":375,"file":371,"line":35},"edit_user_profile",{"type":150,"name":379,"callback":375,"file":371,"line":271},"user_new_form",{"type":150,"name":381,"callback":382,"file":371,"line":274},"personal_options_update","_replyToSaveFieldValues",{"type":150,"name":384,"callback":382,"file":371,"line":385},"edit_user_profile_update",33,{"type":150,"name":387,"callback":382,"file":371,"line":369},"user_register",{"type":150,"name":389,"callback":188,"file":390,"line":32},"widgets_init","include\\library\\admin-page-framework\\factory\\AdminPageFramework_Widget\\AdminPageFramework_Widget_Controller.php",{"type":150,"name":389,"callback":392,"priority":172,"file":393,"line":168},"_replyToRegisterWidget","include\\library\\admin-page-framework\\factory\\AdminPageFramework_Widget\\AdminPageFramework_Widget_Model.php",{"type":150,"name":161,"callback":395,"file":396,"line":190},"_replyToDisplayAdminNotice","include\\library\\admin-page-framework\\utility\\AdminPageFramework_AdminNotice.php",{"type":150,"name":331,"callback":398,"file":399,"line":400},"setLocalization","include\\library\\admin-page-framework\\utility\\AdminPageFramework_PluginBootstrap.php",35,{"type":150,"name":161,"callback":157,"file":402,"line":403},"include\\library\\admin-page-framework\\utility\\AdminPageFramework_Requirement.php",75,{"type":150,"name":161,"callback":157,"file":402,"line":88},[],[],[],[],{"dangerousFunctions":410,"sqlUsage":411,"outputEscaping":422,"fileOperations":11,"externalRequests":120,"nonceChecks":14,"capabilityChecks":144,"bundledLibraries":498},[],{"prepared":48,"raw":120,"locations":412},[413,416,417,420],{"file":414,"line":271,"context":415},"include\\class\\utility\\TextTruncator_WPUtility_Transient.php","$wpdb->query() with variable interpolation",{"file":414,"line":274,"context":415},{"file":418,"line":419,"context":415},"uninstall.php",49,{"file":418,"line":421,"context":415},50,{"escaped":423,"rawEcho":424,"locations":425},40,43,[426,430,433,436,438,439,440,441,442,443,445,446,447,449,451,454,456,458,459,460,462,464,465,467,468,470,472,474,476,477,479,480,482,484,485,486,488,490,491,492,493,495,496],{"file":427,"line":428,"context":429},"include\\class\\admin\\setting\\general\\TextTruncator_AdminPage_Setting_General.php",38,"raw output",{"file":431,"line":432,"context":429},"include\\class\\admin\\setting\\TextTruncator_AdminPage_Setting.php",56,{"file":434,"line":435,"context":429},"include\\class\\admin\\setting\\truncator\\TextTruncator_AdminPage_Setting_Truncator.php",47,{"file":437,"line":190,"context":429},"include\\library\\admin-page-framework\\factory\\AdminPageFramework\\AdminPageFramework_Page_View.php",{"file":437,"line":253,"context":429},{"file":437,"line":271,"context":429},{"file":437,"line":369,"context":429},{"file":437,"line":435,"context":429},{"file":437,"line":432,"context":429},{"file":437,"line":444,"context":429},76,{"file":437,"line":34,"context":429},{"file":182,"line":199,"context":429},{"file":182,"line":448,"context":429},111,{"file":450,"line":168,"context":429},"include\\library\\admin-page-framework\\factory\\AdminPageFramework\\AdminPageFramework_View.php",{"file":452,"line":453,"context":429},"include\\library\\admin-page-framework\\factory\\AdminPageFramework\\model\\AdminPageFramework_ExportOptions.php",55,{"file":452,"line":455,"context":429},57,{"file":452,"line":457,"context":429},60,{"file":452,"line":224,"context":429},{"file":233,"line":174,"context":429},{"file":250,"line":461,"context":429},72,{"file":250,"line":463,"context":429},73,{"file":250,"line":174,"context":429},{"file":250,"line":466,"context":429},95,{"file":250,"line":13,"context":429},{"file":250,"line":469,"context":429},101,{"file":250,"line":471,"context":429},129,{"file":473,"line":274,"context":429},"include\\library\\admin-page-framework\\factory\\AdminPageFramework_Factory\\model\\AdminPageFramework_Message.php",{"file":475,"line":11,"context":429},"include\\library\\admin-page-framework\\factory\\AdminPageFramework_Factory\\utility\\AdminPageFramework_Debug.php",{"file":292,"line":261,"context":429},{"file":478,"line":32,"context":429},"include\\library\\admin-page-framework\\factory\\AdminPageFramework_MetaBox\\AdminPageFramework_MetaBox_View.php",{"file":340,"line":208,"context":429},{"file":344,"line":481,"context":429},74,{"file":483,"line":204,"context":429},"include\\library\\admin-page-framework\\factory\\AdminPageFramework_TaxonomyField\\AdminPageFramework_TaxonomyField_View.php",{"file":483,"line":208,"context":429},{"file":483,"line":435,"context":429},{"file":487,"line":32,"context":429},"include\\library\\admin-page-framework\\factory\\AdminPageFramework_UserMeta\\AdminPageFramework_UserMeta_View.php",{"file":489,"line":32,"context":429},"include\\library\\admin-page-framework\\factory\\AdminPageFramework_Widget\\AdminPageFramework_Widget_Factory.php",{"file":489,"line":294,"context":429},{"file":489,"line":216,"context":429},{"file":489,"line":172,"context":429},{"file":494,"line":168,"context":429},"include\\library\\admin-page-framework\\factory\\AdminPageFramework_Widget\\AdminPageFramework_Widget_View.php",{"file":396,"line":172,"context":429},{"file":402,"line":497,"context":429},82,[],[500,518,526,536,550,560,577,589,600,611,621,633],{"entryPoint":501,"graph":502,"unsanitizedCount":48,"severity":517},"_replyToCheckRedirects (include\\library\\admin-page-framework\\factory\\AdminPageFramework\\AdminPageFramework_Form_Model.php:51)",{"nodes":503,"edges":514},[504,509],{"id":505,"type":506,"label":507,"file":508,"line":162},"n0","source","$_GET","include\\library\\admin-page-framework\\factory\\AdminPageFramework\\AdminPageFramework_Form_Model.php",{"id":510,"type":511,"label":512,"file":508,"line":461,"wp_function":513},"n1","sink","wp_redirect() [Open Redirect]","wp_redirect",[515],{"from":505,"to":510,"sanitized":516},false,"medium",{"entryPoint":519,"graph":520,"unsanitizedCount":48,"severity":517},"\u003CAdminPageFramework_Form_Model> (include\\library\\admin-page-framework\\factory\\AdminPageFramework\\AdminPageFramework_Form_Model.php:0)",{"nodes":521,"edges":524},[522,523],{"id":505,"type":506,"label":507,"file":508,"line":162},{"id":510,"type":511,"label":512,"file":508,"line":461,"wp_function":513},[525],{"from":505,"to":510,"sanitized":516},{"entryPoint":527,"graph":528,"unsanitizedCount":48,"severity":517},"_handleSubmittedData (include\\library\\admin-page-framework\\factory\\AdminPageFramework\\AdminPageFramework_Form_Model_Validation.php:9)",{"nodes":529,"edges":534},[530,533],{"id":505,"type":506,"label":531,"file":532,"line":216},"$_POST","include\\library\\admin-page-framework\\factory\\AdminPageFramework\\AdminPageFramework_Form_Model_Validation.php",{"id":510,"type":511,"label":512,"file":532,"line":385,"wp_function":513},[535],{"from":505,"to":510,"sanitized":516},{"entryPoint":537,"graph":538,"unsanitizedCount":48,"severity":517},"_validateSubmittedData (include\\library\\admin-page-framework\\factory\\AdminPageFramework\\AdminPageFramework_Form_Model_Validation.php:69)",{"nodes":539,"edges":547},[540,541,544],{"id":505,"type":506,"label":531,"file":532,"line":174},{"id":510,"type":542,"label":543,"file":532,"line":174},"transform","→ _goToLink()",{"id":545,"type":511,"label":512,"file":532,"line":546,"wp_function":513},"n2",137,[548,549],{"from":505,"to":510,"sanitized":516},{"from":510,"to":545,"sanitized":516},{"entryPoint":551,"graph":552,"unsanitizedCount":48,"severity":517},"_goToLink (include\\library\\admin-page-framework\\factory\\AdminPageFramework\\AdminPageFramework_Form_Model_Validation.php:132)",{"nodes":553,"edges":558},[554,557],{"id":505,"type":506,"label":555,"file":532,"line":556},"$_aSubmit",132,{"id":510,"type":511,"label":512,"file":532,"line":546,"wp_function":513},[559],{"from":505,"to":510,"sanitized":516},{"entryPoint":561,"graph":562,"unsanitizedCount":576,"severity":517},"\u003CAdminPageFramework_Form_Model_Validation> (include\\library\\admin-page-framework\\factory\\AdminPageFramework\\AdminPageFramework_Form_Model_Validation.php:0)",{"nodes":563,"edges":572},[564,566,567,568,570],{"id":505,"type":506,"label":565,"file":532,"line":216},"$_POST (x2)",{"id":510,"type":511,"label":512,"file":532,"line":385,"wp_function":513},{"id":545,"type":506,"label":531,"file":532,"line":174},{"id":569,"type":542,"label":543,"file":532,"line":174},"n3",{"id":571,"type":511,"label":512,"file":532,"line":546,"wp_function":513},"n4",[573,574,575],{"from":505,"to":510,"sanitized":516},{"from":545,"to":569,"sanitized":516},{"from":569,"to":571,"sanitized":516},3,{"entryPoint":578,"graph":579,"unsanitizedCount":48,"severity":517},"_getWPRemotePostStatus (include\\library\\admin-page-framework\\factory\\AdminPageFramework_Factory\\view\\AdminPageFramework_FieldType\\AdminPageFramework_FieldType_system.php:172)",{"nodes":580,"edges":587},[581,584],{"id":505,"type":506,"label":507,"file":582,"line":583},"include\\library\\admin-page-framework\\factory\\AdminPageFramework_Factory\\view\\AdminPageFramework_FieldType\\AdminPageFramework_FieldType_system.php",174,{"id":510,"type":511,"label":585,"file":582,"line":583,"wp_function":586},"wp_remote_post() [SSRF]","wp_remote_post",[588],{"from":505,"to":510,"sanitized":516},{"entryPoint":590,"graph":591,"unsanitizedCount":48,"severity":517},"_getWPRemoteGetStatus (include\\library\\admin-page-framework\\factory\\AdminPageFramework_Factory\\view\\AdminPageFramework_FieldType\\AdminPageFramework_FieldType_system.php:178)",{"nodes":592,"edges":598},[593,595],{"id":505,"type":506,"label":507,"file":582,"line":594},180,{"id":510,"type":511,"label":596,"file":582,"line":594,"wp_function":597},"wp_remote_get() [SSRF]","wp_remote_get",[599],{"from":505,"to":510,"sanitized":516},{"entryPoint":601,"graph":602,"unsanitizedCount":14,"severity":517},"\u003CAdminPageFramework_FieldType_system> (include\\library\\admin-page-framework\\factory\\AdminPageFramework_Factory\\view\\AdminPageFramework_FieldType\\AdminPageFramework_FieldType_system.php:0)",{"nodes":603,"edges":608},[604,605,606,607],{"id":505,"type":506,"label":507,"file":582,"line":583},{"id":510,"type":511,"label":585,"file":582,"line":583,"wp_function":586},{"id":545,"type":506,"label":507,"file":582,"line":594},{"id":569,"type":511,"label":596,"file":582,"line":594,"wp_function":597},[609,610],{"from":505,"to":510,"sanitized":516},{"from":545,"to":569,"sanitized":516},{"entryPoint":612,"graph":613,"unsanitizedCount":48,"severity":517},"_replyToPrintColumnCell (include\\library\\admin-page-framework\\factory\\AdminPageFramework_TaxonomyField\\AdminPageFramework_TaxonomyField_View.php:40)",{"nodes":614,"edges":619},[615,616],{"id":505,"type":506,"label":507,"file":483,"line":424},{"id":510,"type":511,"label":617,"file":483,"line":435,"wp_function":618},"echo() [XSS]","echo",[620],{"from":505,"to":510,"sanitized":516},{"entryPoint":622,"graph":623,"unsanitizedCount":48,"severity":517},"_addArchiveItem (include\\library\\admin-page-framework\\utility\\AdminPageFramework_Zip.php:46)",{"nodes":624,"edges":631},[625,628],{"id":505,"type":506,"label":626,"file":627,"line":315},"$_sIterationItem","include\\library\\admin-page-framework\\utility\\AdminPageFramework_Zip.php",{"id":510,"type":511,"label":629,"file":627,"line":432,"wp_function":630},"file_get_contents() [SSRF\u002FLFI]","file_get_contents",[632],{"from":505,"to":510,"sanitized":516},{"entryPoint":634,"graph":635,"unsanitizedCount":48,"severity":641},"\u003CAdminPageFramework_TaxonomyField_View> (include\\library\\admin-page-framework\\factory\\AdminPageFramework_TaxonomyField\\AdminPageFramework_TaxonomyField_View.php:0)",{"nodes":636,"edges":639},[637,638],{"id":505,"type":506,"label":507,"file":483,"line":424},{"id":510,"type":511,"label":617,"file":483,"line":435,"wp_function":618},[640],{"from":505,"to":510,"sanitized":516},"low",{"summary":643,"deductions":644},"The \"text-truncator\" plugin v1 exhibits a generally positive security posture based on the provided static analysis and vulnerability history. The absence of known CVEs and a complete lack of recorded vulnerabilities in its history suggest a history of secure development or successful patching of past issues. The plugin also shows good practices by implementing capability checks and nonce checks in several areas of its code. However, there are some areas of concern that warrant attention.\n\nThe static analysis reveals a significant number of file operations (10) and external HTTP requests (4), which can introduce vulnerabilities if not handled with extreme care. While the taint analysis did not flag any critical or high-severity issues, the fact that all 12 analyzed flows have unsanitized paths is a significant concern. This indicates a potential for input manipulation that could lead to unexpected behavior or exploitation if coupled with other weaknesses. Furthermore, the moderate rate of properly escaped output (48%) suggests that a substantial portion of the plugin's output is not being sanitized, increasing the risk of cross-site scripting (XSS) vulnerabilities.\n\nWhile the attack surface appears to be zero in terms of AJAX handlers, REST API routes, shortcodes, and cron events, this might be misleading if the plugin's functionality is entirely driven by file operations or external requests that are not explicitly listed as entry points. The SQL query usage also raises a flag, with only 20% using prepared statements, implying a risk of SQL injection vulnerabilities in the remaining queries. In conclusion, despite a clean vulnerability history, the plugin's internal code quality regarding input sanitization and output escaping, along with its reliance on file operations and external requests, presents a moderate risk that needs careful consideration.",[645,647,649,652,654],{"reason":646,"points":32},"Unsanitized paths in taint flows",{"reason":648,"points":144},"Low percentage of properly escaped output",{"reason":650,"points":651},"Low percentage of SQL prepared statements",7,{"reason":653,"points":120},"Significant number of file operations",{"reason":655,"points":120},"Significant number of external HTTP requests","2026-03-17T00:13:52.687Z",{"wat":658,"direct":667},{"assetPaths":659,"generatorPatterns":662,"scriptPaths":663,"versionParams":666},[660,661],"\u002Fwp-content\u002Fplugins\u002Ftext-truncator\u002Fasset\u002Fjs\u002Ftrunk8.js","\u002Fwp-content\u002Fplugins\u002Ftext-truncator\u002Fasset\u002Fjs\u002Ftext-truncator.js",[],[664,665],"\u002Fasset\u002Fjs\u002Ftrunk8.js","\u002Fasset\u002Fjs\u002Ftext-truncator.js",[],{"cssClasses":668,"htmlComments":669,"htmlAttributes":670,"restEndpoints":671,"jsGlobals":672,"shortcodeOutput":675},[],[],[],[],[673,674],"trunk8","TextTruncator",[]]