WordPressでカスタムフィールにショートコード使用する方法

WordPressでカスタムフィールにショートコード使用するには、
以下のタグを使用する。

<?php
echo apply_filters('the_content', get_post_meta($post->ID, 'foo', true));
?>

wordpressでテーマファイルのphpファイルをインクルードする方法

テンプレートパートファイルをインクルードする場合に、

<?php include (TEMPLATEPATH . '/mydirectory/template.php') ?>

と記述する事も出来る

<?php get_template_part('mydirectory/template'); ?>

と記述する事も出来ます

<?php locate_template( 'mydirectory/template.php', true,true ); ?>

と記述する事も出来ます

robots.txtで検索エンジンを拒否する方法

User-agent: *
Disallow: /

smartyのコメントアウト

smartyのコメントアウトする際は、
を使うとうまく反映されない場合があるので、

<!--{if false}-->
テストテストテストテストテスト
<!--{/if}-->

とすると良い。

商品一覧ブロックを作成する

1.html/frontparts/bloc/product_list.php を新規作成

<?php

// {{{ requires
require_once(CLASS_EX_REALDIR . "page_extends/frontparts/bloc/LC_Page_FrontParts_Bloc_Product_List_Ex.php");

// }}}
// {{{ generate page

$objPage = new LC_Page_FrontParts_Bloc_Product_List_Ex();
register_shutdown_function(array($objPage, "destroy"));
$objPage->init();
$objPage->process();

?>

2.data/class_extends/page_extends/frontparts/bloc/LC_Page_FrontParts_Bloc_Product_List_Ex.php を新規作成

<?php

// {{{ requires
require_once(CLASS_REALDIR . "pages/frontparts/bloc/LC_Page_FrontParts_Bloc_Product_List.php");

/**
 * product_List のページクラス(拡張).
 *
 * LC_Page_FrontParts_Bloc_Product_List をカスタマイズする場合はこのクラスを編集する.
 *
 */
class LC_Page_FrontParts_Bloc_Product_List_Ex extends LC_Page_FrontParts_Bloc_Product_List {

    // }}}
    // {{{ functions

    /**
     * Page を初期化する.
     *
     * @return void
     */
    function init() {
        parent::init();
    }

    /**
     * Page のプロセス.
     *
     * @return void
     */
    function process() {
        parent::process();
    }

    /**
     * デストラクタ.
     *
     * @return void
     */
    function destroy() {
        parent::destroy();
    }
}

?>

3.data/class/pages/frontparts/bloc/LC_Page_FrontParts_Bloc_Product_List.php を新規作成

<?php

// {{{ requires
require_once CLASS_REALDIR . 'pages/frontparts/bloc/LC_Page_FrontParts_Bloc.php';

/**
 * Product_List のページクラス.
 *
 * @package Page
 */
class LC_Page_FrontParts_Bloc_Product_List extends LC_Page_FrontParts_Bloc {

    // }}}
    // {{{ functions

    /**
     * Page を初期化する.
     *
     * @return void
     */
    function init() {
        parent::init();
        $bloc_file = 'product_list.tpl';
        $this->setTplMainpage($bloc_file);
    }

    /**
     * Page のプロセス.
     *
     * @return void
     */
    function process() {
        if (defined("MOBILE_SITE") && MOBILE_SITE) {
            $objView = new SC_MobileView();
        } else {
            $objView = new SC_SiteView();
        }

        $objQuery = new SC_Query_Ex();
        $objProduct = new SC_Product_Ex();

        //$objQuery->setLimitOffset(10);
        //$objQuery->setOrder("update_date desc");
        $this->arrProducts = $objProduct->lists(&$objQuery);

        $objView->assignobj($this);
        $objView->display($this->tpl_mainpage);
    }

    /**
     * デストラクタ.
     *
     * @return void
     */
    function destroy() {
        parent::destroy();
    }
}

?>

$this->arrProducts を定義するところの上にコメントアウトされた行がありますが、
その1行目は「10件のみ取り出す」、2行目は「update_date(更新日時)の降順に並べる」という意味です。
コメント記号を削除すれば、「更新があった商品リスト(最新10件)」にもなりそうです。

4.data/Smarty/templates/default/frontparts/bloc/product_list.tpl を新規作成

<style type="text/css">
div#productlist_area h2 {
    background-color:#de5e17;
    text-align:center;
    color:#fff;
    padding:7px 0 7px 0;
}
div#productlist_area div.productImage {
    float:left;
    width:40px;
    padding:0 8px 0 0;
}
div#productlist_area div.productContents {
    float:left;
    width:100px;
}
div#productlist_area div.product_item {
    padding:5px 0 5px 5px;
}
</style>

<!--{if count($arrProducts) > 0}-->
    <div class="bloc_outer clearfix">
        <div id="productlist_area">
            <h2>商品一覧リスト</h2>
            <div class="bloc_body clearfix">
                <!--{foreach from=$arrProducts item=arrProduct}-->
                    <div class="product_item clearfix">
                        <div class="productImage">
                            <a href="<!--{$smarty.const.P_DETAIL_URLPATH}--><!--{$arrProduct.product_id|u}-->"><img src="<!--{$smarty.const.ROOT_URLPATH}-->resize_image.php?image=<!--{$arrProduct.main_list_image|sfNoImageMainList|h}-->&width=40&height=40" alt="<!--{$arrProduct.name|h}-->" /></a>
                        </div>
                        <div class="productContents">
                            <h3>
                                <a href="<!--{$smarty.const.P_DETAIL_URLPATH}--><!--{$arrProduct.product_id|u}-->"><!--{$arrProduct.name|h}--></a>
                            </h3>
                            <p class="sale_price">
                                <span class="price"><!--{$arrProduct.price02_min|sfCalcIncTax:$arrInfo.tax:$arrInfo.tax_rule|number_format}--> 円</span>
                            </p>
                        </div>
                    </div>
                </dl>
                <div class="clear"></div>
                <!--{/foreach}-->
            </div>
        </div>
    </div>
<!--{/if}-->

5.データベースに新規ブロック情報を登録
insert into dtb_bloc values(10,10,’product_list’,’product_list.tpl’,’product_list’,now(),now(),’frontparts/bloc/product_list.php’,0);

6.特定のカテゴリだけ表示する場合・・・
3.data/class/pages/frontparts/bloc/LC_Page_FrontParts_Bloc_Product_List.php を新規作成
箇所を下記とする

<?php

// {{{ requires
require_once CLASS_REALDIR . 'pages/frontparts/bloc/LC_Page_FrontParts_Bloc.php';

/**
 * Product_List のページクラス.
 *
 * @package Page
 */
class LC_Page_FrontParts_Bloc_Product_List extends LC_Page_FrontParts_Bloc {

    // }}}
    // {{{ functions

    /**
     * Page を初期化する.
     *
     * @return void
     */
    function init() {
        parent::init();
        $bloc_file = 'product_list.tpl';
        $this->setTplMainpage($bloc_file);
    }

    /**
     * Page のプロセス.
     *
     * @return void
     */
    function process() {
        if (defined("MOBILE_SITE") && MOBILE_SITE) {
            $objView = new SC_MobileView();
        } else {
            $objView = new SC_SiteView();
        }

        $objQuery = new SC_Query_Ex();

        // 商品一覧を取得
        $col = 'T1.product_id, T1.main_list_image, T1.name, T2.price02 AS price02_min';
        $from = 'dtb_products as T1 INNER JOIN dtb_products_class as T2 ON T1.product_id = T2.product_id';
        $from .= ' INNER JOIN dtb_product_categories as T3 ON T1.product_id = T3.product_id';
        $where = 'T2.del_flg = 0 and T3.category_id IN ( ? , ? )';  // $arrval で指定するカテゴリIDの数だけ ? を増やす
        $arrval = Array( 4 , 6 );   // 一番下層のカテゴリIDを指定する
        //$objQuery->setOrder("T1.update_date desc");
        $arrProducts = $objQuery->select($col, $from, $where, $arrval);

        // 重複データ削除
        $tmp = Array();
        $i = 0;
        $max_count = 10;    // 取得したい商品個数を指定する
        foreach($arrProducts as $arrProduct){
            if(!in_array($arrProduct['product_id'], $tmp)){
                $this->arrProducts[$i] = $arrProduct;
                $i++;
            }
            $tmp[] = $arrProduct['product_id'];
            if($i >= $max_count){
                break;
            }
        }

        $objView->assignobj($this);
        $objView->display($this->tpl_mainpage);
    }

    /**
     * デストラクタ.
     *
     * @return void
     */
    function destroy() {
        parent::destroy();
    }
}

?>

Copyright © All Rights Reserved · Green Hope Theme by Sivan & schiy · Proudly powered by WordPress