WordPress Plugin Directory or upload a plugin in .zip format by clicking the button at the top of this page.' ),
__( 'https://wordpress.org/plugins/' )
);
?>
' . __( 'You are using a development version of WordPress. These feature plugins are also under development. Learn more.' ) . '
',
'https://make.wordpress.org/core/handbook/about/release-cycle/features-as-plugins/'
);
break;
}
?>
\n";
foreach ( (array) $api->sections as $section_name => $content ) {
if ( 'reviews' === $section_name && ( empty( $api->ratings ) || 0 === array_sum( (array) $api->ratings ) ) ) {
continue;
}
if ( isset( $plugins_section_titles[ $section_name ] ) ) {
$title = $plugins_section_titles[ $section_name ];
} else {
$title = ucwords( str_replace( '_', ' ', $section_name ) );
}
$class = ( $section_name === $section ) ? ' class="current"' : '';
$href = add_query_arg(
array(
'tab' => $tab,
'section' => $section_name,
)
);
$href = esc_url( $href );
$san_section = esc_attr( $section_name );
echo "\t
$title\n";
}
echo "
\n";
?>
version ) ) { ?>
- version; ?>
author ) ) { ?>
- author, '_blank' ); ?>
last_updated ) ) { ?>
-
last_updated ) ) );
?>
requires ) ) { ?>
-
requires );
?>
tested ) ) { ?>
- tested; ?>
requires_php ) ) { ?>
-
requires_php );
?>
active_installs ) ) { ?>
-
active_installs >= 1000000 ) {
$active_installs_millions = floor( $api->active_installs / 1000000 );
printf(
/* translators: %s: Number of millions. */
_nx( '%s+ Million', '%s+ Million', $active_installs_millions, 'Active plugin installations' ),
number_format_i18n( $active_installs_millions )
);
} elseif ( $api->active_installs < 10 ) {
_ex( 'Less Than 10', 'Active plugin installations' );
} else {
echo number_format_i18n( $api->active_installs ) . '+';
}
?>
slug ) && empty( $api->external ) ) { ?>
homepage ) ) { ?>
donate_link ) && empty( $api->contributors ) ) { ?>
rating ) ) { ?>
$api->rating,
'type' => 'percent',
'number' => $api->num_ratings,
)
);
?>
num_ratings ),
number_format_i18n( $api->num_ratings )
);
?>
ratings ) && array_sum( (array) $api->ratings ) > 0 ) {
?>
ratings as $key => $ratecount ) {
// Avoid div-by-zero.
$_rating = $api->num_ratings ? ( $ratecount / $api->num_ratings ) : 0;
$aria_label = esc_attr(
sprintf(
/* translators: 1: Number of stars (used to determine singular/plural), 2: Number of reviews. */
_n(
'Reviews with %1$d star: %2$s. Opens in a new tab.',
'Reviews with %1$d stars: %2$s. Opens in a new tab.',
$key
),
$key,
number_format_i18n( $ratecount )
)
);
?>
%s',
"https://wordpress.org/support/plugin/{$api->slug}/reviews/?filter={$key}",
$aria_label,
/* translators: %s: Number of stars. */
sprintf( _n( '%d star', '%d stars', $key ), $key )
);
?>
contributors ) ) {
?>
contributors as $contrib_username => $contrib_details ) {
$contrib_name = $contrib_details['display_name'];
if ( ! $contrib_name ) {
$contrib_name = $contrib_username;
}
$contrib_name = esc_html( $contrib_name );
$contrib_profile = esc_url( $contrib_details['profile'] );
$contrib_avatar = esc_url( add_query_arg( 's', '36', $contrib_details['avatar'] ) );
echo "- {$contrib_name}
";
}
?>
donate_link ) ) { ?>
requires_php ) ? $api->requires_php : null;
$requires_wp = isset( $api->requires ) ? $api->requires : null;
$compatible_php = is_php_version_compatible( $requires_php );
$compatible_wp = is_wp_version_compatible( $requires_wp );
$tested_wp = ( empty( $api->tested ) || version_compare( get_bloginfo( 'version' ), $api->tested, '<=' ) );
if ( ! $compatible_php ) {
echo '
';
_e( 'Error: This plugin requires a newer version of PHP.' );
if ( current_user_can( 'update_php' ) ) {
printf(
/* translators: %s: URL to Update PHP page. */
' ' . __( 'Click here to learn more about updating PHP.' ),
esc_url( wp_get_update_php_url() )
);
wp_update_php_annotation( '
', '' );
} else {
echo '
';
}
echo '
';
}
if ( ! $tested_wp ) {
echo '
';
_e( 'Warning: This plugin has not been tested with your current version of WordPress.' );
echo '
';
} elseif ( ! $compatible_wp ) {
echo '
';
_e( 'Error: This plugin requires a newer version of WordPress.' );
if ( current_user_can( 'update_core' ) ) {
printf(
/* translators: %s: URL to WordPress Updates screen. */
' ' . __( 'Click here to update WordPress.' ),
self_admin_url( 'update-core.php' )
);
}
echo '
';
}
foreach ( (array) $api->sections as $section_name => $content ) {
$content = links_add_base_url( $content, 'https://wordpress.org/plugins/' . $api->slug . '/' );
$content = links_add_target( $content, '_blank' );
$san_section = esc_attr( $section_name );
$display = ( $section_name === $section ) ? 'block' : 'none';
echo "\t
\n";
echo $content;
echo "\t
\n";
}
echo "
\n";
echo "
\n";
echo "