'resgata_sponsorship_page_id', 'resgata-pet/pix-donation' => 'resgata_help_page_id', 'resgata-pet/sponsor-area' => 'resgata_sponsor_area_page_id', ); /** * Lista pública de animais. */ public static function animals(): string { return post_type_exists( 'resgata_animal' ) ? (string) get_post_type_archive_link( 'resgata_animal' ) : ''; } /** * Página de contato (criada ao salvar as configurações), se estiver publicada. */ public static function contact(): string { $page = ContactPage::get(); return $page && 'publish' === $page->post_status ? (string) get_permalink( $page ) : ''; } /** * Página publicada que tem o bloco dos planos de apadrinhamento. */ public static function sponsorship(): string { return self::page_with_block( 'resgata-pet/sponsorship-plans' ); } /** * Área do padrinho: a página publicada que tem o bloco dela, já com a âncora do bloco. */ public static function sponsor_area(): string { $url = self::page_with_block( 'resgata-pet/sponsor-area' ); return '' !== $url ? $url . '#resgata-padrinho' : ''; } /** * Página "Como ajudar": a página publicada que tem o bloco de doação por Pix. */ public static function help(): string { return self::page_with_block( 'resgata-pet/pix-donation' ); } /** * ID da página "Como ajudar", ou 0 se ela não existir. */ public static function help_page_id(): int { return self::page_id_with_block( 'resgata-pet/pix-donation' ); } /** * Endereço da primeira página publicada cujo conteúdo tem o bloco informado, ou vazio. * * @param string $block Nome do bloco (uma das chaves de PAGE_BLOCKS). */ private static function page_with_block( string $block ): string { $page_id = self::page_id_with_block( $block ); return $page_id ? (string) get_permalink( $page_id ) : ''; } /** * ID da primeira página publicada cujo conteúdo tem o bloco informado, ou 0. * * @param string $block Nome do bloco (uma das chaves de PAGE_BLOCKS). */ private static function page_id_with_block( string $block ): int { if ( ! isset( self::PAGE_BLOCKS[ $block ] ) || ! \WP_Block_Type_Registry::get_instance()->is_registered( $block ) ) { return 0; } $transient = self::PAGE_BLOCKS[ $block ]; $page_id = get_transient( $transient ); if ( false === $page_id ) { $pages = get_posts( array( 'post_type' => 'page', 'post_status' => 'publish', 'posts_per_page' => 1, 'orderby' => 'ID', 'order' => 'ASC', 'fields' => 'ids', 's' => '