Index: wordpress.org/public_html/wp-content/plugins/plugin-directory/class-plugin-directory.php
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- wordpress.org/public_html/wp-content/plugins/plugin-directory/class-plugin-directory.php (revision a2405c5d826e74b9ba5350c3d2d7506c132c476a)
+++ wordpress.org/public_html/wp-content/plugins/plugin-directory/class-plugin-directory.php (revision )
@@ -43,6 +43,7 @@
add_filter( 'single_term_title', array( $this, 'filter_single_term_title' ) );
add_filter( 'the_content', array( $this, 'filter_rel_nofollow' ) );
add_action( 'wp_head', array( Template::class, 'json_ld_schema' ), 1 );
+ add_action( 'wp_head', array( Template::class, 'output_meta' ), 1 );
// Cron tasks.
new Jobs\Manager();
@@ -298,7 +299,7 @@
) );
register_post_status( 'disabled', array(
'label' => _x( 'Disabled', 'plugin status', 'wporg-plugins' ),
- 'public' => false,
+ 'public' => true,
'show_in_admin_status_list' => current_user_can( 'plugin_disable' ),
'label_count' => _n_noop( 'Disabled (%s)', 'Disabled (%s)', 'wporg-plugins' ),
) );
@@ -786,6 +787,12 @@
}, 10, 2 );
}
+ // Allow anyone to view a disabled plugin directly from its page. It won't show in search results or lists.
+ if ( !empty( $wp_query->query_vars['name'] ) ) {
+ $wp_query->query_vars['post_status'][] = 'disabled';
+ $wp_query->query_vars['post_status'] = array_unique( $wp_query->query_vars['post_status'] );
+ }
+
// By default, all archives are sorted by active installs
if ( $wp_query->is_archive() && empty( $wp_query->query_vars['orderby'] ) ) {
$wp_query->query_vars['orderby'] = 'meta_value_num';
Index: wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/template-parts/plugin-single.php
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/template-parts/plugin-single.php (revision a2405c5d826e74b9ba5350c3d2d7506c132c476a)
+++ wordpress.org/public_html/wp-content/themes/pub/wporg-plugins/template-parts/plugin-single.php (revision )
@@ -95,7 +95,9 @@
+
+
', '' ); ?>
Index: wordpress.org/public_html/wp-content/plugins/plugin-directory/class-template.php
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
--- wordpress.org/public_html/wp-content/plugins/plugin-directory/class-template.php (revision a2405c5d826e74b9ba5350c3d2d7506c132c476a)
+++ wordpress.org/public_html/wp-content/plugins/plugin-directory/class-template.php (revision )
@@ -45,16 +45,24 @@
endif;
// Schema for plugin pages.
- if ( is_singular( 'plugin' ) ) :
- $plugin = get_queried_object();
+ if ( is_singular( 'plugin' ) && get_post_status( get_queried_object_id() ) !== 'disabled' ) {
+ self::plugin_json_jd_schema( get_queried_object() );
+ }
+ }
- $rating = get_post_meta( $plugin->ID, 'rating', true ) ?: 0;
- $ratings = get_post_meta( $plugin->ID, 'ratings', true ) ?: [];
- $num_ratings = array_sum( $ratings );
+ /**
+ * Prints JSON LD schema for a specific plugin
+ *
+ * @param \WP_Post $plugin Plugin to output JSON LD Schema for.
+ */
+ protected static function plugin_json_jd_schema( $plugin ) {
+ $rating = get_post_meta( $plugin->ID, 'rating', true ) ?: 0;
+ $ratings = get_post_meta( $plugin->ID, 'ratings', true ) ?: [];
+ $num_ratings = array_sum( $ratings );
- echo PHP_EOL;
- ?>
-
- ';
+ }
+
+ echo implode( PHP_EOL, $metas );
}
/**