ErrorException (E_NOTICE)
Undefined index: url ErrorException thrown with message "Undefined index: url" Stacktrace: #22 ErrorException in /wordpress/plugins/wordpress-seo/17.7.1/src/builders/indexable-social-image-trait.php:108 #21 Illuminate\Foundation\Bootstrap\HandleExceptions:handleError in /wordpress/plugins/wordpress-seo/17.7.1/src/builders/indexable-social-image-trait.php:108 #20 Yoast\WP\SEO\Builders\Indexable_Post_Builder:set_open_graph_image_meta_data in /wordpress/plugins/wordpress-seo/17.7.1/src/builders/indexable-social-image-trait.php:72 #19 Yoast\WP\SEO\Builders\Indexable_Post_Builder:set_alternative_image in /wordpress/plugins/wordpress-seo/17.7.1/src/builders/indexable-social-image-trait.php:141 #18 Yoast\WP\SEO\Builders\Indexable_Post_Builder:handle_social_images in /wordpress/plugins/wordpress-seo/17.7.1/src/builders/indexable-post-builder.php:140 #17 Yoast\WP\SEO\Builders\Indexable_Post_Builder:build in /wordpress/plugins/wordpress-seo/17.7.1/src/builders/indexable-builder.php:321 #16 Yoast\WP\SEO\Builders\Indexable_Builder:build in /wordpress/plugins/wordpress-seo/17.7.1/src/repositories/indexable-repository.php:506 #15 Yoast\WP\SEO\Repositories\Indexable_Repository:upgrade_indexable in /wordpress/plugins/wordpress-seo/17.7.1/src/repositories/indexable-repository.php:341 #14 Yoast\WP\SEO\Repositories\Indexable_Repository:find_by_id_and_type in /wordpress/plugins/wordpress-seo/17.7.1/src/repositories/indexable-repository.php:117 #13 Yoast\WP\SEO\Repositories\Indexable_Repository:for_current_page in /wordpress/plugins/wordpress-seo/17.7.1/src/memoizers/meta-tags-context-memoizer.php:96 #12 Yoast\WP\SEO\Memoizers\Meta_Tags_Context_Memoizer:for_current_page in /wordpress/plugins/wordpress-seo/17.7.1/src/integrations/front-end/wp-robots-integration.php:87 #11 Yoast\WP\SEO\Integrations\Front_End\WP_Robots_Integration:get_robots_value in /wordpress/plugins/wordpress-seo/17.7.1/src/integrations/front-end/wp-robots-integration.php:73 #10 Yoast\WP\SEO\Integrations\Front_End\WP_Robots_Integration:add_robots in /wordpress/core/5.8.2/wp-includes/class-wp-hook.php:303 #9 WP_Hook:apply_filters in /wordpress/core/5.8.2/wp-includes/plugin.php:189 #8 apply_filters in /wordpress/core/5.8.2/wp-includes/robots-template.php:32 #7 wp_robots in /wordpress/core/5.8.2/wp-includes/class-wp-hook.php:303 #6 WP_Hook:apply_filters in /wordpress/core/5.8.2/wp-includes/class-wp-hook.php:327 #5 WP_Hook:do_action in /wordpress/core/5.8.2/wp-includes/plugin.php:470 #4 do_action in /wordpress/core/5.8.2/wp-includes/general-template.php:3015 #3 wp_head in /srv/htdocs/wp-content/themes/aul-theme/index.php:7 #2 include in /wordpress/core/5.8.2/wp-includes/template-loader.php:106 #1 require_once in /wordpress/core/5.8.2/wp-blog-header.php:19 #0 require in /wordpress/core/5.8.2/index.php:17
22
ErrorException
/wordpress/plugins/wordpress-seo/17.7.1/src/builders/indexable-social-image-trait.php108
21
Illuminate\Foundation\Bootstrap\HandleExceptions handleError
/wordpress/plugins/wordpress-seo/17.7.1/src/builders/indexable-social-image-trait.php108
20
Yoast\WP\SEO\Builders\Indexable_Post_Builder set_open_graph_image_meta_data
/wordpress/plugins/wordpress-seo/17.7.1/src/builders/indexable-social-image-trait.php72
19
Yoast\WP\SEO\Builders\Indexable_Post_Builder set_alternative_image
/wordpress/plugins/wordpress-seo/17.7.1/src/builders/indexable-social-image-trait.php141
18
Yoast\WP\SEO\Builders\Indexable_Post_Builder handle_social_images
/wordpress/plugins/wordpress-seo/17.7.1/src/builders/indexable-post-builder.php140
17
Yoast\WP\SEO\Builders\Indexable_Post_Builder build
/wordpress/plugins/wordpress-seo/17.7.1/src/builders/indexable-builder.php321
16
Yoast\WP\SEO\Builders\Indexable_Builder build
/wordpress/plugins/wordpress-seo/17.7.1/src/repositories/indexable-repository.php506
15
Yoast\WP\SEO\Repositories\Indexable_Repository upgrade_indexable
/wordpress/plugins/wordpress-seo/17.7.1/src/repositories/indexable-repository.php341
14
Yoast\WP\SEO\Repositories\Indexable_Repository find_by_id_and_type
/wordpress/plugins/wordpress-seo/17.7.1/src/repositories/indexable-repository.php117
13
Yoast\WP\SEO\Repositories\Indexable_Repository for_current_page
/wordpress/plugins/wordpress-seo/17.7.1/src/memoizers/meta-tags-context-memoizer.php96
12
Yoast\WP\SEO\Memoizers\Meta_Tags_Context_Memoizer for_current_page
/wordpress/plugins/wordpress-seo/17.7.1/src/integrations/front-end/wp-robots-integration.php87
11
Yoast\WP\SEO\Integrations\Front_End\WP_Robots_Integration get_robots_value
/wordpress/plugins/wordpress-seo/17.7.1/src/integrations/front-end/wp-robots-integration.php73
10
Yoast\WP\SEO\Integrations\Front_End\WP_Robots_Integration add_robots
/wordpress/core/5.8.2/wp-includes/class-wp-hook.php303
9
WP_Hook apply_filters
/wordpress/core/5.8.2/wp-includes/plugin.php189
8
apply_filters
/wordpress/core/5.8.2/wp-includes/robots-template.php32
7
wp_robots
/wordpress/core/5.8.2/wp-includes/class-wp-hook.php303
6
WP_Hook apply_filters
/wordpress/core/5.8.2/wp-includes/class-wp-hook.php327
5
WP_Hook do_action
/wordpress/core/5.8.2/wp-includes/plugin.php470
4
do_action
/wordpress/core/5.8.2/wp-includes/general-template.php3015
3
wp_head
/index.php7
2
include
/wordpress/core/5.8.2/wp-includes/template-loader.php106
1
require_once
/wordpress/core/5.8.2/wp-blog-header.php19
0
require
/wordpress/core/5.8.2/index.php17
/wordpress/plugins/wordpress-seo/17.7.1/src/builders/indexable-social-image-trait.php
                $indexable->twitter_image        = $alternative_image['image'];
                $indexable->twitter_image_source = $alternative_image['source'];
            }
        }
    }
 
    /**
     * Sets the Open Graph image meta data for an og image
     *
     * @param Indexable $indexable The indexable.
     */
    protected function set_open_graph_image_meta_data( Indexable $indexable ) {
        if ( ! $indexable->open_graph_image_id ) {
            return;
        }
 
        $image = $this->open_graph_image->get_image_by_id( $indexable->open_graph_image_id );
 
        if ( ! empty( $image ) ) {
            $indexable->open_graph_image      = $image['url'];
            $indexable->open_graph_image_meta = WPSEO_Utils::format_json_encode( $image );
        }
    }
 
    /**
     * Handles the social images.
     *
     * @param Indexable $indexable The indexable to handle.
     */
    protected function handle_social_images( Indexable $indexable ) {
        // When the image or image id is set.
        if ( $indexable->open_graph_image || $indexable->open_graph_image_id ) {
            $indexable->open_graph_image_source = 'set-by-user';
 
            $this->set_open_graph_image_meta_data( $indexable );
        }
 
        if ( $indexable->twitter_image || $indexable->twitter_image_id ) {
            $indexable->twitter_image_source = 'set-by-user';
        }
Arguments
  1. "Undefined index: url"
    
/wordpress/plugins/wordpress-seo/17.7.1/src/builders/indexable-social-image-trait.php
                $indexable->twitter_image        = $alternative_image['image'];
                $indexable->twitter_image_source = $alternative_image['source'];
            }
        }
    }
 
    /**
     * Sets the Open Graph image meta data for an og image
     *
     * @param Indexable $indexable The indexable.
     */
    protected function set_open_graph_image_meta_data( Indexable $indexable ) {
        if ( ! $indexable->open_graph_image_id ) {
            return;
        }
 
        $image = $this->open_graph_image->get_image_by_id( $indexable->open_graph_image_id );
 
        if ( ! empty( $image ) ) {
            $indexable->open_graph_image      = $image['url'];
            $indexable->open_graph_image_meta = WPSEO_Utils::format_json_encode( $image );
        }
    }
 
    /**
     * Handles the social images.
     *
     * @param Indexable $indexable The indexable to handle.
     */
    protected function handle_social_images( Indexable $indexable ) {
        // When the image or image id is set.
        if ( $indexable->open_graph_image || $indexable->open_graph_image_id ) {
            $indexable->open_graph_image_source = 'set-by-user';
 
            $this->set_open_graph_image_meta_data( $indexable );
        }
 
        if ( $indexable->twitter_image || $indexable->twitter_image_id ) {
            $indexable->twitter_image_source = 'set-by-user';
        }
Arguments
  1. 8
    
  2. "Undefined index: url"
    
  3. "/wordpress/plugins/wordpress-seo/17.7.1/src/builders/indexable-social-image-trait.php"
    
  4. 108
    
  5. array:2 [
      "indexable" => Yoast\WP\SEO\Models\Indexable {#5047}
      "image" => array:8 [
        "path" => "/srv/htdocs/wp-content/uploads/2020/11/mls-abortions-recovery-1024x512.png"
        "width" => 1024
        "height" => 512
        "size" => "large"
        "id" => 43277
        "alt" => ""
        "pixels" => 524288
        "type" => "image/png"
      ]
    ]
    
/wordpress/plugins/wordpress-seo/17.7.1/src/builders/indexable-social-image-trait.php
        Twitter_Image_Helper $twitter_image
    ) {
        $this->image            = $image;
        $this->open_graph_image = $open_graph_image;
        $this->twitter_image    = $twitter_image;
    }
 
    /**
     * Sets the alternative on an indexable.
     *
     * @param array     $alternative_image The alternative image to set.
     * @param Indexable $indexable         The indexable to set image for.
     */
    protected function set_alternative_image( array $alternative_image, Indexable $indexable ) {
        if ( ! empty( $alternative_image['image_id'] ) ) {
            if ( ! $indexable->open_graph_image_source && ! $indexable->open_graph_image_id ) {
                $indexable->open_graph_image_id     = $alternative_image['image_id'];
                $indexable->open_graph_image_source = $alternative_image['source'];
 
                $this->set_open_graph_image_meta_data( $indexable );
            }
 
            if ( ! $indexable->twitter_image && ! $indexable->twitter_image_id ) {
                $indexable->twitter_image        = $this->twitter_image->get_by_id( $alternative_image['image_id'] );
                $indexable->twitter_image_id     = $alternative_image['image_id'];
                $indexable->twitter_image_source = $alternative_image['source'];
            }
        }
 
        if ( ! empty( $alternative_image['image'] ) ) {
            if ( ! $indexable->open_graph_image_source && ! $indexable->open_graph_image_id ) {
                $indexable->open_graph_image        = $alternative_image['image'];
                $indexable->open_graph_image_source = $alternative_image['source'];
            }
 
            if ( ! $indexable->twitter_image && ! $indexable->twitter_image_id ) {
                $indexable->twitter_image        = $alternative_image['image'];
                $indexable->twitter_image_source = $alternative_image['source'];
            }
        }
Arguments
  1. Yoast\WP\SEO\Models\Indexable {#5047}
    
/wordpress/plugins/wordpress-seo/17.7.1/src/builders/indexable-social-image-trait.php
 
            $this->set_open_graph_image_meta_data( $indexable );
        }
 
        if ( $indexable->twitter_image || $indexable->twitter_image_id ) {
            $indexable->twitter_image_source = 'set-by-user';
        }
 
        if ( $indexable->twitter_image_id ) {
            $indexable->twitter_image = $this->twitter_image->get_by_id( $indexable->twitter_image_id );
        }
 
        // When image sources are set already.
        if ( $indexable->open_graph_image_source && $indexable->twitter_image_source ) {
            return;
        }
 
        $alternative_image = $this->find_alternative_image( $indexable );
        if ( ! empty( $alternative_image ) ) {
            $this->set_alternative_image( $alternative_image, $indexable );
        }
    }
 
    /**
     * Resets the social images.
     *
     * @param Indexable $indexable The indexable to set images for.
     */
    protected function reset_social_images( Indexable $indexable ) {
        $indexable->open_graph_image        = null;
        $indexable->open_graph_image_id     = null;
        $indexable->open_graph_image_source = null;
        $indexable->open_graph_image_meta   = null;
 
        $indexable->twitter_image        = null;
        $indexable->twitter_image_id     = null;
        $indexable->twitter_image_source = null;
    }
}
 
Arguments
  1. array:2 [
      "image_id" => 43277
      "source" => "featured-image"
    ]
    
  2. Yoast\WP\SEO\Models\Indexable {#5047}
    
/wordpress/plugins/wordpress-seo/17.7.1/src/builders/indexable-post-builder.php
 
        // Set additional meta-robots values.
        $indexable->is_robots_nofollow = ( $this->get_meta_value( $post_id, 'meta-robots-nofollow' ) === '1' );
        $noindex_advanced              = $this->get_meta_value( $post_id, 'meta-robots-adv' );
        $meta_robots                   = \explode( ',', $noindex_advanced );
        foreach ( $this->get_robots_options() as $meta_robots_option ) {
            $indexable->{'is_robots_' . $meta_robots_option} = \in_array( $meta_robots_option, $meta_robots, true ) ? 1 : null;
        }
 
        $this->reset_social_images( $indexable );
 
        foreach ( $this->get_indexable_lookup() as $meta_key => $indexable_key ) {
            $indexable->{$indexable_key} = $this->get_meta_value( $post_id, $meta_key );
        }
 
        if ( empty( $indexable->breadcrumb_title ) ) {
            $indexable->breadcrumb_title = \wp_strip_all_tags( \get_the_title( $post_id ), true );
        }
 
        $this->handle_social_images( $indexable );
 
        $indexable->author_id   = $post->post_author;
        $indexable->post_parent = $post->post_parent;
 
        $indexable->number_of_pages  = $this->get_number_of_pages_for_post( $post );
        $indexable->post_status      = $post->post_status;
        $indexable->is_protected     = $post->post_password !== '';
        $indexable->is_public        = $this->is_public( $indexable );
        $indexable->has_public_posts = $this->has_public_posts( $indexable );
        $indexable->blog_id          = \get_current_blog_id();
 
        $indexable->schema_page_type    = $this->get_meta_value( $post_id, 'schema_page_type' );
        $indexable->schema_article_type = $this->get_meta_value( $post_id, 'schema_article_type' );
 
        $indexable->object_last_modified = $post->post_modified_gmt;
        $indexable->object_published_at  = $post->post_date_gmt;
 
        $indexable->version = $this->version;
 
        return $indexable;
Arguments
  1. Yoast\WP\SEO\Models\Indexable {#5047}
    
/wordpress/plugins/wordpress-seo/17.7.1/src/builders/indexable-builder.php
    /**
     * Rebuilds an Indexable from scratch.
     *
     * @param Indexable  $indexable The Indexable to (re)build.
     * @param array|null $defaults  The object type of the Indexable.
     *
     * @return Indexable|false The resulting Indexable.
     */
    public function build( $indexable, $defaults = null ) {
        // Backup the previous Indexable, if there was one.
        $indexable_before = ( $indexable ) ? $this->deep_copy_indexable( $indexable ) : null;
 
        // Make sure we have an Indexable to work with.
        $indexable = $this->ensure_indexable( $indexable, $defaults );
 
        try {
            switch ( $indexable->object_type ) {
 
                case 'post':
                    $indexable = $this->post_builder->build( $indexable->object_id, $indexable );
                    if ( ! $indexable ) {
                        // Indexable for this Post was not built for a reason; e.g. if its post type is excluded.
                        return $indexable;
                    }
 
                    // Always rebuild the primary term.
                    $this->primary_term_builder->build( $indexable->object_id );
 
                    // Always rebuild the hierarchy; this needs the primary term to run correctly.
                    $this->hierarchy_builder->build( $indexable );
 
                    // Rebuild the author indexable only when necessary.
                    $author_indexable = $this->indexable_repository->find_by_id_and_type(
                        $indexable->author_id,
                        'user',
                        false
                    );
                    if ( ! $author_indexable || $this->version_manager->indexable_needs_upgrade( $author_indexable ) ) {
                        $author_defaults = [
                            'object_type' => 'user',
Arguments
  1. 43261
    
  2. Yoast\WP\SEO\Models\Indexable {#5047}
    
/wordpress/plugins/wordpress-seo/17.7.1/src/repositories/indexable-repository.php
     * @return bool|Indexable The indexable.
     */
    public function ensure_permalink( $indexable ) {
        // @phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- self::class is safe.
        // @phpcs:ignore Squiz.PHP.CommentedOutCode.Found
        // _deprecated_function( __METHOD__, 'WPSEO 17.3', self::class . '::upgrade_indexable' );
 
        return $this->upgrade_indexable( $indexable );
    }
 
    /**
     * Checks if an Indexable is outdated, and rebuilds it when necessary.
     *
     * @param Indexable $indexable The indexable.
     *
     * @return Indexable The indexable.
     */
    public function upgrade_indexable( $indexable ) {
        if ( $this->version_manager->indexable_needs_upgrade( $indexable ) ) {
            $indexable = $this->builder->build( $indexable );
        }
        return $indexable;
    }
 
    /**
     * Resets the permalinks of the passed object type and subtype.
     *
     * @param string|null $type    The type of the indexable. Can be null.
     * @param string|null $subtype The subtype. Can be null.
     *
     * @return int|bool The number of permalinks changed if the query was succesful. False otherwise.
     */
    public function reset_permalink( $type = null, $subtype = null ) {
        $query = $this->query()->set(
            [
                'permalink'      => null,
                'permalink_hash' => null,
                'version'        => 0,
            ]
        );
Arguments
  1. Yoast\WP\SEO\Models\Indexable {#5047}
    
/wordpress/plugins/wordpress-seo/17.7.1/src/repositories/indexable-repository.php
    /**
     * Retrieves an indexable by its ID and type.
     *
     * @param int    $object_id   The indexable object ID.
     * @param string $object_type The indexable object type.
     * @param bool   $auto_create Optional. Create the indexable if it does not exist.
     *
     * @return bool|Indexable Instance of indexable.
     */
    public function find_by_id_and_type( $object_id, $object_type, $auto_create = true ) {
        $indexable = $this->query()
            ->where( 'object_id', $object_id )
            ->where( 'object_type', $object_type )
            ->find_one();
 
        if ( $auto_create && ! $indexable ) {
            $indexable = $this->builder->build_for_id_and_type( $object_id, $object_type );
        }
        else {
            $indexable = $this->upgrade_indexable( $indexable );
        }
 
        return $indexable;
    }
 
    /**
     * Retrieves multiple indexables at once by their id's and type.
     *
     * @param int[]  $object_ids  The array of indexable object id's.
     * @param string $object_type The indexable object type.
     * @param bool   $auto_create Optional. Create the indexable if it does not exist.
     *
     * @return Indexable[] An array of indexables.
     */
    public function find_by_multiple_ids_and_type( $object_ids, $object_type, $auto_create = true ) {
        if ( empty( $object_ids ) ) {
            return [];
        }
 
        /**
Arguments
  1. Yoast\WP\SEO\Models\Indexable {#5047}
    
/wordpress/plugins/wordpress-seo/17.7.1/src/repositories/indexable-repository.php
     *
     * @return ORM
     */
    public function query() {
        return Model::of_type( 'Indexable' );
    }
 
    /**
     * Attempts to find the indexable for the current WordPress page. Returns false if no indexable could be found.
     * This may be the result of the indexable not existing or of being unable to determine what type of page the
     * current page is.
     *
     * @return bool|Indexable The indexable, false if none could be found.
     */
    public function for_current_page() {
        $indexable = false;
 
        switch ( true ) {
            case $this->current_page->is_simple_page():
                $indexable = $this->find_by_id_and_type( $this->current_page->get_simple_page_id(), 'post' );
                break;
            case $this->current_page->is_home_static_page():
                $indexable = $this->find_by_id_and_type( $this->current_page->get_front_page_id(), 'post' );
                break;
            case $this->current_page->is_home_posts_page():
                $indexable = $this->find_for_home_page();
                break;
            case $this->current_page->is_term_archive():
                $indexable = $this->find_by_id_and_type( $this->current_page->get_term_id(), 'term' );
                break;
            case $this->current_page->is_date_archive():
                $indexable = $this->find_for_date_archive();
                break;
            case $this->current_page->is_search_result():
                $indexable = $this->find_for_system_page( 'search-result' );
                break;
            case $this->current_page->is_post_type_archive():
                $indexable = $this->find_for_post_type_archive( $this->current_page->get_queried_post_type() );
                break;
            case $this->current_page->is_author_archive():
Arguments
  1. 43261
    
  2. "post"
    
/wordpress/plugins/wordpress-seo/17.7.1/src/memoizers/meta-tags-context-memoizer.php
        $this->context_prototype     = $context_prototype;
        $this->presentation_memoizer = $presentation_memoizer;
    }
 
    /**
     * Gets the meta tags context for the current page.
     * This function is memoized so every call will return the same result.
     *
     * @return Meta_Tags_Context The meta tags context.
     */
    public function for_current_page() {
        if ( ! isset( $this->cache['current_page'] ) ) {
            // First reset the query to ensure we actually have the current page.
            global $wp_query;
 
            $old_wp_query = $wp_query;
            // phpcs:ignore WordPress.WP.DiscouragedFunctions.wp_reset_query_wp_reset_query -- Reason: The recommended function, wp_reset_postdata, doesn't reset wp_query.
            \wp_reset_query();
 
            $indexable = $this->repository->for_current_page();
            $page_type = $this->current_page->get_page_type();
 
            if ( $page_type === 'Fallback' ) {
                // Do not cache the context if it's a fallback page.
                // The likely cause for this is that this function was called before the query was loaded.
                $context = $this->get( $indexable, $page_type );
 
                // Restore the previous query.
                // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited -- Reason: we have to restore the query.
                $GLOBALS['wp_query'] = $old_wp_query;
 
                return $context;
            }
            $this->cache['current_page'] = $this->get( $indexable, $page_type );
 
            // Restore the previous query.
            // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited -- Reason: we have to restore the query.
            $GLOBALS['wp_query'] = $old_wp_query;
        }
 
/wordpress/plugins/wordpress-seo/17.7.1/src/integrations/front-end/wp-robots-integration.php
    public function add_robots( $robots ) {
        if ( ! \is_array( $robots ) ) {
            return $this->get_robots_value();
        }
 
        $merged_robots   = \array_merge( $robots, $this->get_robots_value() );
        $filtered_robots = $this->enforce_robots_congruence( $merged_robots );
        $sorted_robots   = $this->sort_robots( $filtered_robots );
 
        // Filter all falsy-null robot values.
        return \array_filter( $sorted_robots );
    }
 
    /**
     * Retrieves the robots key-value pairs.
     *
     * @return array The robots key-value pairs.
     */
    protected function get_robots_value() {
        $context = $this->context_memoizer->for_current_page();
 
        $robots_presenter               = new Robots_Presenter();
        $robots_presenter->presentation = $context->presentation;
        return $this->format_robots( $robots_presenter->get() );
    }
 
    /**
     * Formats our robots fields, to match the pattern WordPress is using.
     *
     * Our format: `[ 'index' => 'noindex', 'max-image-preview' => 'max-image-preview:large', ... ]`
     * WordPress format: `[ 'noindex' => true, 'max-image-preview' => 'large', ... ]`
     *
     * @param array $robots Our robots value.
     *
     * @return array The formatted robots.
     */
    protected function format_robots( $robots ) {
        foreach ( $robots as $key => $value ) {
            // When the entry represents for example: max-image-preview:large.
            $colon_position = \strpos( $value, ':' );
/wordpress/plugins/wordpress-seo/17.7.1/src/integrations/front-end/wp-robots-integration.php
    public static function get_conditionals() {
        return [
            Front_End_Conditional::class,
            WP_Robots_Conditional::class,
        ];
    }
 
    /**
     * Adds our robots tag value to the WordPress robots tag output.
     *
     * @param array $robots The current robots data.
     *
     * @return array The robots data.
     */
    public function add_robots( $robots ) {
        if ( ! \is_array( $robots ) ) {
            return $this->get_robots_value();
        }
 
        $merged_robots   = \array_merge( $robots, $this->get_robots_value() );
        $filtered_robots = $this->enforce_robots_congruence( $merged_robots );
        $sorted_robots   = $this->sort_robots( $filtered_robots );
 
        // Filter all falsy-null robot values.
        return \array_filter( $sorted_robots );
    }
 
    /**
     * Retrieves the robots key-value pairs.
     *
     * @return array The robots key-value pairs.
     */
    protected function get_robots_value() {
        $context = $this->context_memoizer->for_current_page();
 
        $robots_presenter               = new Robots_Presenter();
        $robots_presenter->presentation = $context->presentation;
        return $this->format_robots( $robots_presenter->get() );
    }
 
/wordpress/core/5.8.2/wp-includes/class-wp-hook.php
 
        $nesting_level = $this->nesting_level++;
 
        $this->iterations[ $nesting_level ] = array_keys( $this->callbacks );
        $num_args                           = count( $args );
 
        do {
            $this->current_priority[ $nesting_level ] = current( $this->iterations[ $nesting_level ] );
            $priority                                 = $this->current_priority[ $nesting_level ];
 
            foreach ( $this->callbacks[ $priority ] as $the_ ) {
                if ( ! $this->doing_action ) {
                    $args[0] = $value;
                }
 
                // Avoid the array_slice() if possible.
                if ( 0 == $the_['accepted_args'] ) {
                    $value = call_user_func( $the_['function'] );
                } elseif ( $the_['accepted_args'] >= $num_args ) {
                    $value = call_user_func_array( $the_['function'], $args );
                } else {
                    $value = call_user_func_array( $the_['function'], array_slice( $args, 0, (int) $the_['accepted_args'] ) );
                }
            }
        } while ( false !== next( $this->iterations[ $nesting_level ] ) );
 
        unset( $this->iterations[ $nesting_level ] );
        unset( $this->current_priority[ $nesting_level ] );
 
        $this->nesting_level--;
 
        return $value;
    }
 
    /**
     * Calls the callback functions that have been added to an action hook.
     *
     * @since 4.7.0
     *
     * @param array $args Parameters to pass to the callback functions.
Arguments
  1. array:1 [
      "max-image-preview" => "large"
    ]
    
/wordpress/core/5.8.2/wp-includes/plugin.php
        $wp_current_filter[] = $hook_name;
        _wp_call_all_hook( $args );
    }
 
    if ( ! isset( $wp_filter[ $hook_name ] ) ) {
        if ( isset( $wp_filter['all'] ) ) {
            array_pop( $wp_current_filter );
        }
 
        return $value;
    }
 
    if ( ! isset( $wp_filter['all'] ) ) {
        $wp_current_filter[] = $hook_name;
    }
 
    // Don't pass the tag name to WP_Hook.
    array_shift( $args );
 
    $filtered = $wp_filter[ $hook_name ]->apply_filters( $value, $args );
 
    array_pop( $wp_current_filter );
 
    return $filtered;
}
 
/**
 * Calls the callback functions that have been added to a filter hook, specifying arguments in an array.
 *
 * @since 3.0.0
 *
 * @see apply_filters() This function is identical, but the arguments passed to the
 *                      functions hooked to `$hook_name` are supplied using an array.
 *
 * @global WP_Hook[] $wp_filter         Stores all of the filters and actions.
 * @global string[]  $wp_current_filter Stores the list of current filters with the current one last.
 *
 * @param string $hook_name The name of the filter hook.
 * @param array  $args      The arguments supplied to the functions hooked to `$hook_name`.
 * @return mixed The filtered value after all hooked functions are applied to it.
Arguments
  1. array:1 [
      "max-image-preview" => "large"
    ]
    
  2. array:1 [
      0 => array:1 [
        "max-image-preview" => "large"
      ]
    ]
    
/wordpress/core/5.8.2/wp-includes/robots-template.php
 * Gathers robots directives to include for the current context, using the
 * {@see 'wp_robots'} filter. The directives are then sanitized, and the
 * robots meta tag is output if there is at least one relevant directive.
 *
 * @since 5.7.0
 * @since 5.7.1 No longer prevents specific directives to occur together.
 */
function wp_robots() {
    /**
     * Filters the directives to be included in the 'robots' meta tag.
     *
     * The meta tag will only be included as necessary.
     *
     * @since 5.7.0
     *
     * @param array $robots Associative array of directives. Every key must be the name of the directive, and the
     *                      corresponding value must either be a string to provide as value for the directive or a
     *                      boolean `true` if it is a boolean directive, i.e. without a value.
     */
    $robots = apply_filters( 'wp_robots', array() );
 
    $robots_strings = array();
    foreach ( $robots as $directive => $value ) {
        if ( is_string( $value ) ) {
            // If a string value, include it as value for the directive.
            $robots_strings[] = "{$directive}:{$value}";
        } elseif ( $value ) {
            // Otherwise, include the directive if it is truthy.
            $robots_strings[] = $directive;
        }
    }
 
    if ( empty( $robots_strings ) ) {
        return;
    }
 
    echo "<meta name='robots' content='" . esc_attr( implode( ', ', $robots_strings ) ) . "' />\n";
}
 
/**
Arguments
  1. "wp_robots"
    
  2. []
    
/wordpress/core/5.8.2/wp-includes/class-wp-hook.php
 
        $nesting_level = $this->nesting_level++;
 
        $this->iterations[ $nesting_level ] = array_keys( $this->callbacks );
        $num_args                           = count( $args );
 
        do {
            $this->current_priority[ $nesting_level ] = current( $this->iterations[ $nesting_level ] );
            $priority                                 = $this->current_priority[ $nesting_level ];
 
            foreach ( $this->callbacks[ $priority ] as $the_ ) {
                if ( ! $this->doing_action ) {
                    $args[0] = $value;
                }
 
                // Avoid the array_slice() if possible.
                if ( 0 == $the_['accepted_args'] ) {
                    $value = call_user_func( $the_['function'] );
                } elseif ( $the_['accepted_args'] >= $num_args ) {
                    $value = call_user_func_array( $the_['function'], $args );
                } else {
                    $value = call_user_func_array( $the_['function'], array_slice( $args, 0, (int) $the_['accepted_args'] ) );
                }
            }
        } while ( false !== next( $this->iterations[ $nesting_level ] ) );
 
        unset( $this->iterations[ $nesting_level ] );
        unset( $this->current_priority[ $nesting_level ] );
 
        $this->nesting_level--;
 
        return $value;
    }
 
    /**
     * Calls the callback functions that have been added to an action hook.
     *
     * @since 4.7.0
     *
     * @param array $args Parameters to pass to the callback functions.
Arguments
  1. ""
    
/wordpress/core/5.8.2/wp-includes/class-wp-hook.php
        } while ( false !== next( $this->iterations[ $nesting_level ] ) );
 
        unset( $this->iterations[ $nesting_level ] );
        unset( $this->current_priority[ $nesting_level ] );
 
        $this->nesting_level--;
 
        return $value;
    }
 
    /**
     * Calls the callback functions that have been added to an action hook.
     *
     * @since 4.7.0
     *
     * @param array $args Parameters to pass to the callback functions.
     */
    public function do_action( $args ) {
        $this->doing_action = true;
        $this->apply_filters( '', $args );
 
        // If there are recursive calls to the current action, we haven't finished it until we get to the last one.
        if ( ! $this->nesting_level ) {
            $this->doing_action = false;
        }
    }
 
    /**
     * Processes the functions hooked into the 'all' hook.
     *
     * @since 4.7.0
     *
     * @param array $args Arguments to pass to the hook callbacks. Passed by reference.
     */
    public function do_all_hook( &$args ) {
        $nesting_level                      = $this->nesting_level++;
        $this->iterations[ $nesting_level ] = array_keys( $this->callbacks );
 
        do {
            $priority = current( $this->iterations[ $nesting_level ] );
Arguments
  1. null
    
  2. array:1 [
      0 => ""
    ]
    
/wordpress/core/5.8.2/wp-includes/plugin.php
    if ( ! isset( $wp_filter[ $hook_name ] ) ) {
        if ( isset( $wp_filter['all'] ) ) {
            array_pop( $wp_current_filter );
        }
 
        return;
    }
 
    if ( ! isset( $wp_filter['all'] ) ) {
        $wp_current_filter[] = $hook_name;
    }
 
    if ( empty( $arg ) ) {
        $arg[] = '';
    } elseif ( is_array( $arg[0] ) && 1 === count( $arg[0] ) && isset( $arg[0][0] ) && is_object( $arg[0][0] ) ) {
        // Backward compatibility for PHP4-style passing of `array( &$this )` as action `$arg`.
        $arg[0] = $arg[0][0];
    }
 
    $wp_filter[ $hook_name ]->do_action( $arg );
 
    array_pop( $wp_current_filter );
}
 
/**
 * Calls the callback functions that have been added to an action hook, specifying arguments in an array.
 *
 * @since 2.1.0
 *
 * @see do_action() This function is identical, but the arguments passed to the
 *                  functions hooked to `$hook_name` are supplied using an array.
 *
 * @global WP_Hook[] $wp_filter         Stores all of the filters and actions.
 * @global int[]     $wp_actions        Stores the number of times each action was triggered.
 * @global string[]  $wp_current_filter Stores the list of current filters with the current one last.
 *
 * @param string $hook_name The name of the action to be executed.
 * @param array  $args      The arguments supplied to the functions hooked to `$hook_name`.
 */
function do_action_ref_array( $hook_name, $args ) {
Arguments
  1. array:1 [
      0 => ""
    ]
    
/wordpress/core/5.8.2/wp-includes/general-template.php
     * @param string $before           The HTML to output before the date.
     * @param string $after            The HTML to output after the date.
     */
    echo apply_filters( 'the_weekday_date', $the_weekday_date, $before, $after );
}
 
/**
 * Fire the wp_head action.
 *
 * See {@see 'wp_head'}.
 *
 * @since 1.2.0
 */
function wp_head() {
    /**
     * Prints scripts or data in the head tag on the front end.
     *
     * @since 1.5.0
     */
    do_action( 'wp_head' );
}
 
/**
 * Fire the wp_footer action.
 *
 * See {@see 'wp_footer'}.
 *
 * @since 1.5.1
 */
function wp_footer() {
    /**
     * Prints scripts or data before the closing body tag on the front end.
     *
     * @since 1.5.1
     */
    do_action( 'wp_footer' );
}
 
/**
 * Fire the wp_body_open action.
Arguments
  1. "wp_head"
    
/srv/htdocs/wp-content/themes/aul-theme/index.php
<!doctype html>
<html <?php language_attributes(); ?>>
  <head>
    <meta charset="utf-8">
    <meta http-equiv="x-ua-compatible" content="ie=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <?php wp_head(); ?>
  </head>
 
  <body <?php body_class(); ?>>
    <?php wp_body_open(); ?>
    <?php do_action('get_header'); ?>
 
    <div id="app">
      <?php echo \Roots\view(\Roots\app('sage.view'), \Roots\app('sage.data'))->render(); ?>
    </div>
 
    <?php do_action('get_footer'); ?>
    <?php wp_footer(); ?>
  </body>
</html>
 
/wordpress/core/5.8.2/wp-includes/template-loader.php
            }
 
            break;
        }
    }
 
    if ( ! $template ) {
        $template = get_index_template();
    }
 
    /**
     * Filters the path of the current template before including it.
     *
     * @since 3.0.0
     *
     * @param string $template The path of the template to include.
     */
    $template = apply_filters( 'template_include', $template );
    if ( $template ) {
        include $template;
    } elseif ( current_user_can( 'switch_themes' ) ) {
        $theme = wp_get_theme();
        if ( $theme->errors() ) {
            wp_die( $theme->errors() );
        }
    }
    return;
}
 
Arguments
  1. "/srv/htdocs/wp-content/themes/aul-theme/index.php"
    
/wordpress/core/5.8.2/wp-blog-header.php
<?php
/**
 * Loads the WordPress environment and template.
 *
 * @package WordPress
 */
 
if ( ! isset( $wp_did_header ) ) {
 
    $wp_did_header = true;
 
    // Load the WordPress library.
    require_once __DIR__ . '/wp-load.php';
 
    // Set up the WordPress query.
    wp();
 
    // Load the theme template.
    require_once ABSPATH . WPINC . '/template-loader.php';
 
}
 
Arguments
  1. "/wordpress/core/5.8.2/wp-includes/template-loader.php"
    
/wordpress/core/5.8.2/index.php
<?php
/**
 * Front to the WordPress application. This file doesn't do anything, but loads
 * wp-blog-header.php which does and tells WordPress to load the theme.
 *
 * @package WordPress
 */
 
/**
 * Tells WordPress to load the WordPress theme and output it.
 *
 * @var bool
 */
define( 'WP_USE_THEMES', true );
 
/** Loads the WordPress Environment and Template */
require __DIR__ . '/wp-blog-header.php';
 
Arguments
  1. "/wordpress/core/5.8.2/wp-blog-header.php"
    

Environment & details:

empty
empty
empty
empty
empty
Key Value
SERVER_SOFTWARE
"nginx"
REQUEST_URI
"/2020/11/19/my-children-are-my-magnum-opus/"
HTTP_X_VALID_CERTIFICATE
"1"
HTTP_ACCEPT_ENCODING
"br,gzip"
HTTP_IF_MODIFIED_SINCE
"Sat, 18 Sep 2021 16:10:23 GMT"
HTTP_ACCEPT_LANGUAGE
"en-US,en;q=0.5"
HTTP_ACCEPT
"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
HTTP_USER_AGENT
"CCBot/2.0 (https://commoncrawl.org/faq/)"
HTTP_X_SUPPORTLOGIN
"yes"
HTTP_X_WPLOGIN
"yes"
HTTP_X_FORWARDED_PROTO
"https"
HTTP_X_FORWARDED_PORT
"443"
HTTP_X_FORWARDED_FOR
"54.80.173.217"
HTTP_HOST
"aul.org"
PRESSABLE_PROXIED_REQUEST
"0"
A8C_PROXIED_REQUEST
"0"
SCRIPT_FILENAME
"/srv/htdocs/__wp__/index.php"
DOCUMENT_ROOT
"/srv/htdocs"
GATEWAY_INTERFACE
"CGI/1.1"
GEOIP_COUNTRY_CODE
"US"
SERVER_PROTOCOL
"HTTP/1.1"
REDIRECT_URL
"/2020/11/19/my-children-are-my-magnum-opus/"
CONTENT_LENGTH
""
CONTENT_TYPE
""
REQUEST_METHOD
"GET"
QUERY_STRING
""
SERVER_ADDR
"103.115.8.7"
SERVER_NAME
"aul.org"
SERVER_PORT
443
REMOTE_PORT
"26106"
REMOTE_ADDR
"54.80.173.217"
DOCUMENT_URI
"/__wp__/index.php"
SCRIPT_NAME
"/__wp__/index.php"
FCGI_ROLE
"RESPONDER"
PHP_SELF
"/__wp__/index.php"
REQUEST_TIME_FLOAT
1638600883.7024
REQUEST_TIME
1638600883
WP_DIR
"/scripts/../srv/htdocs/__wp__/"
HTTPS
"on"
Key Value
HTTP_X_VALID_CERTIFICATE
"1"
HTTP_ACCEPT_ENCODING
"br,gzip"
HTTP_IF_MODIFIED_SINCE
"Sat, 18 Sep 2021 16:10:23 GMT"
HTTP_ACCEPT_LANGUAGE
"en-US,en;q=0.5"
HTTP_ACCEPT
"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
HTTP_USER_AGENT
"CCBot/2.0 (https://commoncrawl.org/faq/)"
HTTP_X_SUPPORTLOGIN
"yes"
HTTP_X_WPLOGIN
"yes"
HTTP_X_FORWARDED_PROTO
"https"
HTTP_X_FORWARDED_PORT
"443"
HTTP_X_FORWARDED_FOR
"54.80.173.217"
HTTP_HOST
"aul.org"
PRESSABLE_PROXIED_REQUEST
"0"
A8C_PROXIED_REQUEST
"0"
SSL_ENABLED
"false"
SCRIPT_FILENAME
"/srv/htdocs/__wp__/index.php"
DOCUMENT_ROOT
"/srv/htdocs"
GATEWAY_INTERFACE
"CGI/1.1"
SERVER_SOFTWARE
"nginx"
GEOIP_COUNTRY_CODE
"US"
SERVER_PROTOCOL
"HTTP/1.1"
REDIRECT_URL
"/2020/11/19/my-children-are-my-magnum-opus/"
CONTENT_LENGTH
""
CONTENT_TYPE
""
REQUEST_METHOD
"GET"
QUERY_STRING
""
SERVER_ADDR
"103.115.8.7"
SERVER_NAME
"aul.org"
SERVER_PORT
"8089"
REMOTE_PORT
"26106"
REMOTE_ADDR
"192.0.98.198"
DOCUMENT_URI
"/__wp__/index.php"
REQUEST_URI
"/2020/11/19/my-children-are-my-magnum-opus/"
SCRIPT_NAME
"/__wp__/index.php"
FCGI_ROLE
"RESPONDER"
PHP_SELF
"/__wp__/index.php"
REQUEST_TIME_FLOAT
1638600883.7024
REQUEST_TIME
1638600883
0. Whoops\Handler\PrettyPageHandler