2017-08-05 9 views
1

Wordpressにはかなり新しいので、テンプレート階層によって提案されたシーケンス以外のページのシーケンスを実装する方法を理解しようとしています。Wordpress:テンプレート階層以外の一連のページを実装する方法

異なる商品を購入できるウェブサイトを(例として)考えてみましょう。私たちはカスタムポストタイプの "products"を持っています。製品を選択してカートに追加することができます。ユーザがチェックアウトしたいとき、1つ以上の製品のチェックアウトを行うための一連のページが提供される。

このようなシーケンスを実装するにはどうすればよいでしょうか?通常のウェブサイトでは、それはお互いにリンクしている単なるページの数です。 Wordpressでは、コードを書く時にページIDは不明であり、wp adminでページを作成した後にのみ認識されます。その後、ページIDを使用することができますが、別の環境(例えば開発からテストまたはライブ)に展開する場合は、wp adminでページを再度作成しなければならず、新しいページIDが必要になります。ページIDはコードで変更する必要があります。これは私の意見では望ましくない、エラーが起こりやすい、そうですか?

データベースを同期する以外に、これをWordpressで処理する方法はありますか?言い換えれば、通常のWordPressテンプレート階層フロー以外の、一連のページを互いにリンクするための最良の設計は何ですか?

答えて

0

解決策として、phpとjavascriptの両方からの論理IDに基づいてパーマリンクにアクセスする方法を作成しました。別の環境に展開するときは、論理IDからURLへのマッピングだけをfunctions.phpの1つの配列で変更する必要があります。パーマリンクを格納し、アクセスするためのfunctions.phpに

wp_register_script('aom_script', get_template_directory_uri() . '/script.js', array('jquery')); 
wp_localize_script('aom_script', 'my_js_permalinks', aom_get_page_permalinks()); 
wp_enqueue_script('aom_script'); 

コード:

function aom_get_page_permalinks() { 
    $page_permalinks = array(
     "home"=>get_bloginfo('url'), 
     "someurl"=>get_permalink(14), 
     "anotherurl"=>get_permalink(16) 
    ); 
    return $page_permalinks; 
} 

function aom_get_page_permalink($page_id) { 
    $page_permalinks = aom_get_page_permalinks(); 
    return $page_permalinks[$page_id]; 
} 

今、あなたは、PHPでのパーマリンクが必要な場合のfunctions.phpであなたの.jsファイルをキューに入れる

aom_get_page_permalink('someurl'); 

そして、あなたはJavaScriptでパーマリンクが必要な場合:

my_js_permalinks.someurl; 
関連する問題