[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fIsS3ITEBHqiskGGIXP_5bULYY6pZl21T6meTdUtEvTo":3},{"slug":4,"name":5,"version":6,"author":7,"author_profile":8,"description":9,"short_description":10,"active_installs":11,"downloaded":12,"rating":11,"num_ratings":11,"last_updated":13,"tested_up_to":14,"requires_at_least":15,"requires_php":16,"tags":17,"homepage":19,"download_link":20,"security_score":21,"vuln_count":11,"unpatched_count":11,"last_vuln_date":22,"fetched_at":23,"vulnerabilities":24,"developer":25,"crawl_stats":22,"alternatives":31,"analysis":134,"fingerprints":184},"matcms","MatCMS","1.7.0","matmattia","https:\u002F\u002Fprofiles.wordpress.org\u002Fmatmattia\u002F","\u003Cp>MatCMS adds to WordPress some utilities for developers: it registers more scripts and stylesheets handlers, add useful functions for posts and themes, and much more.\u003C\u002Fp>\n","This plugin adds to WordPress some utilities for developers.",0,3520,"","6.9.4","4.0","7.3",[18,4],"developers","https:\u002F\u002Fwww.matriz.it\u002Fprojects\u002Fmatcms-wordpress\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fmatcms.1.7.0.zip",100,null,"2026-03-15T10:48:56.248Z",[],{"slug":7,"display_name":7,"profile_url":8,"plugin_count":26,"total_installs":27,"avg_security_score":21,"avg_patch_time_days":28,"trust_score":29,"computed_at":30},2,10,30,94,"2026-04-04T20:53:09.430Z",[32,54,75,95,116],{"slug":33,"name":34,"version":35,"author":36,"author_profile":37,"description":38,"short_description":39,"active_installs":40,"downloaded":41,"rating":42,"num_ratings":43,"last_updated":44,"tested_up_to":45,"requires_at_least":46,"requires_php":13,"tags":47,"homepage":50,"download_link":51,"security_score":52,"vuln_count":11,"unpatched_count":11,"last_vuln_date":22,"fetched_at":53},"hide-products-count","Hide products count","0.6","Joan Boluda","https:\u002F\u002Fprofiles.wordpress.org\u002Fboluda\u002F","\u003Cp>Hide products count in category view in WooCommerce\u003C\u002Fp>\n","Hide products count in category view in WooCommerce",300,6366,86,6,"2017-04-18T15:02:00.000Z","4.4.34","3.5.0",[18,48,49],"dummy-text","lorem-ipsum","http:\u002F\u002Fboluda.com\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fhide-products-count.zip",85,"2026-03-15T15:16:48.613Z",{"slug":55,"name":56,"version":57,"author":58,"author_profile":59,"description":60,"short_description":61,"active_installs":21,"downloaded":62,"rating":21,"num_ratings":26,"last_updated":63,"tested_up_to":64,"requires_at_least":65,"requires_php":66,"tags":67,"homepage":73,"download_link":74,"security_score":52,"vuln_count":11,"unpatched_count":11,"last_vuln_date":22,"fetched_at":53},"premmerce-dev-tools","Premmerce Dev Tools","2.0","Premmerce","https:\u002F\u002Fprofiles.wordpress.org\u002Fpremmerce\u002F","\u003Cp>This plugin is aimed at making it easier to develop, test and debug the code on the WordPress platform.\u003Cbr \u002F>\nWe created this plugin based on our research: \u003Ca href=\"https:\u002F\u002Fpremmerce.com\u002Fwordpress-development-environment-developers-best-practices-review\u002F\" rel=\"nofollow ugc\">WordPress Development Environment and Developers Best Practices Review\u003C\u002Fa>\u003C\u002Fp>\n\u003Ch4>Major features in “Premmerce Dev Tools”\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Integration of symfony\u002Fvar-dumper for debugging the code\u003C\u002Fli>\n\u003Cli>Integration symfony\u002Fstopwatch for the execution time checking\u003C\u002Fli>\n\u003Cli>Generating the test data for WooCommerce\u003C\u002Fli>\n\u003Cli>Plugin generator, which creates the basic files structure\u003C\u002Fli>\n\u003Cli>Database clean up\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Compatibility with other Plugins\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>WooCommerce\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Installation\u003C\u002Fh4>\n\u003Col>\n\u003Cli>Unzip the downloaded zip file.\u003C\u002Fli>\n\u003Cli>Upload the plugin folder into the ‘wp-content\u002Fplugins\u002F’ directory of your WordPress site.\u003C\u002Fli>\n\u003Cli>Activate ‘Premmerce Dev Tools’ from Plugins page\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch3>Documentation\u003C\u002Fh3>\n\u003Cp>Full documentation is available here: \u003Ca href=\"https:\u002F\u002Fpremmerce.com\u002Fpremmerce-dev-tools\u002F\" rel=\"nofollow ugc\">Premmerce Dev Tools\u003C\u002Fa>\u003C\u002Fp>\n","This plugin is created to facilitate the development, testing and debugging of the code on the WordPress platform and to quickly create the demo data  &hellip;",5474,"2019-05-29T10:08:00.000Z","5.2.24","4.8","5.6",[68,69,70,71,72],"code-debug","debugging","developers-tools","plugin-generator","wordpress-debugging","https:\u002F\u002Fpremmerce.com\u002Fpremmerce-dev-tools\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fpremmerce-dev-tools.2.0.zip",{"slug":76,"name":77,"version":78,"author":79,"author_profile":80,"description":81,"short_description":82,"active_installs":83,"downloaded":84,"rating":21,"num_ratings":85,"last_updated":86,"tested_up_to":87,"requires_at_least":88,"requires_php":13,"tags":89,"homepage":13,"download_link":94,"security_score":52,"vuln_count":11,"unpatched_count":11,"last_vuln_date":22,"fetched_at":53},"wp-utility-script-runner","WP Utility Script Runner","1.1.0","Bytes.co","https:\u002F\u002Fprofiles.wordpress.org\u002Fburlingtonbytes\u002F","\u003Cp>Sometimes, you run into a situation where you just need to manually run a script. The actual logic might be as simple as generating a csv from a query, or changing a user’s settings, or even just running a single line of SQL. WordPress makes this difficult.\u003C\u002Fp>\n\u003Cp>There are many hacky solutions to the problem, but most of them lack security or are too difficult for anyone but a developer to run or just take too long to build. That’s where we come in.\u003C\u002Fp>\n\u003Cp>WP Utility Script Runner lets you start with a simple 17 line template, add in your custom code, save to the server, and in minutes you have a secure, fully featured utility, that you can safely run from the WordPress dashboard.\u003C\u002Fp>\n\u003Cp>But that’s not all! With a few extra lines of code, your utility can:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Accept user input\u003C\u002Fli>\n\u003Cli>Accept file input\u003C\u002Fli>\n\u003Cli>Run at a future date and time\u003C\u002Fli>\n\u003Cli>Run on a recurring schedule\u003C\u002Fli>\n\u003Cli>Run large tasks by breaking them up into several smaller tasks, and saving state.\u003C\u002Fli>\n\u003Cli>Create reports and other output files\u003C\u002Fli>\n\u003C\u002Ful>\n","Create custom scripts and manage them directly from the WordPress Dashboard. Schedule scripts, handle user input, download reports, and more.",90,3408,1,"2018-10-22T20:34:00.000Z","5.0.25","4.6",[90,18,91,92,93],"cron","run-once","task","utilities","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fwp-utility-script-runner.zip",{"slug":96,"name":97,"version":98,"author":99,"author_profile":100,"description":101,"short_description":102,"active_installs":103,"downloaded":104,"rating":21,"num_ratings":105,"last_updated":106,"tested_up_to":107,"requires_at_least":108,"requires_php":13,"tags":109,"homepage":114,"download_link":115,"security_score":52,"vuln_count":11,"unpatched_count":11,"last_vuln_date":22,"fetched_at":53},"admin-page-framework","Admin Page Framework","3.9.1","miunosoft","https:\u002F\u002Fprofiles.wordpress.org\u002Fmiunosoft\u002F","\u003Ch4>Reduce the Time Spent for Plugin and Theme Development\u003C\u002Fh4>\n\u003Cp>One of the time-consuming part of developing WordPress plugins and themes is creating setting pages. As you more and more write plugins and themes, you will soon realize major part of code can be reused. Admin Page Framework aims to provide reusable code that eliminates the necessity of writing repeated code over and over again.\u003C\u002Fp>\n\u003Cp>You will have more organized means of building option pages with the framework. Extend the library class and pass your arrays defining the form elements to the predefined class methods. The library handles all the complex coding behind the scene and creates the pages and the forms for you.\u003C\u002Fp>\n\u003Ch4>Create Essential Page and Form Components for Your Users\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Top-level Page, Sub Pages, and In-page Tabs\u003C\u002Fstrong> – where your users will access to operate your plugin or theme.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Forms\u003C\u002Fstrong> – to let your users store their options.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Custom Post Types\u003C\u002Fstrong> – and the custom columns in the post listing table.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Custom Taxonomies and Fields\u003C\u002Fstrong> – store options associated with a taxonomy in the taxonomy definition page.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Meta Boxes and Fields\u003C\u002Fstrong> – store meta data associated with posts of set post types. Also meta boxes can be added to the pages created with the framework.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Widgets and Fields\u003C\u002Fstrong> – display modular outputs based on the user’s settings in the front end.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Network Admin Pages and Forms\u003C\u002Fstrong> – create admin pages in the newtork admin area of WordPress multi-sites.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Construct Simple Yet Complex Setting Forms\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Cstrong>Section Tabs\u003C\u002Fstrong> – form sections can be displayed in a tabbed box.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Collapsible Sections\u003C\u002Fstrong> – form sections can be collapsed and expanded.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Repeatable Sections and Fields\u003C\u002Fstrong> – dynamically add\u002Fremove form sections and fields.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Sortable Sections and Fields\u003C\u002Fstrong> – drag and drop form sections and fields to change the order.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Nested Sections and Fields\u003C\u002Fstrong> – nest sections and fields to construct complex forms.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Import and Export Options\u003C\u002Fstrong> – buttons that the user can import and export settings by uploading and downloading text files.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Reset Button\u003C\u002Fstrong> – let your users to initialize the saved options.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Validation and Error Messages\u003C\u002Fstrong> – with the pre-defined validation callbacks, the user’s submitting form data can be verified. Furthermore, by setting the error array, you can display the error message to the user.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Contextual Help Pane\u003C\u002Fstrong> – help information can be added to the contextual help pane that appears at the top right of each screen.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Custom Field Types\u003C\u002Fstrong> – your own field type can be registered. This allows you to design own fields such as a combination of a checkbox with a text field.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Contact Form\u003C\u002Fstrong> – receive emails of user feedback and issue reports sent via the contact form embedded in an admin page.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Tooltips\u003C\u002Fstrong> – add a small pop-up box beside section and field title for the users to read about the option.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Produce a Series of Products with the Framework Extensibility\u003C\u002Fh4>\n\u003Cp>If you are planning to create a product possibly extended with an unlimited number of add-ons, take advantage of the framework’s native extensibility. The created admin pages and forms will become highly extensible with the automatically created hooks. In other words, it empowers other developers to customize your plugin or theme. That will result on making your projects grow.\u003C\u002Fp>\n\u003Cp>Also, use the framework as a library and your plugin or theme does not have to require an extra dependency to be installed. Therefore, your product will be perfectly portable.\u003C\u002Fp>\n\u003Ch4>Built-in Field Types\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Ccode>text\u003C\u002Fcode> – a normal field to enter text input.\u003C\u002Fli>\n\u003Cli>\u003Ccode>password\u003C\u002Fcode> – a masked text input field.\u003C\u002Fli>\n\u003Cli>\u003Ccode>textarea\u003C\u002Fcode> – a text input field with multiple lines. It supports TinyMCE rich text editor.\u003C\u002Fli>\n\u003Cli>\u003Ccode>radio\u003C\u002Fcode> – a set of radio buttons that lets the user pick an option.\u003C\u002Fli>\n\u003Cli>\u003Ccode>checkbox\u003C\u002Fcode> – a check box that lets the user enable\u002Fdisable an item.\u003C\u002Fli>\n\u003Cli>\u003Ccode>select\u003C\u002Fcode> – a drop-down list that lest the user pick one or more item(s) from a list.\u003C\u002Fli>\n\u003Cli>\u003Ccode>hidden\u003C\u002Fcode> – a hidden field that will be useful to insert invisible values.\u003C\u002Fli>\n\u003Cli>\u003Ccode>file\u003C\u002Fcode> – a file uploader that lets the user upload files.\u003C\u002Fli>\n\u003Cli>\u003Ccode>image\u003C\u002Fcode> – a custom text field with the image uploader script that lets the user set an image URL.\u003C\u002Fli>\n\u003Cli>\u003Ccode>media\u003C\u002Fcode> – a custom text field with the media uploader script that lets the user set a file URL.\u003C\u002Fli>\n\u003Cli>\u003Ccode>color\u003C\u002Fcode> – a custom text field with the color picker script.\u003C\u002Fli>\n\u003Cli>\u003Ccode>submit\u003C\u002Fcode> – a submit button that lets the user send the form.\u003C\u002Fli>\n\u003Cli>\u003Ccode>export\u003C\u002Fcode> – a custom submit field that lets the user export the stored data.\u003C\u002Fli>\n\u003Cli>\u003Ccode>import\u003C\u002Fcode> – a custom combination field of the file and the submit fields that let the user import data.\u003C\u002Fli>\n\u003Cli>\u003Ccode>posttype\u003C\u002Fcode> – a set of check-lists of taxonomies enabled on the site in a tabbed box.\u003C\u002Fli>\n\u003Cli>\u003Ccode>taxonomy\u003C\u002Fcode> – check-lists of taxonomies enabled on the site in a tabbed box.\u003C\u002Fli>\n\u003Cli>\u003Ccode>size\u003C\u002Fcode> – a combination field of the text and the select fields that let the user set sizes with a selectable unit.\u003C\u002Fli>\n\u003Cli>\u003Ccode>section_title\u003C\u002Fcode> – a text field placed in the section title to let the user name the section.\u003C\u002Fli>\n\u003Cli>\u003Ccode>system\u003C\u002Fcode> – displays the site system information.\u003C\u002Fli>\n\u003Cli>\u003Ccode>inline_mixed\u003C\u002Fcode> – consists of inline elements of fields with different field types.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Bundled Custom Field Types\u003C\u002Fh4>\n\u003Cp>With custom field types, you can create more detailed customized field outputs. The demo component includes the following example custom field types.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>sample\u003C\u002Fcode> – a sample custom field type with a JavaScript script.\u003C\u002Fli>\n\u003Cli>\u003Ccode>github\u003C\u002Fcode> – displays GitHub buttons.\u003C\u002Fli>\n\u003Cli>\u003Ccode>path\u003C\u002Fcode> – lets the user select file paths on the server.\u003C\u002Fli>\n\u003Cli>\u003Ccode>toggle\u003C\u002Fcode> – lets the user toggle a switch button.\u003C\u002Fli>\n\u003Cli>\u003Ccode>no_ui_slider\u003C\u002Fcode> – lets the user set values between ranges with a slider.\u003C\u002Fli>\n\u003Cli>\u003Ccode>select2\u003C\u002Fcode> – lets the user select items from a predefined list which cam be populated with AJAX.\u003C\u002Fli>\n\u003Cli>\u003Ccode>post_type_taxonomy\u003C\u002Fcode> – lets the user select taxonomy terms of selected post types.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>If you want a field type that are not listed here, you can check the \u003Ca href=\"http:\u002F\u002Fadmin-page-framework.michaeluno.jp\u002Fadd-ons\u002Ffield-type-pack\u002F\" rel=\"nofollow ugc\">field type pack\u003C\u002Fa> or request a new one in the \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fsupport\u002Fplugin\u002Fadmin-page-framework\" rel=\"ugc\">forum\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch4>Getting Started\u003C\u002Fh4>\n\u003Cp>To get started, go to \u003Cstrong>Dashboard\u003C\u002Fstrong> -> \u003Cstrong>Admin Page Framework\u003C\u002Fstrong> -> \u003Cstrong>About\u003C\u002Fstrong> -> \u003Cstrong>Getting Started\u003C\u002Fstrong>.\u003C\u002Fp>\n\u003Ch4>Demo\u003C\u002Fh4>\n\u003Cp>Activate the demo pages to see the possible features of the framework. To activate it, go to \u003Cstrong>Dashboard\u003C\u002Fstrong> -> \u003Cstrong>Admin Page Framework\u003C\u002Fstrong> -> \u003Cstrong>Add Ons\u003C\u002Fstrong> -> \u003Cstrong>Demo\u003C\u002Fstrong>.\u003C\u002Fp>\n\u003Ch4>Documentation\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>\u003Ca href=\"http:\u002F\u002Fadmin-page-framework.michaeluno.jp\u002Fen\u002Fv3\u002Fpackage-AdminPageFramework.AdminPage.html\" rel=\"nofollow ugc\">Online Documentation\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"http:\u002F\u002Fadmin-page-framework.michaeluno.jp\u002Ftutorials\u002F\" rel=\"nofollow ugc\">Tutorials\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Notes:\u003C\u002Fstrong> this framework does not do anything by itself. If you are not a developer, you do not need this.\u003C\u002Fp>\n\u003Ch4>Use Unique Page Slug\u003C\u002Fh4>\n\u003Cp>The framework internally uses the \u003Ccode>add_submenu_page()\u003C\u002Fcode> function to register sub menu pages. When the same page slug is registered for multiple root pages, only the last registered callback gets triggered. The other ones will be ignored.\u003C\u002Fp>\n\u003Cp>This means if you choose a very simple page slug such as \u003Ccode>about\u003C\u002Fcode> for your plugin\u002Ftheme’s information page and then if there is another plugin using the same page slug, your users will get either of your page or the other.\u003C\u002Fp>\n\u003Cp>To avoid this, make sure to use a unique page slug. One way to do that is to add a prefix like \u003Ccode>apf_about\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Ch4>Use the files generated with the component generator\u003C\u002Fh4>\n\u003Cp>There is one thing you need to be careful when you include the framework: the framework version conflicts. Imagine you publish a plugin using the framework v3.4.6 and your plugin user installs a plugin using the framework v3.0.0 which is below your framework version. If the other plugin loads earlier than yours, your plugin may not work properly and vice versa.\u003C\u002Fp>\n\u003Cp>There is a way to avoid such a conflict: change the PHP class names of the framework you include. All the class names have the prefix \u003Ccode>AdminPageFramework\u003C\u002Fcode> so just change it to something like \u003Ccode>MyPlugin_AdminPageFramework\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Cp>Go to \u003Cstrong>Dashboard\u003C\u002Fstrong> -> \u003Cstrong>Admin Page Framework\u003C\u002Fstrong> -> \u003Cstrong>Tools\u003C\u002Fstrong> -> \u003Cstrong>Generator\u003C\u002Fstrong>. Set the prefix in the option field and download the files.\u003C\u002Fp>\n\u003Cp>If you do not modify the framework class names, you are supposed to extend the \u003Ccode>AdminPageFramework\u003C\u002Fcode> factory class.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>class MyAdminPage extends AdminPageFramework {\n    ...\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>When you modify the framework class names, make sure you extend the class with the modified name.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>class MyAdminPage extends MyPlugin_AdminPageFramework {\n    ...\n}\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>For more detailed instruction, go to \u003Cstrong>Dashboard\u003C\u002Fstrong> -> \u003Cstrong>Admin Page Framework\u003C\u002Fstrong> -> \u003Cstrong>About\u003C\u002Fstrong> -> \u003Cstrong>Getting Started\u003C\u002Fstrong>.\u003C\u002Fp>\n\u003Cp>By the time WordPress’s minimum required PHP version becomes 5.3 or higher, we can use name spaces then this problem will be solved.\u003C\u002Fp>\n\u003Ch4>Change Framework’s System Messages\u003C\u002Fh4>\n\u003Cp>The default messages defined by the framework can be changed. For example, when you import a setting with the framework, the setting notice “The options have been updated.” will be displayed.\u003C\u002Fp>\n\u003Cp>If you want to change it to something else, modify the \u003Ccode>oMsg\u003C\u002Fcode> object. It has the \u003Ccode>aMessages\u003C\u002Fcode> public property array holding all the messages that the framework uses.\u003C\u002Fp>\n\u003Ch4>Get comfortable with the ‘attributes’ array argument\u003C\u002Fh4>\n\u003Cp>In each field definition array, you can set the \u003Ccode>attributes\u003C\u002Fcode> arguments which defines the HTML attributes of the field so that you can modify the output of the field by passing attribute values.\u003C\u002Fp>\n\u003Cp>The argument accepts the values as an array. Each element represents the attribute’s name and value. The array key corresponds to the name of the attribute and the value to the attribute value.\u003C\u002Fp>\n\u003Cp>For example,\u003C\u002Fp>\n\u003Cpre>\u003Ccode>array(\n    'field_id'      => 'interval',\n    'title'         => __( 'Interval', 'task-scheduler' ),\n    'type'          => 'number',\n    'attributes'    => array(\n        'min'   => 0,\n        'step'  => 1,\n        'max'   => 24,\n    ),\n),\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>In addition, you can change the attributes of the following container elements by setting their key and passing a nested attribute array.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>fieldrow\u003C\u002Fcode> – the \u003Ccode>td\u003C\u002Fcode> tag element containing the field output.\u003C\u002Fli>\n\u003Cli>\u003Ccode>fieldset\u003C\u002Fcode> – the \u003Ccode>fieldset\u003C\u002Fcode> tag element containing the field output.\u003C\u002Fli>\n\u003Cli>\u003Ccode>fields\u003C\u002Fcode> – the \u003Ccode>div\u003C\u002Fcode> tag element containing the sub-fields and the main field.\u003C\u002Fli>\n\u003Cli>\u003Ccode>field\u003C\u002Fcode> – the \u003Ccode>div\u003C\u002Fcode> tag element containing each field.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>This submit button will float right.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>array(\n    'field_id'          => 'submit',\n    'type'              => 'submit',\n    'save'              => false,\n    'value'             => __( 'Save', 'task-scheduler' ),\n    'label_min_width'   => 0,\n    'attributes'        => array(\n        'field' => array(\n            'style' => 'float:right; clear:none; display: inline;',\n        ),\n    ),\n)\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>For meta box and widget form fields (as they have slightly different styling than generic admin pages),\u003C\u002Fp>\n\u003Cpre>\u003Ccode>array(\n    'field_id'          => 'submit_in_meta_box',\n    'type'              => 'submit',\n    'save'              => false,\n    'show_title_column' => false,\n    'label_min_width'   => 0,\n    'attributes'        => array(\n        'field' => array(\n            'style' => 'float:right; width:auto;',\n        ),\n    ),\n),\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>Change Preview Image Size of the ‘image’ Field Type\u003C\u002Fh4>\n\u003Cp>To specify a custom size to the preview element of the \u003Ccode>image\u003C\u002Fcode> field type, set an attribute array like the below, where 300px is the max width.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>array(\n    'field_id'      => 'my_image_field_id',\n    'title'         => __( 'Image', 'admin-page-framework-demo' ),\n    'type'          => 'image',\n    'attributes'    => array(\n        'preview' => array(\n            'style' => 'max-width: 200px;',\n        ),\n    ),\n),\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>Display items of ‘radio’ field type one per line\u003C\u002Fh4>\n\u003Cp>To display radio button items one per line, set the \u003Ccode>label_min_width\u003C\u002Fcode> to \u003Ccode>100%\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>array(\n    'field_id'          => 'my_radio_field_id',\n    'title'             => __( 'Radio Button', 'admin-page-framework-demo' ),\n    'type'              => 'radio',\n    'label_min_width'   => '100%',\n    'label'             => array(\n        'a' => __( 'This is a.', 'admin-page-framework-demo' ),\n        'b' => __( 'This is b.', 'admin-page-framework-demo' ),\n        'c' => __( 'This is a.', 'admin-page-framework-demo' )c\n    ),\n),\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>Set default field value\u003C\u002Fh4>\n\u003Cp>To set the initial value of a field, use the \u003Ccode>default\u003C\u002Fcode> argument in the field definition array.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>array(\n    'field_id'  => 'my_text_field_id',\n    'title'     => __( 'My Text Input Field', 'admin-page-framework-demo' ),\n    'type'      => 'text',\n    'default'   => 'This text will be displayed for the first time that the field is displayed and will be overridden when a user set an own value.',\n),\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>Always display a particular value in a field\u003C\u002Fh4>\n\u003Cp>The \u003Ccode>value\u003C\u002Fcode> argument in the definition array can suppress the saved value. This is useful when you want to set a value from a different data source or create a wizard form that stores the data in a custom location.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>array(\n    'field_id'  => 'my_text_field_id',\n    'title'     => __( 'My Text Input Field', 'admin-page-framework-demo' ),\n    'type'      => 'text',\n    'value'     => 'This will be always set.',\n),\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>If it is a repeatable field, set values in numerically indexed sub-elements.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>array(\n    'field_id'      => 'my_text_field_id',\n    'title'         => __( 'My Text Input Field', 'admin-page-framework-demo' ),\n    'type'          => 'text',\n    'repeatable'    => true,\n    'value'         => 'the first value',\n    array(\n        'value' => 'the second value',\n    ),\n    array(\n        'value' => 'the third value',\n    ),\n),\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Alternately, you may use the \u003Ccode>options_{instantiated class name}\u003C\u002Fcode> filter to suppress the options so that setting the value argument is not necessary.\u003Cbr \u002F>\nSee examples, https:\u002F\u002Fgist.github.com\u002Fmichaeluno\u002Fc30713fcfe0d9d45d89f, https:\u002F\u002Fgist.github.com\u002Fmichaeluno\u002Ffcfac27825aa8a35b90f,\u003C\u002Fp>\n","Facilitates WordPress plugin and theme development.",80,64536,23,"2022-04-15T03:48:00.000Z","5.9.13","3.4",[110,111,18,112,113],"admin-pages","api","options","settings","http:\u002F\u002Fadmin-page-framework.michaeluno.jp\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fadmin-page-framework.3.9.1.zip",{"slug":117,"name":118,"version":119,"author":120,"author_profile":121,"description":122,"short_description":123,"active_installs":124,"downloaded":125,"rating":21,"num_ratings":26,"last_updated":126,"tested_up_to":127,"requires_at_least":15,"requires_php":13,"tags":128,"homepage":13,"download_link":133,"security_score":52,"vuln_count":11,"unpatched_count":11,"last_vuln_date":22,"fetched_at":53},"get-tweets-in-php","Get Tweets in PHP","1.2","azanelli","https:\u002F\u002Fprofiles.wordpress.org\u002Fazanelli\u002F","\u003Cp>This plugin will add the PHP class \u003Ccode>GetTweetsInPhp\u003C\u002Fcode>. You can use this class as described below for retrieving \u003Cstrong>latest tweets\u003C\u002Fstrong> from a Twitter account, then handle the tweets as you want in your PHP code.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Note\u003C\u002Fstrong>: you should create a Twitter app before using this plugin. You can do it from here: \u003Ca href=\"http:\u002F\u002Fapps.twitter.com\" rel=\"nofollow ugc\">http:\u002F\u002Fapps.twitter.com\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch4>Features\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>Get latest N tweets from a Twitter account.\u003C\u002Fli>\n\u003Cli>Get the tweet’s text formatted as HTML (with links for each entities).\u003C\u002Fli>\n\u003Cli>Cache support.\u003C\u002Fli>\n\u003Cli>Made for developers.\u003C\u002Fli>\n\u003Cli>Really light and simple.\u003C\u002Fli>\n\u003Cli>Works with the v1.1 Twitter API.\u003C\u002Fli>\n\u003Cli>Trivial install\u002Funinstall (only add\u002Fremove the plugin’s files).\u003C\u002Fli>\n\u003Cli>No any data will be permanently stored in your database (only transient data\u003Cbr \u002F>\nif the cache is enabled).\u003C\u002Fli>\n\u003Cli>Proudly coded by \u003Ca href=\"http:\u002F\u002Fnetgloo.com\u002Fen\" rel=\"nofollow ugc\">Netgloo\u003C\u002Fa>.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Example usage\u003C\u002Fh4>\n\u003Cp>Get and show latest tweets from \u003Ca href=\"http:\u002F\u002Ftwitter.com\u002Fnetglooweb\" rel=\"nofollow ugc\">@netglooweb\u003C\u002Fa>:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u002F\u002F Set configurations\n$configs = [\n  \u002F\u002F Set here tokens from your Twitter's app\n  'consumer_key' => 'CONSUMER_KEY', \n  'consumer_secret' => 'CONSUMER_SECRET',\n\n  \u002F\u002F The Twitter account name\n  'screen_name' => 'netglooweb',\n\n  \u002F\u002F The number of tweets\n  'count' => 5,\n];\n\n\u002F\u002F Get latest tweets using the function get_tweets\n$tweets = \\Netgloo\\GetTweetsInPhp::get_tweets($configs);\n\n\u002F\u002F ...\n\n\u002F\u002F For each tweet show the HTML text and the attached image\nforeach ($tweets as $tweet) {\n\n  echo \"\u003Cp>\";\n  echo $tweet->n_html_text;\n\n  if ($tweet->n_has_media_photo) {\n    echo \"\u003Cimg src='{$tweet->n_media_photo_url}' width='100%' \u002F>\";\n  }\n\n  echo \"\u003C\u002Fp>\";\n\n}\n\n\u002F\u002F ...\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>That’s all! Have fun!\u003C\u002Fp>\n\u003Ch4>Configurations\u003C\u002Fh4>\n\u003Cp>The \u003Ccode>get_tweets()\u003C\u002Fcode> function takes an array of configurations:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>$configs = [\n\n  \u002F\u002F --- Required ---\n\n  \u002F\u002F The tokens from your Twitter's app\n  'consumer_key' => '...',\n  'consumer_secret' => '...',\n\n  \u002F\u002F The Twitter account name\n  'screen_name' => '...',\n\n\n  \u002F\u002F --- Optional ---\n\n  \u002F\u002F The number of tweets\n  'count' => 20,\n\n  \u002F\u002F Include also the retweets\n  'include_rts' => true,\n\n  \u002F\u002F In the HTML text will be showed \"Retweeted by ...\" if the tweet\n  \u002F\u002F is a retweet\n  'show_retweeted_by' => true,\n\n  \u002F\u002F Enable the cache\n  \u002F\u002F It is recommended to activate the cache, when you put live \n  \u002F\u002F your website, in order to avoid to reach the Twitter's api rate\n  \u002F\u002F limit of 300 requests \u002F 15-min.\n  'cache_enabled' => false,\n\n  \u002F\u002F Cache expiration (in seconds)\n  \u002F\u002F Increase the value to optimize the website's speed, decrease\n  \u002F\u002F the value if you want a more real-time behaviour (but not\n  \u002F\u002F less than 4 seconds to avoid to reach the rate limit).\n  'cache_expiration' => 60,\n\n  \u002F\u002F Templates\n\n  \u002F\u002F Retweeted by text template\n  'retweeted_by_template' => \n    '\u003Cem> Retweeted by {{user_name}}\u003C\u002Fem>',\n\n  \u002F\u002F Hash tag link template\n  'hashtag_link_template' => \n    '\u003Ca href=\"{{hashtag_link}}\" rel=\"nofollow\" target=\"_blank\">' .\n    '#{{hashtag_text}}\u003C\u002Fa>',\n\n  \u002F\u002F Url link template\n  'url_link_template' => \n    '\u003Ca href=\"{{url_link}}\" rel=\"nofollow\" target=\"_blank\" ' .\n    'title=\"{{url_title}}\">{{url_text}}\u003C\u002Fa>',\n\n  \u002F\u002F User mention link template\n  'user_mention_link_template' => \n    '\u003Ca href=\"{{user_mention_link}}\" rel=\"nofollow\" target=\"_blank\" ' .\n    'title=\"{{user_mention_title}}\">@{{user_mention_text}}\u003C\u002Fa>',\n\n  \u002F\u002F Media link template\n  'media_link_template' => \n    '\u003Ca href=\"{{media_link}}\" rel=\"nofollow\" target=\"_blank\" ' .\n    'title=\"{{media_title}}\">{{media_text}}\u003C\u002Fa>'\n\n];\n\n$tweets = \\Netgloo\\GetTweetsInPhp::get_tweets($configs);\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>Returned values\u003C\u002Fh4>\n\u003Cp>The \u003Ccode>get_tweets()\u003C\u002Fcode> function will return an Array of tweets. On each tweet object are available these properties:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>n_html_text\u003C\u002Fcode> (String) The tweet text formatted as HTML, with links on each entities.\u003C\u002Fli>\n\u003Cli>\u003Ccode>n_is_retweeted\u003C\u002Fcode> (Boolean) True if the curret tweet is a retweet.\u003C\u002Fli>\n\u003Cli>\u003Ccode>n_has_media_photo\u003C\u002Fcode> (Boolean) True if the current tweet has an attached photo.\u003C\u002Fli>\n\u003Cli>\u003Ccode>n_media_photo_url\u003C\u002Fcode> (String) The url of the tweet’s attached photo.\u003C\u002Fli>\n\u003Cli>\u003Ccode>n_media_photo_urls\u003C\u002Fcode> (Array) If the tweet has more than one attached photos this properties contains all the urls.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Other available properties are those returned from the \u003Ca href=\"https:\u002F\u002Fdev.twitter.com\u002Frest\u002Freference\u002Fget\u002Fstatuses\u002Fuser_timeline\" rel=\"nofollow ugc\">user_timeline Twitter’s API\u003C\u002Fa>.\u003Cbr \u002F>\nThese are some useful ones:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>created_at\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>retweet_count\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>user->name\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>user->screen_name\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>user->profile_image_url\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>If the properties \u003Ccode>n_is_retweeted\u003C\u002Fcode> is true the current tweet is a “re-tweet” and the \u003Ccode>retweeted_status\u003C\u002Fcode> object is available:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Ccode>retweeted_status->user->name\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>retweeted_status->user->screen_name\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>retweeted_status->retweet_count\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>\u003Cstrong>Example\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>This code use some of the above properties:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>\u002F\u002F ...\n\n$tweets = \\Netgloo\\GetTweetsInPhp::get_tweets($configs);\n\nforeach ($tweets as $tweet) {\n  echo $tweet->created_at . \"\u003Cbr\u002F>\";\n  echo $tweet->n_html_text . \"\u003Cbr\u002F>\";\n  if ($tweet->n_has_media_photo) {\n    echo $tweet->n_media_photo_url  . \"\u003Cbr\u002F>\";\n  }\n}\n\n\u002F\u002F ...\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>Limitations\u003C\u002Fh4>\n\u003Cp>Since we rely on the Twitter’s \u003Ccode>user_timeline\u003C\u002Fcode> API, you should read the following docs for taking in account any API’s limitation:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>https:\u002F\u002Fdev.twitter.com\u002Frest\u002Freference\u002Fget\u002Fstatuses\u002Fuser_timeline\u003C\u002Fli>\n\u003Cli>https:\u002F\u002Fdev.twitter.com\u002Frest\u002Fpublic\u002Ftimelines\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch4>Contributing\u003C\u002Fh4>\n\u003Cp>For patches, bug reports, suggestions, requests for features there is a Git repository on GitHub here:\u003Cbr \u002F>\nhttps:\u002F\u002Fgithub.com\u002Fnetgloo\u002Fget-tweets-in-php\u003C\u002Fp>\n","Get latest tweets from a Twitter account with a couple of lines of PHP, and do anything you want with them.",60,3042,"2016-12-28T14:59:00.000Z","4.7.32",[18,129,130,131,132],"latest-tweets","tweet","tweets","twitter","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fget-tweets-in-php.1.2.zip",{"attackSurface":135,"codeSignals":156,"taintFlows":171,"riskAssessment":172,"analyzedAt":183},{"hooks":136,"ajaxHandlers":152,"restRoutes":153,"shortcodes":154,"cronEvents":155,"entryPointCount":11,"unprotectedCount":11},[137,143,147],{"type":138,"name":139,"callback":140,"file":141,"line":142},"action","wp_enqueue_scripts","closure","inc\\matcms.class.php",19,{"type":144,"name":145,"callback":140,"priority":27,"file":141,"line":146},"filter","status_header",41,{"type":144,"name":148,"callback":149,"file":150,"line":151},"paginate_links_output","\\MatCMS\\Theme::checkBootstrapPagination","inc\\theme.class.php",133,[],[],[],[],{"dangerousFunctions":157,"sqlUsage":158,"outputEscaping":164,"fileOperations":11,"externalRequests":11,"nonceChecks":11,"capabilityChecks":11,"bundledLibraries":170},[],{"prepared":11,"raw":85,"locations":159},[160],{"file":161,"line":162,"context":163},"inc\\post.class.php",252,"$wpdb->query() with variable interpolation",{"escaped":165,"rawEcho":85,"locations":166},20,[167],{"file":150,"line":168,"context":169},119,"raw output",[],[],{"summary":173,"deductions":174},"The static analysis of matcms v1.7.0 reveals a generally strong security posture, with no identified attack surface, dangerous functions, file operations, external HTTP requests, or taint vulnerabilities. The plugin also demonstrates good practices in output escaping, with 95% of outputs being properly handled.  The lack of any recorded CVEs, both past and present, further suggests a history of security diligence or minimal exposure to common attack vectors.\n\nHowever, a significant concern is the presence of a single SQL query that does not utilize prepared statements, leaving it potentially vulnerable to SQL injection. Furthermore, the complete absence of nonce checks and capability checks on any entry points, while the attack surface is currently zero, is a weakness that could become problematic if new entry points are introduced without proper authentication and authorization. The current lack of vulnerability history is positive, but the identified SQL query issue highlights that even seemingly secure plugins can harbor specific, exploitable flaws.",[175,178,181],{"reason":176,"points":177},"SQL query without prepared statements",8,{"reason":179,"points":180},"No nonce checks on any entry points",5,{"reason":182,"points":180},"No capability checks on any entry points","2026-03-17T05:59:10.261Z",{"wat":185,"direct":191},{"assetPaths":186,"generatorPatterns":188,"scriptPaths":189,"versionParams":190},[187],"\u002Fwp-content\u002Fplugins\u002Fmatcms\u002Fjs\u002Fbootstrap-lightbox-init-images.js",[],[],[],{"cssClasses":192,"htmlComments":198,"htmlAttributes":199,"restEndpoints":202,"jsGlobals":203,"shortcodeOutput":204},[193,194,195,196,197],"pagination","page-item","active","disabled","page-link",[],[200,201],"data-bs-toggle","data-bs-target",[],[],[]]