رفتن به مطلب

استفاده از ShortCode به جای Template در وردپرس


eepersian

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

با سلام به دوستان عزیز

من یک Template دارم با کد زیر


<?php
/*
Template Name: سیستم ارز
*/
?>

<?php include (TEMPLATEPATH . '/currency/currency_header.php'); ?>

<div class="row-fluid">

<?php
$retrived_settings=get_option('eepersian_cs_all_setting');

if ($retrived_settings['display_sidebar_in_right']==1)
{
include (TEMPLATEPATH . '/currency/currency_sidebar.php');
include (TEMPLATEPATH . '/currency/currency_content.php');
}
else
{
include (TEMPLATEPATH . '/currency/currency_content.php');
include (TEMPLATEPATH . '/currency/currency_sidebar.php');
}

?>
</div>
</div>
</div>
<?php include (TEMPLATEPATH . '/currency/currency_footer.php'); ?>

همونطور که مشاهده می کنید تمام قسمت های Template رو اینکلود کردم ، که این قسمت ها دارای CSS و استایل جداگانه ای نسبت به پوسته جاری هستن .

در فایل currency_content.php که داخل کد بالا اینکلود کردم یک حلقه وجود داره که لیست همه دسته بندی ها رو بر می گردونه

الان برای استفاده از این Template هیچ مشکلی نیست و به درستی کار می کنه ولی من می خوام کد رو دینامیک کنم .

به این معنی که کدهای بالا رو در داخل تابعی که متعلق به ShortCode جایگزین Template هست قرار بدم و در حلقه موجود در فایل currency_content.php لیست دسته بندی هایی رو نمایش بدم که جز پارامترهای ShortCode هستن

مثال :


[grouplist id="1,2,3"]

با استفاده از شورت کد بالا و قرار دادن در صفحه دلخواه Template فایل من نمایش داده بشه و حلقه فقط لیست گروه هایی با آی دی 1,2,3 رو نشون بده

امیدوارم منظورم رو رسونده باشم

با تشکر

لینک به ارسال

شما در صفحه تمپلیتت نباید کوئریت رو بسازی کوئری را فانکشنز باید بسازی و براش شورت کد را تعریف کنی و در فایل تمپلیت حلقه ی عادی را قرار دهی تا با شورت کد اجرا بشه

البته اینکار به نوعی لقمه را دور سر چرخواندن

شما می تونید با متد GET آی دی دسته ها را بفرستی و با ساخت یک صفحه اونرو برای هر دسته بندی ای که خواستی بخونی

  • امتیاز 1
لینک به ارسال

<div class="span9">

<?php

$retrived_settings=get_option('eepersian_cs_all_setting');

include(TEMPLATEPATH.'/currency/currency-inc/php/persian-date.php');

global $wpdb;

$Groups_table= $wpdb->prefix . "eepersian_cs_groups";

$group_query = $wpdb->get_results( "SELECT group_id,group_name,group_image_url FROM {$Groups_table} WHERE group_visible=1 order by group_order",ARRAY_A );

foreach ($group_query as $group_value) {

if ($retrived_settings['show_group_image']==1) {

$image_source=$group_value['group_image_url'];

echo "<img src='{$image_source}'/>";

echo " ";

}

if ($retrived_settings['show_group']==1) {

echo $group_value['group_name'];

}

?>

<div class="widget widget-heading-simple widget-body-white">

<div class="widget-body">

<div class="row-fluid">

<!-- Table -->

<table class="table table-condensed" style="color:#000;">

<!-- Table heading -->

<thead>

<tr style="background-color:#79be00;color:white;">

<th>

<?php

if ($retrived_settings['item_header_text'] != "") {

echo $retrived_settings['item_header_text'];

}

else

{

echo "نام محصول";

}

?>

</th>

<th>

<?php

if ($retrived_settings['last_price_header_text'] != "") {

echo $retrived_settings['last_price_header_text'];

}

else

{

echo "قیمت زنده";

}

?>

</th>

<?php

if ($retrived_settings['show_price_change_column']==0) {

?>

<th>

<?php

if ($retrived_settings['change_price_header_text'] != "") {

echo $retrived_settings['change_price_header_text'];

}

else

{

echo "تغییر";

}

?>

</th>

<?php } ?>

<?php

if ($retrived_settings['show_min_price_column']==0) {

?>

<th>

<?php

if ($retrived_settings['min_price_header_text'] != "") {

echo $retrived_settings['min_price_header_text'];

}

else

{

echo "کمترین";

}

?>

</th>

<?php } ?>

<?php

if ($retrived_settings['show_max_price_column']==0) {

?>

<th>

<?php

if ($retrived_settings['max_price_header_text'] != "") {

echo $retrived_settings['max_price_header_text'];

}

else

{

echo "بیشترین";

}

?>

</th>

<?php } ?>

<?php

if ($retrived_settings['show_time_column']==0) {

?>

<th>

<?php

if ($retrived_settings['time_header_text'] != "") {

echo $retrived_settings['time_header_text'];

}

else

{

echo "زمان";

}

?>

</th>

<?php } ?>

<th>

نمودار

</th>

</tr>

</thead>

<!-- // Table heading END -->

<!-- Table body -->

<tbody>

<?php

$Products_table= $wpdb->prefix . "eepersian_cs_products";

$product_query = $wpdb->get_results( "SELECT product_id,product_name,product_image_url FROM {$Products_table} WHERE product_visible=1 AND group_id={$group_value['group_id']} order by product_order",ARRAY_A );

foreach ($product_query as $product_value) {

$Prices_table= $wpdb->prefix . "eepersian_cs_prices";

$price_query = $wpdb->get_results( "SELECT * FROM {$Prices_table} WHERE product_id={$product_value['product_id']} order by date_en desc",ARRAY_A );

$min = $wpdb->get_row( "SELECT min(price) as price FROM {$Prices_table} WHERE product_id={$product_value['product_id']}",ARRAY_A );

$max = $wpdb->get_row( "SELECT max(price) as price FROM {$Prices_table} WHERE product_id={$product_value['product_id']}",ARRAY_A );

//print_r($price_query);

if ($price_query[1]['price']) {

$change=$price_query[0]['price']-$price_query[1]['price'];

$change=round($change,2);

$percent=($change * 100)/$price_query[1]['price'];

$percent=round($percent, 2);

$percent="(%".$percent.")";

}

?>

<!-- Table row -->

<tr>

<td>

<?php if ($retrived_settings['show_product_image']==1) {

$product_image=$product_value['product_image_url'];

echo "<img src='{$product_image}'/>";

}

?>

<span class="label label-info">

<?php

echo $product_value['product_name']; ?></span>

</td>

<td><?php echo $price_query[0]['price']; ?></td>

<?php

if ($retrived_settings['show_price_change_column']==0) {

?>

<td>

<?php

if ($price_query[1]['price'])

{

if ($retrived_settings['show_price_change_color']==1) {

echo"<span class='label ";

}

if ($change>0) {

if ($retrived_settings['show_price_change_color']==1) {

if ($retrived_settings['up_price_green']==1)

{

echo "label-success'>";

}

else

{

echo "label-important'>";

}

}

}

else if($change<0)

{

if ($retrived_settings['show_price_change_color']==1) {

if ($retrived_settings['up_price_green']==1)

{

echo "label-important'>";

}

else

{

echo "label-success'>";

}

}

}

if ($retrived_settings['show_change_price_percent']==1) {

echo $percent ." " ;

}

if ($retrived_settings['show_change_price_number']==1) {

echo $change ;

}

if ($retrived_settings['show_price_change_color']==1) {

echo "</span>";

}

}

else

{

if ($retrived_settings['show_change_price_percent']==1) {

echo "0.00" ." " ;

}

if ($retrived_settings['show_change_price_number']==1) {

echo "(%0.00)" ;

}

}

?>

</td>

<?php } ?>

<!--MIN COLUMN -->

<?php

if ($retrived_settings['show_min_price_column']==0) {

?>

<td>

<?php echo $min['price']; ?>

</td>

<?php } ?>

<!--MAX COLUMN -->

<?php

if ($retrived_settings['show_max_price_column']==0) {

?>

<td>

<?php echo $max['price']; ?>

</td>

<?php } ?>

<!--TIME COLUMN -->

<?php

if ($retrived_settings['show_time_column']==0) {

?>

<td>

<?php

if ($retrived_settings['time_format'] !="") {

$time_format=$retrived_settings['time_format'];

}

else

{

$time_format='Y/n/d' ;

}

?>

<?php echo eepersian_jdate($time_format,$price_query[0]['date_timestamp']); ?>

</td>

<?php } ?>

<td>

<?php

//echo $product_value['product_id'];

display_chart_option_combobox($product_value['product_id']);

?>

</td>

</tr>

<!-- // Table row END -->

<?php } ?>

</tbody>

<!-- // Table body END -->

</table>

<!-- // Table END -->

</div>

</div>

</div>

<?php } ?>

</div>

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

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


$group_query = $wpdb->get_results( "SELECT group_id,group_name,group_image_url FROM {$Groups_table} WHERE group_visible=1 order by group_order",ARRAY_A );

که باید کد گزوه ها در قسمت Where اضافه بشه یعنی به این صورت :


WHERE group_id=1 AND group_id=2 AND group_id=3 ,...

حالا مشکل اینه که :

وقتی یک شورت کد رو توی صفحه قرار میدیم Header و Footer و Sidebar صفحه فراخونی میشه که من می خوام اون شورت کد هدر و فوتر و کلا استایل اون صفحه رو از اون Template بخونه

ولی دقیق نمی دونم که چطور توی اون شورت این رو تعریف کنم

لینک به ارسال

یعنی می خواهید قالب صفحه را با شورت کد احضار کنید

قالب صفحه را در زمان نشرش انتخاب کنید

الان این کد قالب صفحه است یا کد شورت کدتونه

اگه قالبه که اشتباهه

اگر کد شورت کده که مشکلی نداره صفحه ای با قالبی که می خواهی منتشر کن و شورت کدت را داخلش بگذار

  • امتیاز 1
لینک به ارسال

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

اون کد طولانی فایل currency_content.php هست

من یه تست زدم به این صورت :

در functions.php کد های مربوط به شورت کد رو قرار دادم به صورت زیر :


add_shortcode( 'groups', 'Display_Content' );

function Display_Content( $atts ){

include (TEMPLATEPATH . '/currency/currency_header.php');

echo '<div class="row-fluid">';


$retrived_settings=get_option('eepersian_cs_all_setting');

if ($retrived_settings['display_sidebar_in_right']==1)
{
include (TEMPLATEPATH . '/currency/currency_sidebar.php');
include (TEMPLATEPATH . '/currency/currency_content.php');
}
else
{
include (TEMPLATEPATH . '/currency/currency_content.php');
include (TEMPLATEPATH . '/currency/currency_sidebar.php');
}

echo '
</div>
</div>
</div>';
include (TEMPLATEPATH . '/currency/currency_footer.php');
}

فایل template رو به صورت زیر تغییر دادم :


<?php
/*
Template Name: سیستم ارز
*/
?>

صفحه ای با این template ایجاد کردم و شورت کد [groups] رو هم داخلش قرار دادم .

انتظار داشتم که به جای شورت کد محتوای تابع اجرا بشه و header و footer و content مورد نظرم include بشن ولـــــــــی صفحه سفید رو نشون میده

نمی دونم چرا ؟

اگر این کد کار می کرد ، محتوای فایل content.php رو هم مستقیم و بدون include داخل تابع شورت کد قرار میدادم و می تونستم دستور SELECT رو هم داینامیک کنم

ممنون میشم مثل همیشه یه راه حل بفرمایید

با تشکر

لینک به ارسال

یه نکته وقتی از


do_shortcode([groups])

به صورت زیر در Template استفاده می کنم جواب میده


<?php
/*
Template Name: سیستم ارز
*/
do_shortcode('[groups]');
?>

ضمناً شورت کد داخل متن پست ها به درستی کار می کنه

ولی از [groups] داخل متن برگه پشتیبانی نمی کنه و سفید نشون میده

علت کجاست نمی دونم !!!!!!؟؟؟؟؟؟

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

شورت کد رو در قالب 2013 وردپرس تست کردم و جواب داد . هم در برگه ، هم در نوشته --- پس نتیجه میگیریم ایراد از پوسته هست

طبق این لینک هم چک کردم و فایل page.php مشکلی نداشت

متن فایل page.php به صورت زیر هست (فقط قسمت مربوط به حلقه) :


<div class="span9">
<div class="span10" >
<div class="well">
<?php if ( have_posts() ) : ?>
<?php // Start the Loop ?>
<?php while ( have_posts() ) : the_post(); ?>
<h2 style="text-align:center;"><?php the_title(); ?></h2>

<img src="<?php bloginfo('stylesheet_directory'); ?>/images/page-divider.png">
<div class="separator bottom"></div>

<p>
<?php the_content(); ?>
</p>
<?php endwhile; ?>
<?php endif; ?>

<div class="separator bottom"></div>

<?php include('feedburner-form.php'); ?>
</div>
</div>
<div class="span2" >
<div class="row-fluid">
<img src="<?php bloginfo('stylesheet_directory'); ?>/images/ads/smsde-120x240.gif">
</div>
</div>
</div>

نظر شما چیه ؟

لینک به ارسال

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

اینکه شورت کد به صورت

 نشه در قالب خوند که طبیعیه و باید با تابع do_shortcode اجرا بشه

اما در ویرایشگر متنمی ارسال صفحه یا نوشته اجرا می شه

شورت کدی که ساختید اشتباهه

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

  • امتیاز 1
لینک به ارسال

فکر می کنم اشتباه کردم که همه چیز رو توضیح دادم

ضمناً چطور این نکته رو برداشت کردین ؟

اینکه شورت کد به صورت

 نشه در قالب خوند که طبیعیه و باید با تابع do_shortcode اجرا بشه

در هر حال دستتون درد نکنه

سعی می کنم تا جایی که امکان داشته باشه دیگه سئوال نپرسم

مرسی

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

اشتباه نشه سئوال بپرسین ولی خودتون رو بگذارید جای من

توی یک وقت محدود می خواهید به دوستی کمک کنید تایپیک رو باز می کنید فکر می کنید فرصت خواندن همه این موارد را خواهید داشت؟

پاسخی که عرض کردم پاسخ

صفحه ای با این template ایجاد کردم و شورت کد [groups] رو هم داخلش قرار دادم .

بود

لطف کنید مشکلی که در حال حاضر دارید را بفرمایید تا بشه راهنمایی کرد

جمع بندی مراحلی که رفتید رو هم پیشنهاد می کنم در بخش آموزش منتشر کنید تا در دسترس عموم قرار بگیره

  • امتیاز 1
لینک به ارسال

منظور من از جمله این بود که :

یک برگه جدید ایجاد کردم ، در قسمت ویرایشگر شورت کد رو قرار دادم و در قسمت قالب صفحه اون Template رو انتخاب کردم

انگار سوء برداشت شده - ببخشید - می بایست انشای بهتری انتخاب می کردم

فعلا سیستمم ایراد داره به محظ اینکه به نتیجه ای برسم حتما قرار میدم در آموزش

مرسی

لینک به ارسال

لطفا برای ارسال دیدگاه وارد شوید

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



ورود به حساب کاربری
×
×
  • اضافه کردن...