ProShell v2.0
Dashboard
Server Info
Server: 158.106.128.192
PHP: 8.2.33
home
planet5
public_html
bansibaba.com
wp-includes
2026-09-12 09:44:07
Editing: premium-orphaned-post-query.php
Cancel
Save Changes
<?php /** * WPSEO Premium plugin file. * * @package WPSEO\Premium\Classes */ use Yoast\WP\SEO\Repositories\Indexable_Repository; /** * Represents the orphaned post query methods. */ class WPSEO_Premium_Orphaned_Post_Query { /** * Returns the total number of orphaned items for the given post types. * * @param array $post_types The post types to get the counts for. * * @return int[] The counts for all post types. */ public static function get_counts( array $post_types ) { global $wpdb; $post_type_counts = array_fill_keys( $post_types, 0 ); $subquery = self::get_orphaned_content_query(); $results = $wpdb->get_results( $wpdb->prepare( "SELECT COUNT( ID ) as total_orphaned, post_type FROM {$wpdb->posts} WHERE ID IN ( " . $subquery . " ) AND post_status = 'publish' AND post_type IN ( " . implode( ',', array_fill( 0, count( $post_types ), '%s' ) ) . ' ) GROUP BY post_type', $post_types ) ); foreach ( $results as $result ) { $post_type_counts[ $result->post_type ] = (int) $result->total_orphaned; } return $post_type_counts; } /** * Returns a query to retrieve the object ids from the records with an incoming link count of 0. * * @return string Query for get all objects with an incoming link count of 0 from the DB. */ public static function get_orphaned_content_query() { static $query; if ( $query === null ) { $repository = YoastSEO()->classes->get( Indexable_Repository::class ); $query = $repository->query() ->select( 'object_id' ) ->where( 'object_type', 'post' ) ->where_any_is( [ [ 'incoming_link_count' => 0 ], [ 'incoming_link_count' => null ], ] ); $frontpage_id = self::get_frontpage_id(); if ( $frontpage_id ) { $query = $query->where_not_equal( 'object_id', $frontpage_id ); } $query = sprintf( $query->get_sql(), '\'post\'', 0, $frontpage_id ); } return $query; } /** * Returns all the object ids from the records with an incoming link count of 0. * * @return array Array with the object ids. */ public static function get_orphaned_object_ids() { $repository = YoastSEO()->classes->get( Indexable_Repository::class ); $results = $repository->query() ->select( 'object_id' ) ->where( 'object_type', 'post' ) ->where( 'incoming_link_count', 0 ) ->find_array(); $object_ids = wp_list_pluck( $results, 'object_id' ); $object_ids = self::remove_frontpage_id( $object_ids ); return $object_ids; } /** * Removes the frontpage id from orphaned id's when the frontpage is a static page. * * @param array $object_ids The orphaned object ids. * * @return array The orphaned object ids, without frontpage id. */ protected static function remove_frontpage_id( $object_ids ) { // When the frontpage is a static page, remove it from the object ids. if ( get_option( 'show_on_front' ) !== 'page' ) { return $object_ids; } $frontpage_id = get_option( 'page_on_front' ); // If the frontpage ID exists in the list, remove it. $object_id_key = array_search( $frontpage_id, $object_ids, true ); if ( $object_id_key !== false ) { unset( $object_ids[ $object_id_key ] ); } return $object_ids; } /** * Retrieves the frontpage id when set, otherwise null. * * @return int|null The frontpage id when set. */ protected static function get_frontpage_id() { if ( get_option( 'show_on_front' ) !== 'page' ) { return null; } $page_on_front = get_option( 'page_on_front', null ); if ( empty( $page_on_front ) ) { return null; } return (int) $page_on_front; } }
Upload Files
Cancel
Upload
Create New
Cancel
Create
Change Permissions
Cancel
Save
Change Date
Cancel
Save
Rename Item
Cancel
Save
Confirm Delete
Are you sure you want to delete the selected items?
Cancel
Delete