رفتن به مطلب

گرفتن کل فایل php به عنوان متغیر


پست های پیشنهاد شده

با سلام!

قصد دارم کل نوشته های داخل یک فایل php رو توی یک متغیر بگیرم تا بعد از اون متغییر توی شورتکد استفاده کنم

این محتویات فایل php مورد نظره

ممنون میشم راهنمایی بفرمایید


<?php
/
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}
global $product, $woocommerce_loop;

if ( empty( $woocommerce_loop['loop'] ) ) {
$woocommerce_loop['loop'] = 0;
}

if ( empty( $woocommerce_loop['columns'] ) ) {
$woocommerce_loop['columns'] = apply_filters( 'loop_shop_columns', 4 );
}
// Ensure visibility
if ( ! $product || ! $product->is_visible() ) {
return;
}
// Increase loop count
$woocommerce_loop['loop']++;
// Extra post classes
$classes = array();
/** WPEX CLASSES **/
$classes[] = 'col';
$classes[] = wpex_grid_class( $woocommerce_loop['columns'] );
/** WPEX CLASSES **/
// First column class
if ( 0 == ( $woocommerce_loop['loop'] - 1 ) % $woocommerce_loop['columns'] || 1 == $woocommerce_loop['columns'] ) {
$classes[] = 'first';
}
// Last column class
if ( 0 == $woocommerce_loop['loop'] % $woocommerce_loop['columns'] ) {
$classes[] = 'last';
}
// Get WooCommerce entry style from theme options
$wpex_woo_style = wpex_option( 'woo_entry_style' );

if ( 'two' == $wpex_woo_style ) {
// Product Classes
$classes = array_merge( $classes, array( 'product-entry', 'product-entry-style-two' ) ); ?>
<li <?php post_class( $classes ); ?>>
<?php do_action( 'woocommerce_before_shop_loop_item' ); ?>
<div class="product-entry-media clr">
<a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>" class="product-entry-thumb">
<?php
/**
* woocommerce_before_shop_loop_item_title hook
*
* @hooked woocommerce_show_product_loop_sale_flash - 10
* @hooked woocommerce_template_loop_product_thumbnail - 10
*/
do_action( 'woocommerce_before_shop_loop_item_title' ); ?>
<?php if ( !wpex_woo_product_instock() ) { ?>
<div class="product-entry-out-of-stock-badge">
<?php _e( 'Out of Stock', 'wpex' ); ?>
</div>
<?php } ?>
</a>
<?php
// Display rating
if ( wpex_option( 'woo_entry_rating' ) && 'no' != get_option( 'woocommerce_enable_review_rating' ) && $product->get_rating_html() ) { ?>
<div class="product-entry-rating clr">
<?php wc_get_template( 'loop/rating.php' ); ?>
</div><!-- .product-entry-rating -->
<?php } ?>
</div>
<div class="product-entry-details clr">
<?php
// Display Price
if ( $product->get_price_html() ) { ?>
<div class="product-entry-price">
<span class="product-entry-price"><?php echo $product->get_price_html(); ?></span>
</div><!-- .product-entry-price -->
<?php } ?>
<h2 class="product-entry-title">
<a href="<?php the_permalink(); ?>" title="<?php echo esc_attr( the_title_attribute( 'echo=0' ) ); ?>">
<?php the_title(); ?>
</a>
</h2><!-- .product-entry-title -->

</div><!-- .product-entry-details -->
</li>
<?php
/******************************************************
* Default Woo Style
*****************************************************/
} else {
$classes = array_merge( $classes, array( 'product-entry' ) ); ?>
<li <?php post_class( $classes ); ?>>
<?php do_action( 'woocommerce_before_shop_loop_item' ); ?>
<a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>" class="product-entry-thumb">
<?php
/**
* woocommerce_before_shop_loop_item_title hook
*
* @hooked woocommerce_show_product_loop_sale_flash - 10
* @hooked woocommerce_template_loop_product_thumbnail - 10
*/
do_action( 'woocommerce_before_shop_loop_item_title' ); ?>
</a>
<div class="product-entry-details clr">
<?php do_action( 'woocommerce_after_shop_loop_item' ); ?>
<h2 class="product-entry-title">
<a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>">
<?php the_title(); ?>
</a>
</h2>
<?php
/**
* woocommerce_after_shop_loop_item_title hook
*
* @hooked woocommerce_template_loop_price - 10
*/
//do_action( 'woocommerce_after_shop_loop_item_title' ); ?>
<?php do_action( 'woocommerce_after_shop_loop_item_title' ); ?>
</div><!-- .product-entry-details -->
</li>
<?php } ?>

ویرایش شده توسط shima26
لینک به ارسال

سلام. نحوه فکر کردنتون به مساله غلط هست. باید بگید می خوام خروجی یک فایل php رو بگیرم و با یک شورت کد چاپش کنم. برای این کار باید از تابع file_get_contents استفاده کنید.

اما چون فایلتون مربوط به وردپرس هست و نیاز به اجرای وردپرس دارید تا توابع به کار برده شده قابل استفاده باشن باید کوئری ور ایجاد کنید و به template redirect هوک بزنید و بگید اگر این متغییر با فلان مقدار توی url بود برو به این فایل و بعد از چاپ خروجی با تابع die یا exit خارج بشید.

ممکنه راه های دیگه هم باشه ولی در کل باید خود وردپرس رو اجرا کنید.

ویرایش : برای اینکه بهتر متوجه بشید اینطوری بگم که اول کوئری ور تعریف می کنید ، بعد با یک تابع دیگه می گید که اگر اون متغییر توی url بود این فایل رو اینکلود کن (با هوک به template redirect این تابع رو اجرا می کنید.) حالا ما میدونیم اگر آدرس سایت وردپرسی رو با این url و اون متغییر توی آدرس وارد کنید محتوای فایل مورد نظرمون چاپ میشه . پس میایم به تابع file_get_contents آدرس سایت رو با کوئری سترینگ تعریف شدمون میفرستیم و نتیجه رو توی متغییر ذخیره می کنیم.

برای اضافه کردن وئری ور هم جستجو کنید توی گوگل پیدا می کنید.

موفق باشید.

لینک به ارسال

اگه درست متوجه شده باشم

شما با استفاده از تابع زیر استفاده کنید

این تابع خروجی یونیت شما رو (فایلی که اینکلاد کردین) رو برمیگردونه

    public function load_unit($path)
{
ob_start();
include_once ($path);
return ob_get_clean();
}

لینک به ارسال

سلام. از ob استفاده نکنید بهتره چون توی بعضی هاستینگ ها غیرفعاله به خاطر مسائل امنیتی. منم یکبار استفاده کردم و دیدم پلاگین توی بعضی از سایت ها از کار می افته و خطا میده. بعد متوجه شدم توی خیلی از هاستینگ ها ob غیرفعاله.

لینک به ارسال

تابع file_get_contents هم رو خیلی از هاستینگها بسته هست به دلیل مشکلات امنیتی

(اولین باره در مورد توابع _ob چنین چیزی میشنوم)

کلا هاستینگها عادت دارن که با هر تابعی که حال نمیکنن ببندنش خیلی از سیستمهای تمپلیت ,کش php میان از توابع ob استفاده میکنن

البته مشکل امنیتی که در مورد ob_ ازش هاستینگها دم میزنن خیلی قدیمی هست و اینکه

security hole using these functions, but only on microsoft's servers

و توصیه کرده بوده برای جلوگیری از این مشکل php نسخه 4.0.6 نصب کنن

لینک به ارسال

عجب. توی هاستینگ هایی که من کار کردم ندیدم file_get_contents بسته باشه . ولی توی یکی دو جا ob بسته بود(مثلا روی هاستینگ arvixe که لینوکس هم هست). اما توی اینترنت هم گفتن که بله بعضی جاها file_get_contents بسته هست.

به هر حال راه دیگه هم برای استفاده نکردن از این دو تابع وجود داره . مثل لود با اجاکس . شاید کمی پیچیده تر باشن راه های دیگه اما اگر کسی در سطح عالی بخواد میتونه از اون راه ها استفاده کنه.

لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...