Admin Page Framework
by miunosoft 5 (23 reviews)

Admin Page Framework

Facilitates WordPress plugin and theme development.

Admin Page Framework ranks #18,154 among WordPress.org plugins with 70+ active installations, is #793 of 2,429 in the Contact Forms category, a 5/5 rating from 23 reviews, and was last updated Apr 15, 2022. Data from WordPress.org, refreshed twice daily — see methodology.

Tested up to WP 5.9 (Current: 7.0.2)
v3.9.1 Current Version v3.9.1
Updated 4 years ago Last Update on 15 Apr, 2022
Refreshed 15 hours ago Last Refreshed on
#793 of 2,429 in Contact Forms Top 50% by installs No update in over a year
View on WordPress.org
Rank
#18,154
-5 this week
Active Installs
70+
-12.5%
KW Avg Position
N/A
No change
Downloads
64.6K
+2 today
Support Resolved
0%
No change
Rating
100%
Review 5 out of 5
5 (23 reviews)

Next Milestone 80

Total Progress 10%
70+ 80+
5,537
Ranks to Climb
-
Growth Needed
8,000,000
Active Installs
Pro

Unlock Exact Install Count

See the precise estimated active installs for this plugin, calculated from real-time ranking data.

  • Exact install estimates within tiers
  • Track install growth over time
  • Milestone progress predictions
Upgrade to Pro
Need 9 more installs to reach 80+

Rank Changes

18,048 18,078 18,108 18,138 18,168 23-07-2026 24-07-2026 25-07-2026 26-07-2026 27-07-2026 28-07-2026 29-07-2026 30-07-2026
17,828 17,924 18,020 18,116 18,212 15-07-2026 16-07-2026 17-07-2026 18-07-2026 19-07-2026 20-07-2026 21-07-2026 22-07-2026 23-07-2026 24-07-2026 25-07-2026 26-07-2026 27-07-2026 28-07-2026 29-07-2026 30-07-2026
17,785 17,893 18,002 18,110 18,218 30-06-2026 01-07-2026 02-07-2026 03-07-2026 04-07-2026 05-07-2026 06-07-2026 07-07-2026 08-07-2026 09-07-2026 10-07-2026 11-07-2026 12-07-2026 13-07-2026 14-07-2026 15-07-2026 16-07-2026 17-07-2026 18-07-2026 19-07-2026 20-07-2026 21-07-2026 22-07-2026 23-07-2026 24-07-2026 25-07-2026 26-07-2026 27-07-2026 28-07-2026 29-07-2026 30-07-2026
17,510 17,696 17,882 18,068 18,254 01-05-2026 02-05-2026 03-05-2026 04-05-2026 05-05-2026 06-05-2026 07-05-2026 08-05-2026 09-05-2026 10-05-2026 11-05-2026 12-05-2026 13-05-2026 14-05-2026 15-05-2026 16-05-2026 17-05-2026 18-05-2026 19-05-2026 20-05-2026 21-05-2026 22-05-2026 23-05-2026 24-05-2026 25-05-2026 26-05-2026 27-05-2026 28-05-2026 29-05-2026 30-05-2026 31-05-2026 01-06-2026 02-06-2026 03-06-2026 04-06-2026 05-06-2026 06-06-2026 07-06-2026 08-06-2026 09-06-2026 10-06-2026 11-06-2026 12-06-2026 13-06-2026 14-06-2026 15-06-2026 16-06-2026 17-06-2026 18-06-2026 19-06-2026 20-06-2026 21-06-2026 22-06-2026 23-06-2026 24-06-2026 25-06-2026 26-06-2026 27-06-2026 28-06-2026 29-06-2026 30-06-2026 01-07-2026 02-07-2026 03-07-2026 04-07-2026 05-07-2026 06-07-2026 07-07-2026 08-07-2026 09-07-2026 10-07-2026 11-07-2026 12-07-2026 13-07-2026 14-07-2026 15-07-2026 16-07-2026 17-07-2026 18-07-2026 19-07-2026 20-07-2026 21-07-2026 22-07-2026 23-07-2026 24-07-2026 25-07-2026 26-07-2026 27-07-2026 28-07-2026 29-07-2026 30-07-2026
Current #18,154
Change
Best #

Upgrade to Pro

Unlock 30-day and 90-day rank history charts with a Pro subscription.

Upgrade Now

Active Installs Growth

Active Installs 0,000,000+
Growth +0.0%
Peak 0,000,000

Downloads Growth

0 10 23-07-2026 24-07-2026 25-07-2026 26-07-2026 27-07-2026 28-07-2026 29-07-2026 30-07-2026
0 10 20 15-07-2026 16-07-2026 17-07-2026 18-07-2026 19-07-2026 20-07-2026 21-07-2026 22-07-2026 23-07-2026 24-07-2026 25-07-2026 26-07-2026 27-07-2026 28-07-2026 29-07-2026 30-07-2026
0 10 20 30-06-2026 01-07-2026 02-07-2026 03-07-2026 04-07-2026 05-07-2026 06-07-2026 07-07-2026 08-07-2026 09-07-2026 10-07-2026 11-07-2026 12-07-2026 13-07-2026 14-07-2026 15-07-2026 16-07-2026 17-07-2026 18-07-2026 19-07-2026 20-07-2026 21-07-2026 22-07-2026 23-07-2026 24-07-2026 25-07-2026 26-07-2026 27-07-2026 28-07-2026 29-07-2026 30-07-2026
0 10 20 30 01-05-2026 04-05-2026 07-05-2026 10-05-2026 13-05-2026 16-05-2026 19-05-2026 22-05-2026 25-05-2026 28-05-2026 31-05-2026 03-06-2026 06-06-2026 09-06-2026 12-06-2026 15-06-2026 18-06-2026 21-06-2026 24-06-2026 27-06-2026 30-06-2026 03-07-2026 06-07-2026 09-07-2026 12-07-2026 15-07-2026 18-07-2026 21-07-2026 24-07-2026 27-07-2026 30-07-2026
0 50 100 150 200 250 30-07-2025 11-08-2025 23-08-2025 04-09-2025 16-09-2025 28-09-2025 10-10-2025 22-10-2025 03-11-2025 15-11-2025 27-11-2025 09-12-2025 21-12-2025 02-01-2026 14-01-2026 26-01-2026 07-02-2026 19-02-2026 03-03-2026 15-03-2026 27-03-2026 08-04-2026 20-04-2026 02-05-2026 14-05-2026 26-05-2026 07-06-2026 19-06-2026 01-07-2026 13-07-2026 25-07-2026 30-07-2026
Downloads
Growth
Peak

Upgrade to Pro

Unlock 30-day, 90-day, and yearly download history charts with a Pro subscription.

Upgrade Now

Reviews & Ratings

5.0
23 reviews
Overall 100%
5
23 (100%)
4
0 (0%)
3
0 (0%)
2
0 (0%)
1
0 (0%)

Tracked Keywords

Showing 0 of 0
Keyword Position Change Type Updated
No keyword data available yet.

Unlock Keyword Analytics

Track keyword rankings, search positions, and discover new ranking opportunities with a Pro subscription.

  • Full keyword position tracking
  • Historical ranking data
  • Competitor keyword analysis
Upgrade to Pro

Frequently Asked Questions

Common questions about Admin Page Framework

This is a PHP class-based WordPress library that helps to create option pages and form fields in the administration area. In addition, it helps to manage to save, export, and import options.
WordPress plugin/theme developers who publish own products and want to speed up creating setting forms, widgets, contact form etc. and don't want to require their users to install extra dependencies.
No. Include the generated framework files in your distribution package. You can generate your own framework files via Dashboard -> Admin Page Framework -> Tools -> Generator.
Go to Dashboard -> Admin Page Framework -> Tools -> Generator and download the files.
No. The loader plugin is released under GPLv2 or later but the library itself is released under MIT. Make sure to include only the library file.
Yes, it works with WordPress MU. Technical Questions
Yes. For built-in root menu items or to create your own ones, you need to use the setRootMenuPage() method. For root pages of custom post types, use setRootMenuPageBySlug(). $this->setRootMenuPageBySlug( 'edit.php?post_type=apf_posts' );
The framework stores them as an organized multidimensional array in the options table in a single row. So use the get_option() function and pass the instantiated class name as the key or the custom key if you specify one in the constructor. For instance, if your instantiated class name is APF then the code would be $my_options = get_option( 'APF' ); And the option data is formed as an array with a structure like the following. $my_options = array( // field id => field value 'field_a' => 'value for field a' 'field_b' => 'value for field b' ... // section id => array( // field id => value, // ) 'section_a' => array( 'field_a' => 'value for field_a of section_a', 'field_b' => 'value for field_b of section_b', ... ), 'section_b' => array( 'field_a' => 'value for field_a of section_b', 'field_b' => 'value for field_b of section_b', ... ), ... ); If you are new to PHP, you may feel uncomfortable dealing with multi-dimensional arrays because you would need to call isset() so many times. The framework has a utility method to help retrieve values of multi-dimensional arrays. $_oUtil = new AdminPageFramework_WPUtility; $value = $_oUtil->getElement( $my_options, // (required) subject array array( 'key_in_the_first_depth', 'key_in_the_second_depth' ), // (required) dimensional path 'My Default Value Here' // (optional) set your default value in case a value is not set ); So for example, if you need to retrieve the value of field_a in section_b, you can do something like this. $value = $_oUtil->getElement( $my_options, array( 'section_b', 'field_a' ), 'some default value' ); In the framework factory class, you can access the utility object as it is defined already. $value = $this->oUtil->getElement( $subject, $keys, $default );
Yes, there are two main means to achieve that. Use the value argument in the field definition array to suppress the displaying value in the field. See an example. https://gist.github.com/michaeluno/fb4088b922b71710c7fb Override the options array set to the entire form using the options_{instantiated class name} filter hook or pre-defined method. See an example. https://gist.github.com/michaeluno/fcfac27825aa8a35b90f When you go with the second method, make sure to pass an empty string, '', to the first parameter of the constructor so that it disables the ability to store submitted form data into the options table. new MyAdminPage( '' );
Say, in your main plugin, your class MyAdminPageClassA created a top-level page. In your extension plugin, you want to add sub-menu pages from another instance MyAdminPageClassB. In the setUp() method of MyAdminPageClasB, pass the instantiated class name of the main plugin that created the root menu, MyAdminPageClassA, to the setRootMenuPageBySlug() method. $this->setRootMenuPageBySlug( 'MyAdminPageClassA' ); Another option is to use the set_up_{class name} action hook. The callback method receives the admin page class object and you can access the framework methods to add sub-menu pages. class ThirdPartyScript { public function __construct() { add_action( 'set_up_' . 'MyAdminPageClassA', array( $this, 'replyToAddSubMenuPages' ) ); } public function replyToAddSubMenuPages( $oAdminPage ) { $oAdminPage->addSubMenuPage( array( 'page_slug' => 'my_admin_page_b', 'title' => __( 'Example', 'your-text-domain' ), 'order' => 20, ) ); } } new ThirdPartyScript; See an example.

More plugins by miunosoft

Sign In / Register

You need to sign in or register to use this feature.