如何在 Sensei LMS 证书插件 PDF 中显示自定义字段

问题描述

我正在使用 “Sensei LMS”“Sensei LMS 证书” 插件

现在,为了增强“Sensei LMS 证书”插件功能,我创建了一个自定义元框和自定义字段,如下所示:https://prnt.sc/104s7oy

我正在使用此操作挂钩 sensei_certificates_before_pdf_output 以 PDF 格式显示文本

我在我的自定义插件添加了以下代码

<?PHP 

add_action( 'sensei_certificates_before_pdf_output','action__sensei_certificates_before_pdf_output',20,2 );
function action__sensei_certificates_before_pdf_output( $pdf_certificate,$fpdf ) {

    global $woothemes_sensei_certificates;

    $show_border    = apply_filters( 'woothemes_sensei_certificates_show_border',0 );
    $start_position = 200;

    $args = array(
        'post_type'  => 'certificate','Meta_key'   => 'certificate_hash','Meta_value' => $pdf_certificate->hash,);

    $query          = new WP_Query( $args );
    $certificate_id = 0;

    if ( $query->have_posts() ) {

        $query->the_post();
        $certificate_id = $query->posts[0]->ID;

    } 

    wp_reset_query();

    if ( 0 < intval( $certificate_id ) ) {

        $user_id      = get_post_meta( $certificate_id,'learner_id',true );
        $student      = get_userdata( $user_id );
        $student_name = $student->display_name;
        $fname        = $student->first_name;
        $lname        = $student->last_name;

        if ( '' != $fname && '' != $lname ) {
            $student_name = $fname . ' ' . $lname;
        }

        $course_id       = get_post_meta( $certificate_id,'course_id',true );
        $course_title    = get_post_field('post_title',$course_id);
        $course_end      = Sensei_Utils::sensei_check_for_activity(
            array(
                'post_id' => intval( $course_id ),'user_id' => intval( $user_id ),'type'    => 'sensei_course_status',),true
        );
        $course_end_date = $course_end->comment_date;       

        $date = woothemes_Sensei_Certificates_Utils::get_certificate_formatted_date( $course_end_date );

        if ( isset( $woothemes_sensei_certificates->certificate_template_fields['certificate_custom_message']['text'] ) && '' != $woothemes_sensei_certificates->certificate_template_fields['certificate_custom_message']['text'] ) {

            $certificate_custom_message = $woothemes_sensei_certificates->certificate_template_fields['certificate_custom_message']['text'];
            $certificate_custom_message .= str_replace( array( '{{learner}}','{{course_title}}','{{completion_date}}','{{course_place}}' ),array( $student_name,$course_title,$date,get_bloginfo( 'name' ) ),$certificate_custom_message );

        } 

        $output_fields = array(
            
            'certificate_custom_message' => 'textarea_field',);

        foreach ( $output_fields as $Meta_key => $function_name ) {
    
            if ( isset( $woothemes_sensei_certificates->certificate_template_fields[ $Meta_key ]['position']['x1'] ) ) {

                $font_settings = $woothemes_sensei_certificates->get_certificate_font_settings( $Meta_key );
                
                call_user_func_array( array( $pdf_certificate,$function_name ),array( $fpdf,$Meta_key,$show_border,array( $woothemes_sensei_certificates->certificate_template_fields[ $Meta_key ]['position']['x1'],$woothemes_sensei_certificates->certificate_template_fields[ $Meta_key ]['position']['y1'],$woothemes_sensei_certificates->certificate_template_fields[ $Meta_key ]['position']['width'],$woothemes_sensei_certificates->certificate_template_fields[ $Meta_key ]['position']['height'] ),$font_settings ) );
            } 
        }

    } else {

        wp_die( esc_html__( 'The certificate you are searching for does not exist.','' ),esc_html__( 'Certificate Error','' ) );

    } 

}

但这就是 PDF 中文本的显示方式:https://prnt.sc/104sg3v

预期结果是“Hello Test hii”而不是“certificate_custom_message”

我该如何解决这个问题?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)