Tovább a tartalomhoz

Testreszabás kódrészletekkel

Kurzusszintek átnevezése és bővítése, oktatók automatikus jóváhagyása és egyedi mező a regisztrációs űrlapon.

Ez a fejezet kész kódrészleteket tartalmaz a gyakori testreszabásokhoz. A kódot a gyermektéma functions.php fájljába vagy egy kódbeszúró bővítménybe másold, ne közvetlenül a téma fájljaiba, mert a téma frissítésekor a módosításaid elvesznének.

Kurzusszintek átnevezése és bővítése

Szekció neve “Kurzusszintek átnevezése és bővítése”

A kurzusok szintjei alapból a Kezdő, Középhaladó és Haladó (kulcsaik: beginner, intermediate, expert). A tutor_course_level szűrővel átnevezheted vagy bővítheted őket.

Átnevezés: a kulcsok maradnak, a megjelenő név változik.

add_filter( 'tutor_course_level', 'modify_course_level' );
if ( ! function_exists( 'modify_course_level' ) ) {
function modify_course_level( $levels ) {
$levels['beginner'] = 'Újonc';
$levels['intermediate'] = 'Gyakorlott';
$levels['expert'] = 'Profi';
return $levels;
}
}

Új szintek felvétele a meglévő három mellé:

add_filter( 'tutor_course_level', 'add_extra_course_level' );
if ( ! function_exists( 'add_extra_course_level' ) ) {
function add_extra_course_level( $levels ) {
$levels['extra-level-1'] = 'Mester';
$levels['extra-level-2'] = 'Mindenkinek';
return $levels;
}
}

Alapból az oktatói regisztráció után az új oktató „függőben” állapotú, és egy adminisztrátornak kell jóváhagynia. Ha azt szeretnéd, hogy a regisztráló oktató azonnal jóváhagyott legyen, használd ezt a kódot:

add_action( 'tutor_new_instructor_after', 'approve_new_instructor_immediately' );
if ( ! function_exists( 'approve_new_instructor_immediately' ) ) {
function approve_new_instructor_immediately( $instructor_id ) {
update_user_meta( $instructor_id, '_tutor_instructor_status', 'approved' );
update_user_meta( $instructor_id, '_tutor_instructor_approved', tutor_time() );
$instructor = new \WP_User( $instructor_id );
$instructor->add_role( tutor()->instructor_role );
}
}

Ezzel gyakorlatilag bárki regisztrálhat oktatónak és beküldhet kurzust, ezért csak akkor használd, ha ezt tudatosan vállalod.

A regisztrációs űrlapot a téma sablonjainak felülírásával bővítheted. Előbb hozz létre gyermektémát, vagy mentsd el biztonságos helyre a téma fájljait. A Tutor LMS sablonjait a témádban a tutor mappa alá másolva írhatod felül: a regisztrációs űrlap sablonja a sajattema/tutor/dashboard/registration.php.

A telefonszám mezőnek két lépése van.

1. Kötelezővé tétel és mentés. Másold a gyermektéma functions.php fájljába:

add_filter( 'tutor_student_registration_required_fields', 'required_phone_no_callback' );
if ( ! function_exists( 'required_phone_no_callback' ) ) {
function required_phone_no_callback( $atts ) {
$atts['phone_no'] = 'A telefonszám megadása kötelező';
return $atts;
}
}
add_action( 'user_register', 'add_phone_after_user_register' );
add_action( 'profile_update', 'add_phone_after_user_register' );
if ( ! function_exists( 'add_phone_after_user_register' ) ) {
function add_phone_after_user_register( $user_id ) {
if ( ! empty( $_POST['phone_no'] ) ) {
$phone_number = sanitize_text_field( $_POST['phone_no'] );
update_user_meta( $user_id, 'phone_number', $phone_number );
}
}
}

A kód kötelezővé teszi a mezőt, és a regisztrációkor a felhasználó metaadatai közé menti a számot.

2. A mező az űrlapon. Illeszd be ezt a HTML-részletet a témádban felülírt tutor/dashboard/registration.php fájlba, az űrlap többi mezője mellé:

<div class="tutor-form-row">
<div class="tutor-form-col-12">
<div class="tutor-form-group">
<label><?php _e( 'Telefonszám', 'tutor' ); ?></label>
<input type="text" name="phone_no" value="<?php echo tutor_utils()->input_old( 'phone_no' ); ?>" placeholder="<?php _e( 'Telefonszám', 'tutor' ); ?>">
</div>
</div>
</div>

A mező fordítható, és hibás kitöltés után a korábban beírt értéket visszaírja. Ezután a regisztrációs űrlapon megjelenik a telefonszám mező, és nélküle nem lehet regisztrálni.

Teljesen új mező (például azonosító)

Szekció neve “Teljesen új mező (például azonosító)”

Ugyanezzel a módszerrel bármilyen más mezőt felvehetsz. A példában egy kötelező NID (személyi azonosító) mező szerepel. Öt lépés kell hozzá.

  1. Kötelezővé tétel és mentés a functions.php-ban. A kulcs most nid, a metaadat neve _nid:

    add_filter( 'tutor_student_registration_required_fields', 'required_nid_no_callback' );
    if ( ! function_exists( 'required_nid_no_callback' ) ) {
    function required_nid_no_callback( $atts ) {
    $atts['nid'] = 'Azonosító';
    return $atts;
    }
    }
    add_action( 'user_register', 'add_nid_after_user_register' );
    add_action( 'profile_update', 'add_nid_after_user_register' );
    if ( ! function_exists( 'add_nid_after_user_register' ) ) {
    function add_nid_after_user_register( $user_id ) {
    if ( ! empty( $_POST['nid'] ) ) {
    $nid = sanitize_text_field( $_POST['nid'] );
    update_user_meta( $user_id, '_nid', $nid );
    }
    }
    }
  2. A mező az űrlapon: a felülírt tutor/dashboard/registration.php fájlba:

    <div class="tutor-form-col-6">
    <div class="tutor-form-group">
    <label><?php _e( 'Azonosító', 'tutor' ); ?></label>
    <input type="text" name="nid" value="<?php echo tutor_utils()->input_old( 'nid' ); ?>" placeholder="<?php _e( 'Azonosító', 'tutor' ); ?>">
    </div>
    </div>
  3. Az érték beolvasása a profiloldalon. A felülírt tutor/dashboard/my-profile.php fájl elején, a többi változó mellé vedd fel:

    $nid = get_user_meta( $uid, '_nid', true );
  4. Az érték kiírása a profiloldalon. Ugyanebbe a fájlba, a többi profilelem mellé:

    <div class="tutor-dashboard-profile-item">
    <div class="heading">
    <span><?php _e( 'Azonosító', 'tutor' ); ?></span>
    </div>
    <div class="content">
    <p><?php echo $nid ? $nid : '________'; ?></p>
    </div>
    </div>

    Ha a felhasználó megadott értéket, azt látja, különben aláhúzásvonalak jelennek meg.

  5. Szerkesztőmező a beállításokban, hogy a már regisztrált felhasználók is megadhassák az értéket: a vezérlőpult Beállítások → Profil oldalának sablonjába (a felülírt tutor/dashboard/settings/profile.php) illeszd be:

    <div class="tutor-form-col-6">
    <div class="tutor-form-group">
    <label><?php _e( 'Azonosító', 'tutor' ); ?></label>
    <input type="number" min="1" name="nid" value="<?php echo get_user_meta( $user->ID, '_nid', true ); ?>" placeholder="<?php _e( 'Azonosító', 'tutor' ); ?>">
    </div>
    </div>

Ezzel az új mező megjelenik a regisztrációs űrlapon és a profil beállításai között, és kiíródik a vezérlőpult profiloldalán. A példa szám típusú mezőt használ, így csak számértéket fogad el. Ha szöveget is el kell fogadnia, cseréld az ötödik lépés type="number" mezőjét type="text"-re.

Készült:

Tiszteletben tartjuk a magánszférádat

Sütiket használunk a böngészési élmény javítására és a forgalom elemzésére. Az analitika csak akkor indul, ha engeded. Adatvédelmi irányelvek, Sütitájékoztató.

Sütibeállítások