1 | | This could be something as simple as the following. |
2 | | |
3 | | |
4 | | {{{ |
5 | | add_filter( |
6 | | 'plugin_action_links', |
7 | | function ( $actions, $plugin_file, $plugin_data ) { |
8 | | $compatible_php = ( empty( $plugin_data['Requires PHP'] ) || version_compare( substr( phpversion(), 0, strlen( $plugin_data['Requires PHP'] ) ), $plugin_data['Requires PHP'], '>=' ) ); |
9 | | if ( ! $compatible_php ) { |
10 | | unset( $actions['activate'] ); |
11 | | } |
12 | | return $actions; |
13 | | }, |
14 | | 10, |
15 | | 3 |
16 | | ); |
17 | | }}} |
18 | | |
19 | | This needs an extra plugin header {{{Requires PHP}}} and if no header is present will allow activation. This is only for the plugins.php page. |
20 | | |
21 | | I think it's going to be much more difficult to stop activation from an uploaded plugin via the upload panel. |
22 | | |
23 | | A more inclusive solution would likely require a filter hook into `wp-admin/includes/plugin.php` `validate_plugin()` that passes the plugin's headers. |
24 | | |
25 | | Just brain dumping. |