shima26

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

7 پست در این موضوع قرار دارد

ارسال شده در (ویرایش شده)

با سلام!

قصد دارم کل نوشته های داخل یک فایل 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
0

به اشتراک گذاری این پست


لینک به پست

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

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

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

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

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

موفق باشید.

3

به اشتراک گذاری این پست


لینک به پست

ممنون مفید بود

0

به اشتراک گذاری این پست


لینک به پست

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

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

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

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

1

به اشتراک گذاری این پست


لینک به پست

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

1

به اشتراک گذاری این پست


لینک به پست

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

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

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

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

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

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

1

به اشتراک گذاری این پست


لینک به پست

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

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

1

به اشتراک گذاری این پست


لینک به پست

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری