WordPress 6.2.0: La función get_page_by_title() quedó obsoleta.
Publicado el 30 - Mar - 2023
Deprecated: mb_convert_encoding(): Handling HTML entities via mbstring is deprecated; use htmlspecialchars, htmlentities, or mb_encode_numericentity/mb_decode_numericentity instead in /homepages/27/d354525915/htdocs/blog/wp-content/themes/neomode/functions.php on line 165
Deprecated: Function utf8_decode() is deprecated in /homepages/27/d354525915/htdocs/blog/wp-content/themes/neomode/functions.php on line 170
En WordPress 6.2, la función get_page_by_title() ha quedado obsoleta a favor de usar WP_Query. A diferencia de la función obsoleta, WP_Query solo se puede ejecutar después de que se hayan cargado los complementos y las funciones conectables, en el action hook plugins_loaded o de forma posterior.
Debido a las limitaciones con la consulta de la base de datos de funciones obsoletas, podría arrojar resultados diferentes según la versión de la base de datos y/o el motor utilizado. Cambiar a WP_Query nos asegura recibir los mismos resultados independientemente de la configuración del servidor.
Para lograr una consulta de base de datos equivalente a través de WP_Query, se pueden usar los siguientes argumentos:
$query = new WP_Query(
array(
'post_type' => 'page',
'title' => 'Sample Page',
'post_status' => 'all',
'posts_per_page' => 1,
'no_found_rows' => true,
'ignore_sticky_posts' => true,
'update_post_term_cache' => false,
'update_post_meta_cache' => false,
'orderby' => 'post_date ID',
'order' => 'ASC',
)
);
if ( ! empty( $query->post ) ) {
$page_got_by_title = $query->post;
} else {
$page_got_by_title = null;
}
Así que usamos la función get_page_by_title() para conseguir los links a las páginas de nuestros sitio web de forma personalizada, éstos habrán dejado de funcionar si hemos actualizado a la versión 6.2. Teniendo todo esto en cuenta, y suponiendo que tenemos una función, por ejemplo, get_page_object() -puesto que va a devolver un objeto tipo página- en nuestra plantilla functions.php, deberemos sustituir la función obsoleta por esta nuestra, quedando así:
<a href="<?php echo get_page_link( get_page_object('Blog')->ID);?>" class="">Blog</a>
En functions.php nuestra función personalizada quedaría así:
function get_page_object( $title) {
$query = new WP_Query(
array(
'post_type' => 'page',
'title' => $title,
'post_status' => 'all',
'posts_per_page' => 1,
'no_found_rows' => true,
'ignore_sticky_posts' => true,
'update_post_term_cache' => false,
'update_post_meta_cache' => false,
'orderby' => 'post_date ID',
'order' => 'ASC',
)
);
if ( ! empty( $query->post ) ) {
$page = $query->post;
} else {
$page = null;
}
return $page;
}
Gracias por la ayuda.
Deja una respuesta