محمود
11 ماه پیش توسط محمود مطرح شد
6 پاسخ

ویرایش کدهای css در افزونه EDD

سلام
من در سایتم از افزونه ایزی دیجیتال دانلود برای فروش آموزش های ویدیویی استفاده میکنم، ولی مشکلی که وجود داره بعد از خرید محصول در قسمت دانلودها وقتی روی لینک کلیک مشه ، ویدئوی آموزشی در همان صفحه لود و با پلیر مرورگر باز میشه ، من میخواهم بعد از کلیک روی لینک ، ویدیو در تب جدید مرورگر باز بشه ، چطور میشه target=”_blank” را به تگ a در سورس کدهای افزونه edd اضافه کرد که این عمل در تمام لینک ها اعمال شود؟


ثبت پرسش جدید
مهدی میرابی
تخصص : full-stack developer
@mmirabi 11 ماه پیش مطرح شد
1

سلام

برای افزودن target="_blank" به تمام لینک‌ها در افزونه Easy Digital Downloads (EDD)، شما می‌توانی از فیلترها و اکشن‌های موجود در WordPress و افزونه EDD استفاده کنید.

  1. استفاده از فیلترهای WordPress:
    ابتدا، می‌توانی از فیلتر the_content استفاده کنی تا لینک‌ها را به صورت دلخواه تغییر بدی. مثال:

    // functions.php 
    function modify_links_target_blank($content) {
       $content = preg_replace('/<a(.*?)href=[\'"]([^\'"]+)[\'"](.*?)>/i', '<a$1href="$2"$3 target="_blank">', $content);
       return $content;
    }
    add_filter('the_content', 'modify_links_target_blank');

    این کد با استفاده از یک عبارت منظم، تمام لینک‌ها را با target="_blank" جایگزین می‌کنه.

  2. استفاده از اکشن‌های EDD:
    افزونه EDD اکشن‌ها یا فیلترهای خاصی برای افزودن لینک‌ها دارد، می‌توانی از آنها برای اعمال target="_blank" استفاده کنی.

    به عنوان مثال فرض کن افزونه EDD از اکشن edd_purchase_link_end برای نمایش لینک خرید استفاده می‌کنه، می‌توانی به این شکل فیلتر اعمال کنی:

    // functions.php یا یک فایل قالب
    function modify_edd_purchase_link($purchase_link) {
       $purchase_link = str_replace('<a', '<a target="_blank"', $purchase_link);
       return $purchase_link;
    }
    add_filter('edd_purchase_link_end', 'modify_edd_purchase_link');

    می تونی به دایکیومنتی افزونه EDD مراجعه کنی و از اکشن‌ها و فیلترهای مناسب برای نیازهای خاص خودت استفاده کنی.

موفق باشی


محمود
@keyboard10 11 ماه پیش مطرح شد
0

ببخشید که من مبتدی هستم این تغییرات باید در فایل function.php قالب باید اعمال بشه یا فایل افزونه edd?


محمود
@keyboard10 11 ماه پیش مطرح شد
0
<?php if( ! empty( $_GET['edd-verify-success'] ) ) : ?>
<p class="edd-account-verified edd_success">
    <?php _e( 'Your account has been successfully verified!', 'easy-digital-downloads' ); ?>
</p>
<?php
endif;
/**
 * This template is used to display the download history of the current user.
 */
$purchases = edd_get_users_purchases( get_current_user_id(), 20, true, 'any' );
if ( $purchases ) :
    do_action( 'edd_before_download_history' ); ?>
    <table id="edd_user_history" class="edd-table">
        <thead>
            <tr class="edd_download_history_row">
                <?php do_action( 'edd_download_history_header_start' ); ?>
                <th class="edd_download_download_name"><?php _e( 'Download Name', 'easy-digital-downloads' ); ?></th>
                <?php if ( ! edd_no_redownload() ) : ?>
                    <th class="edd_download_download_files"><?php _e( 'Files', 'easy-digital-downloads' ); ?></th>
                <?php endif; //End if no redownload?>
                <?php do_action( 'edd_download_history_header_end' ); ?>
            </tr>
        </thead>
        <?php foreach ( $purchases as $payment ) :
            $downloads      = edd_get_payment_meta_cart_details( $payment->ID, true );
            $purchase_data  = edd_get_payment_meta( $payment->ID );
            $email          = edd_get_payment_user_email( $payment->ID );

            if ( $downloads ) :
                foreach ( $downloads as $download ) :

                    // Skip over Bundles. Products included with a bundle will be displayed individually
                    if ( edd_is_bundled_product( $download['id'] ) )
                        continue; ?>

                    <tr class="edd_download_history_row">
                        <?php
                        $price_id       = edd_get_cart_item_price_id( $download );
                        // Get price ID of product with variable prices included in Bundle
                        if ( ! empty( $download['in_bundle'] ) && edd_has_variable_prices( $download['id'] ) ) {
                            $price_id = edd_get_bundle_item_price_id( $download['id'] );
                        }
                        $download_files = edd_get_download_files( $download['id'], $price_id );
                        $name           = $download['name'];

                        // Retrieve and append the price option name
                        if ( ! empty( $price_id ) && 0 !== $price_id ) {
                            $name .= ' - ' . edd_get_price_option_name( $download['id'], $price_id, $payment->ID );
                        }

                        do_action( 'edd_download_history_row_start', $payment->ID, $download['id'] );
                        ?>
                        <td class="edd_download_download_name"><?php echo esc_html( $name ); ?></td>

                        <?php if ( ! edd_no_redownload() ) : ?>
                            <td class="edd_download_download_files">
                                <?php

                                if ( 'publish' == $payment->post_status ) :

                                    if ( $download_files ) :

                                        foreach ( $download_files as $filekey => $file ) :

                                            $download_url = edd_get_download_file_url( $purchase_data['key'], $email, $filekey, $download['id'], $price_id );
                                            ?>

                                            <div class="edd_download_file">
                                                <a href="<?php echo esc_url( $download_url ); ?>" class="edd_download_file_link">
                                                    <?php echo edd_get_file_name( $file ); ?>
                                                </a>
                                            </div>

                                            <?php do_action( 'edd_download_history_files', $filekey, $file, $download['id'], $payment->ID, $purchase_data );
                                        endforeach;

                                    else :
                                        _e( 'No downloadable files found.', 'easy-digital-downloads' );
                                    endif; // End if payment complete

                                else : ?>
                                    <span class="edd_download_payment_status">
                                        <?php printf( __( 'Payment status is %s', 'easy-digital-downloads' ), edd_get_payment_status( $payment, true) ); ?>
                                    </span>
                                    <?php
                                endif; // End if $download_files
                                ?>
                            </td>
                        <?php endif; // End if ! edd_no_redownload()

                        do_action( 'edd_download_history_row_end', $payment->ID, $download['id'] );
                        ?>
                    </tr>
                    <?php
                endforeach; // End foreach $downloads
            endif; // End if $downloads
        endforeach;
        ?>
    </table>
    <?php
        echo edd_pagination( 
            array(
                'type'  => 'download_history',
                'total' => ceil( edd_count_purchases_of_customer() / 20 ) // 20 items per page
            )
        );
    ?>
    <?php do_action( 'edd_after_download_history' ); ?>
<?php else : ?>
    <p class="edd-no-downloads"><?php _e( 'You have not purchased any downloads', 'easy-digital-downloads' ); ?></p>
<?php endif; ?>

محمود
@keyboard10 11 ماه پیش مطرح شد
0

کدهای های بالا فایل .history-download.php در پوشه template افزونه edd است امکان داره بفرمایید در کدام قسمت target=”_blank” باید اضافه شود؟


مهدی میرابی
تخصص : full-stack developer
@mmirabi 11 ماه پیش آپدیت شد
0

سلام
کد های بالا را که بهت دادم رو در child theme فایل functions.php و یا قالب اصلی ادد کن
موفق باشید


محمود
@keyboard10 11 ماه پیش مطرح شد
0

در همان قسمتی که گفتید اعمال کردم ولی تغییری انجام نشد.


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام