web-dev-qa-db-fra.com

Dynamiquement remplacer le titre de fantaisie

J'essaie de remplacer Fancy Title créé à l'aide du thème The7. Les 7 titres sont générés à partir de cette fonction:

function presscore_get_page_title() {
    $title = '';

    if ( is_page() || is_single() ) {
        $title = get_the_title();

    } else if ( is_search() ) {
        $title = sprintf( __( 'Search Results for: %s', 'the7mk2' ), '<span>' . get_search_query() . '</span>' );

    } else if ( is_archive() ) {

        if ( is_category() ) {
            $title = sprintf( __( 'Category Archives: %s', 'the7mk2' ), '<span>' . single_cat_title( '', false ) . '</span>' );

        } elseif ( is_tag() ) {
            $title = sprintf( __( 'Tag Archives: %s', 'the7mk2' ), '<span>' . single_tag_title( '', false ) . '</span>' );

        } elseif ( is_author() ) {
            the_post();
            $title = sprintf( __( 'Author Archives: %s', 'the7mk2' ), '<span class="vcard"><a class="url fn n" href="' . esc_url( get_author_posts_url( get_the_author_meta( "ID" ) ) ) . '" title="' . esc_attr( get_the_author() ) . '" rel="me">' . get_the_author() . '</a></span>' );
            rewind_posts();

        } elseif ( is_day() ) {
            $title = sprintf( __( 'Daily Archives: %s', 'the7mk2' ), '<span>' . get_the_date() . '</span>' );

        } elseif ( is_month() ) {
            $title = sprintf( __( 'Monthly Archives: %s', 'the7mk2' ), '<span>' . get_the_date( 'F Y' ) . '</span>' );

        } elseif ( is_year() ) {
            $title = sprintf( __( 'Yearly Archives: %s', 'the7mk2' ), '<span>' . get_the_date( 'Y' ) . '</span>' );

        } else {
            $title = __( 'Archives:', 'the7mk2' );

        }

    } elseif ( is_404() ) {
        $title = __( 'Page not found', 'the7mk2' );

    } else {
        $title = __( 'Blog', 'the7mk2' );

    }

    return apply_filters( 'presscore_get_page_title', $title );
}

J'ai quelques pages dynamiques créées en utilisant un plugin qui interroge une base de données et place les résultats dans une page générée dynamiquement: chaque page est générée lors de l'appel, elle n'est donc pas stockée dans la base de données.

Désormais, toutes les pages reçoivent le titre de la page par défaut où le shortcode est inséré. J'ai besoin de changer dynamiquement le titre en fonction de la page générée.

J'ai essayé de mettre cette fonction, mais ça n'affecte rien:

function presscore_get_page_title() {
    $title = '';

    if ( is_page() || is_single() ) {
        $title = get_the_title();

    } else if ( is_search() ) {
        $title = sprintf( __( 'Search Results for: %s', 'the7mk2' ), '<span>' . get_search_query() . '</span>' );

    } else if ( is_archive() ) {

        if ( is_category() ) {
            $title = sprintf( __( 'Category Archives: %s', 'the7mk2' ), '<span>' . single_cat_title( '', false ) . '</span>' );

        } elseif ( is_tag() ) {
            $title = sprintf( __( 'Tag Archives: %s', 'the7mk2' ), '<span>' . single_tag_title( '', false ) . '</span>' );

        } elseif ( is_author() ) {
            the_post();
            $title = sprintf( __( 'Author Archives: %s', 'the7mk2' ), '<span class="vcard"><a class="url fn n" href="' . esc_url( get_author_posts_url( get_the_author_meta( "ID" ) ) ) . '" title="' . esc_attr( get_the_author() ) . '" rel="me">' . get_the_author() . '</a></span>' );
            rewind_posts();

        } elseif ( is_day() ) {
            $title = sprintf( __( 'Daily Archives: %s', 'the7mk2' ), '<span>' . get_the_date() . '</span>' );

        } elseif ( is_month() ) {
            $title = sprintf( __( 'Monthly Archives: %s', 'the7mk2' ), '<span>' . get_the_date( 'F Y' ) . '</span>' );

        } elseif ( is_year() ) {
            $title = sprintf( __( 'Yearly Archives: %s', 'the7mk2' ), '<span>' . get_the_date( 'Y' ) . '</span>' );

        } else {
            $title = __( 'Archives:', 'the7mk2' );

        }

    } elseif ( is_404() ) {
        $title = __( 'Page not found', 'the7mk2' );

    } elseif(  is_page_template( 'accomodations.php' ) ){
    $title = __( 'Test', 'the7mk2' );
}   else {
        $title = __( 'Blog', 'the7mk2' );

    }

    return apply_filters( 'presscore_get_page_title', $title );
}

toute suggestion s'il vous plaît?

La fonction d'origine se termine par cette ligne:

return apply_filters( 'presscore_get_page_title', $title );

C'est ta queue. Vous pouvez créer un filtre qui annule complètement le $title généré par cette fonction. Comme ça:

add_filter ('presscore_get_page_title','wpse263380_presscore_get_page_title',10,1);
function wpse263380_presscore_get_page_title ( $title ) {
  $title = 'My awesome title';
  return $title;
  }
3
cjbj