Endpoint für eine Seite

add_action( 'init', 'add_new_e' );
add_filter( 'query_vars', 'filter_vars_e');
function add_new_e() {
    add_rewrite_endpoint( 'mash', EP_PAGES );
}

function filter_vars_e($vars) {
    $vars[] = 'mash';
    return $vars;
}

However, if I understand it correctly, you can use the pre_handle_404 hook to check if the endpoint query is set and that the page uses a specific template, then throw a 404 error if those conditions are not met.

add_filter( 'pre_handle_404', 'wpse_376370', 10, 2 );
function wpse_376370( $value, $wp_query ) {
    if (
        // It's a valid "mash" endpoint request,
        $wp_query->get( 'mash' )          &&
        // but the request is not a Page or its slug is not 'example',
        ! $wp_query->is_page( 'example' ) &&
        // and the Page is not using the template some-template.php.
        ! is_page_template( 'some-template.php' )
    ) {
        // Therefore, we throw a 404 error
        $wp_query->set_404();

        // and avoid redirect to the page. (at example.com/example)
        remove_action( 'template_redirect', 'redirect_canonical' );
    }

    return $value;
}

plugins – Is there a way to add custom endpoint to specific page only – WordPress Development Stack Exchange

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert