ageOnFront ? $pageOnFront : (int) get_option( 'page_on_front' ); return get_post( $pageOnFront ); } elseif ( is_home() ) { $pageForPosts = $pageForPosts ? $pageForPosts : (int) get_option( 'page_for_posts' ); return get_post( $pageForPosts ); } } return get_post(); } // We need to check for this and not always return a post because we'll otherwise return a post on term pages. if ( $this->isScreenBase( 'post' ) || $postId || is_singular() ) { return get_post( $postId ); } return null; } /** * Returns the post content after parsing it. * * @since 4.1.5 * * @param WP_Post|int $post The post (optional). * @return string The post content. */ public function getContent( $post = null ) { $post = ( $post && is_object( $post ) ) ? $post : $post = $this->getPost( $post ); static $content = []; if ( isset( $content[ $post->ID ] ) ) { return $content[ $post->ID ]; } if ( empty( $post->post_content ) ) { return $post->post_content; } $content[ $post->ID ] = $this->theContent( $post->post_content ); return $content[ $post->ID ]; } /** * Returns the post content after parsing shortcodes and blocks. * We avoid using the "the_content" hook because it breaks stuff if we call it outside the loop or main query. * See https://developer.wordpress.org/reference/hooks/the_content/ * * @since 4.1.5.2 * * @param string $postContent The post content. * @return string The parsed post content. */ public function theContent( $postContent ) { // The order of the function calls below is intentional and should NOT change. $postContent = function_exists( 'do_blocks' ) ? do_blocks( $postContent ) : $postContent; // phpcs:ignore AIOSEO.WpFunctionUse.NewFunctions.do_blocksFound $postContent = wpautop( $postContent ); $postContent = $this->doShortcodes( $postContent ); return $postContent; } /** * Returns the description based on the post content. * * @since 4.0.0 * * @param WP_Post|int $post The post (optional). * @return string The description. */ public function getDescriptionFromContent( $post = null ) { $post = ( $post && is_object( $post ) ) ? $post : $post = $this->getPost( $post ); static $content = []; if ( isset( $content[ $post->ID ] ) ) { return $content[ $post->ID ]; } if ( empty( $post->post_content ) ) { return $post->post_content; } $postContent = $post->post_content; if ( ! in_array( 'runShortcodesInDescription', aioseo()->internalOptions->deprecatedOptions, true ) || aioseo()->options->deprecated->searchAppearance->advanced->runShortcodesInDescription ) { $postContent = $this->theContent( $postContent ); } $postContent = wp_trim_words( $postContent, 55, apply_filters( 'excerpt_more', ' ' . '[…]' ) ); $postContent = str_replace( ']]>', ']]>', $postContent ); $postContent = preg_replace( '#(|)#', '', $postContent ); $content[ $post->ID ] = trim( wp_strip_all_tags( strip_shortcodes( $postContent ) ) ); return $content[ $post->ID ]; } /** * Returns custom fields as a string. * * @since 4.0.6 * * @param WP_Post|int $post The post. * @param array $keys The post meta_keys to check for values. * @return string The custom field content. */ public function getCustomFieldsContent( $post = null, $keys = [] ) { $post = ( $post && is_object( $post ) ) ? $post : $this->getPost( $post ); $customFieldContent = ''; $acfFields = $this->getAcfContent( $post ); $acfFieldsKeys = []; if ( ! empty( $acfFields ) ) { foreach ( $acfFields as $acfField => $acfValue ) { if ( in_array( $acfField, $keys, true ) ) { $customFieldContent .= "{$acfValue} "; $acfFieldsKeys[] = $acfField; } } } foreach ( $keys as $key ) { if ( in_array( $key, $acfFieldsKeys, true ) ) { continue; } $value = get_post_meta( $post->ID, $key, true ); if ( $value ) { $customFieldContent .= "{$value} "; } } return $customFieldContent; } /** * Returns if the page is a special type (WooCommerce pages, Privacy page). * * @since 4.0.0 * * @param int $postId The post ID. * @return boolean If the page is special or not. */ public function isSpecialPage( $postId = false ) { if ( (int) get_option( 'page_for_posts' ) === (int) $postId || (int) get_option( 'wp_page_for_privacy_policy' ) === (int) $postId || $this->isBuddyPressPage( $postId ) || $this->isWooCommercePage( $postId ) ) { return true; } return false; } /** * Returns the page number of the current page. * * @since 4.0.0 * * @return int The page number. */ public function getPageNumber() { $page = get_query_var( 'page' ); $paged = get_query_var( 'paged' ); return ! empty( $page ) ? $page : ( ! empty( $paged ) ? $paged : 1 ); } /** * Check if the post passed in is a valid post, not a revision or autosave. * * @since 4.0.5 * * @param WP_Post $post The Post object to check. * @param bool $allowedPostStatuses Whether or not to allow drafts. * @return bool True if valid, false if not. */ public function isValidPost( $post, $allowedPostStatuses = [ 'publish' ] ) { if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) { return false; } if ( ! is_object( $post ) ) { $post = get_post( $post ); } // In order to prevent recursion, we are skipping scheduled-action posts. if ( empty( $post ) || 'scheduled-action' === $post->post_type || 'revision' === $post->post_type || ! in_array( $post->post_status, $allowedPostStatuses, true ) ) { return false; } return true; } /** * Checks whether the given URL is a valid attachment. * * @since 4.0.13 * * @param string $url The URL. * @return boolean Whether the URL is a valid attachment. */ public function isValidAttachment( $url ) { $uploadDirUrl = aioseo()->helpers->escapeRegex( $this->getWpContentUrl() ); return preg_match( "/$uploadDirUrl.*/", $url ); } /** * Tries to convert an attachment URL into a post ID. * * This our own optimized version of attachment_url_to_postid(). * * @since 4.0.13 * * @param string $url The attachment URL. * @return int|boolean The attachment ID or false if no attachment could be found. */ public function attachmentUrlToPostId( $url ) { $cacheName = sha1( "aioseo_attachment_url_to_post_id_$url" ); $cachedId = aioseo()->cache->get( $cacheName ); if ( $cachedId ) { return 'none' !== $cachedId && is_numeric( $cachedId ) ? (int) $cachedId : false; } $path = $url; $uploadDirInfo = wp_get_upload_dir(); $siteUrl = wp_parse_url( $uploadDirInfo['url'] ); $imagePath = wp_parse_url( $path ); // Force the protocols to match if needed. if ( isset( $imagePath['scheme'] ) && ( $imagePath['scheme'] !== $siteUrl['scheme'] ) ) { $path = str_replace( $imagePath['scheme'], $siteUrl['scheme'], $path ); } if ( ! $this->isValidAttachment( $path ) ) { aioseo()->cache->update( $cacheName, 'none' ); return false; } if ( 0 === strpos( $path, $uploadDirInfo['baseurl'] . '/' ) ) { $path = substr( $path, strlen( $uploadDirInfo['baseurl'] . '/' ) ); } $results = aioseo()->db->start( 'postmeta' ) ->select( 'post_id' ) ->where( 'meta_key', '_wp_attached_file' ) ->where( 'meta_value', $path ) ->limit( 1 ) ->run() ->result(); if ( empty( $results[0]->post_id ) ) { aioseo()->cache->update( $cacheName, 'none' ); return false; } aioseo()->cache->update( $cacheName, $results[0]->post_id ); return $results[0]->post_id; } /** * Returns true if the request is a non-legacy REST API request. * This function was copied from WooCommerce and improved. * * @since 4.1.2 * * @return bool True if this is a REST API request. */ public function isRestApiRequest() { global $wp_rewrite; if ( empty( $wp_rewrite ) ) { return false; } if ( empty( $_SERVER['REQUEST_URI'] ) ) { return false; } $restUrl = wp_parse_url( get_rest_url() ); $restUrl = $restUrl['path'] . ( ! empty( $restUrl['query'] ) ? '?' . $restUrl['query'] : '' ); $isRestApiRequest = ( 0 === strpos( $_SERVER['REQUEST_URI'], $restUrl ) ); return apply_filters( 'aioseo_is_rest_api_request', $isRestApiRequest ); } /** * Checks whether the current request is an AJAX, CRON or REST request. * * @since 4.1.3 * * @return bool Wether the request is an AJAX, CRON or REST request. */ public function isAjaxCronRest() { return wp_doing_ajax() || wp_doing_cron() || $this->isRestApiRequest(); } /** * Checks whether we're on the given screen. * * @since 4.0.7 * * @param string $screenName The screen name. * @return boolean Whether we're on the given screen. */ public function isScreenBase( $screenName ) { $screen = $this->getCurrentScreen(); if ( ! $screen || ! isset( $screen->base ) ) { return false; } return $screen->base === $screenName; } /** * Returns if current screen is of a post type * * @since 4.0.17 * * @param string $postType Post type slug * * @return bool */ public function isScreenPostType( $postType ) { $screen = $this->getCurrentScreen(); if ( ! $screen || ! isset( $screen->post_type ) ) { return false; } return $screen->post_type === $postType; } /** * Gets current admin screen * * @since 4.0.17 * * @return false|\WP_Screen|null */ public function getCurrentScreen() { if ( ! is_admin() || ! function_exists( 'get_current_screen' ) ) { return false; } return get_current_screen(); } }
Fatal error: Trait 'AIOSEO\Plugin\Common\Traits\Helpers\WpContext' not found in /var/www/html/vistosistemas.com.br/web/novo2020/wp-content/plugins/all-in-one-seo-pack/app/Common/Utils/Helpers.php on line 16