Jake Vanderwerf
2026-01-01 07282da9671de8fb2601e9e641decb2655439ad8
inc/managers/SEO/SchemaOutputManager.php
@@ -50,6 +50,69 @@
      // Output our schema
      add_action('wp_head', [$this, 'outputSchema'], 1);
      add_filter('the_seo_framework_sitemap_exclude_ids', [$this, 'excludeHiddenSingles'], 10, 1);
   }
   /**
    * Exclude posts from sitemap based on hide_single and is_timeline flags
    *
    * @param array $ids Array of post IDs to exclude
    * @return array Modified array with hidden posts added
    */
   public function excludeHiddenSingles(array $ids): array
   {
      $hiddenTypes = [];
      $timelineTypes = [];
      // Find post types with hide_single or is_timeline flags
      foreach (JVB_CONTENT as $slug => $config) {
         $postType = BASE . $slug;
         if (!empty($config['hide_single'])) {
            $hiddenTypes[] = $postType;
         }
         if (!empty($config['is_timeline'])) {
            $timelineTypes[] = $postType;
         }
      }
      $hiddenIds = [];
      // Get all posts from hide_single types
      if (!empty($hiddenTypes)) {
         $hiddenIds = $this->cache->remember(
            'hidden_single_posts',
            function() use ($hiddenTypes) {
               return get_posts([
                  'post_type' => $hiddenTypes,
                  'posts_per_page' => -1,
                  'fields' => 'ids',
                  'post_status' => 'publish',
               ]);
            }
         );
      }
      // Get child posts from timeline types
      if (!empty($timelineTypes)) {
         $timelineChildIds = $this->cache->remember(
            'timeline_child_posts',
            function() use ($timelineTypes) {
               return get_posts([
                  'post_type' => $timelineTypes,
                  'posts_per_page' => -1,
                  'fields' => 'ids',
                  'post_status' => 'publish',
                  'post_parent__not_in' => [0], // Only get posts with a parent
               ]);
            }
         );
         $hiddenIds = array_merge($hiddenIds, $timelineChildIds);
      }
      return array_merge($ids, $hiddenIds);
   }
   /**