slidej
フォーラムへの返信
-
フォーラム: プラグイン
返信が含まれるトピック: カスタム投稿タイプのページタイトルを取得したドロップダウンを作リたいです。<?php function dequeue_devicepx() { wp_dequeue_script( 'devicepx' ); } add_action( 'wp_enqueue_scripts', 'dequeue_devicepx', 20 ); add_action('init','add_categories_for_pages'); function add_categories_for_pages(){ register_taxonomy_for_object_type('category', 'page'); } add_action( 'pre_get_posts', 'nobita_merge_page_categories_at_category_archive' ); function nobita_merge_page_categories_at_category_archive( $query ) { if ( $query->is_category== true && $query->is_main_query() ) { $query->set('post_type', array( 'post', 'page', 'nav_menu_item')); } } add_filter( 'arexworks_get_global_loop_variable', 'harman_set_global_loop_variable' ); if(!function_exists('harman_set_global_loop_variable')){ function harman_set_global_loop_variable(){ return 'harman_loop'; } } /* * Load Frameworks */ require_once get_template_directory() . '/framework/load.php'; /** * Theme support & Theme setup */ if ( ! isset( $content_width ) ) { $content_width = 1170; } add_action('after_setup_theme', 'harman_after_setup_theme'); if(!function_exists('harman_after_setup_theme')){ function harman_after_setup_theme(){ /** * Load Text domain */ load_theme_textdomain( 'harman', get_template_directory() . '/languages' ); load_child_theme_textdomain( 'harman', get_stylesheet_directory() . '/languages' ); /** * Add theme support */ add_theme_support( 'woocommerce'); if(defined('WOOCOMMERCE_VERSION')){ if(version_compare( WOOCOMMERCE_VERSION, "2.1" ) >= 0){ add_filter( 'woocommerce_enqueue_styles', '__return_empty_array' ); } else { define( 'WOOCOMMERCE_USE_CSS', false ); } } add_theme_support( 'automatic-feed-links' ); add_theme_support( 'title-tag' ); add_theme_support( 'custom-header' ); add_theme_support( 'custom-background' ); add_theme_support( 'post-thumbnails' ); add_theme_support( 'post-formats', array( 'quote', 'image', 'video', 'link', 'audio', 'gallery' ) ); add_theme_support( 'menus' ); register_nav_menus( array( 'account-nav' => esc_attr__( 'Account Navigation', 'harman' ), 'main-nav' => esc_attr__( 'Main Navigation', 'harman' ), ) ); add_editor_style( 'editor-style.css' ); } } add_filter('harman_filter_show_page_title', '__return_false'); function section_feed_shortcode( $atts ) { extract( shortcode_atts( array( 'limit' => -1, 'type' => 'post'), $atts ) ); $paged = get_query_var('paged') ? get_query_var('paged') : 1; query_posts( array ( 'posts_per_page' => $limit, 'post_type' => $type, 'order' => 'ASC', 'orderby' =>'menu_order', 'paged' => $paged ) ); $list = ' '; while ( have_posts() ) { the_post(); $list .= '<article class="listing-view clearfix">' . '<div class="listing-content">' . '<h3><a href="' . get_permalink() . '">' . get_the_title() . '</a></h3>' .'<p>' . get_the_excerpt() . '</p>' . '<a href="' . get_permalink() . '">' . '続きを読む »' . '</a>' . '</div>' . '<a class="listing-thumb" href="' . get_permalink() . '">' . get_the_post_thumbnail($page->ID, 'listing-thumb') . '<span></span></a>' . '</article>'; } return '<div class="listings clearfix">' . $list . '<div class="nav-previous">' . get_next_posts_link( __( '<span class="meta-nav">←</span> Older posts' ) ) . '</div>' . '<div class="nav-next">' . get_previous_posts_link( __( 'Newer posts <span class="meta-nav">→</span>' ) ) . '</div>' . '</div>' . wp_reset_query(); } add_shortcode( 'feed', 'section_feed_shortcode' ); /* ポートフォリオ選択肢の表示 */ add_action( 'woocommerce_after_order_notes', 'my_custom_checkout_field' ); function my_custom_checkout_field( $checkout ) { echo '<div id="portfolio_title_field"'; woocommerce_form_field('portfolio_title', array( 'type' => 'select', 'label' => 'ご依頼のデザイナーをお選びください', 'options' => get_portfolio() ), $checkout->get_value( 'portfolio_title' ) ); echo '</div>'; } /* ポートフォリオの選択チェック */ add_action('woocommerce_checkout_process', 'my_custom_checkout_field_process'); function my_custom_checkout_field_process() { global $woocommerce; if (!isset($_POST['portfolio_title']) || empty($_POST['portfolio_title'])) { wc_add_notice('ご依頼のデザイナーを選択してください。', 'error'); } } /* 選択されているポートフォリオタイトルを保存 */ add_action('woocommerce_checkout_update_order_meta', 'my_custom_checkout_field_update_order_meta'); function my_custom_checkout_field_update_order_meta( $order_id ) { if ($_POST['portfolio_title']) update_post_meta( $order_id, 'portfolio_title', esc_attr($_POST['portfolio_title'])); } /* 購入されたポートフォリオタイトルを表示 */ add_action( 'woocommerce_admin_order_data_after_billing_address', 'my_custom_checkout_field_display_admin_order_meta', 10, 1 ); function my_custom_checkout_field_display_admin_order_meta($order){ echo '<p><strong>ご依頼のデザイナー:</strong> ' . get_post_meta($order->post->ID, 'portfolio_title', true) . '</p>'; } /* メールに追加 */ add_filter( 'woocommerce_email_order_meta_fields', 'custom_woocommerce_email_order_meta_fields', 10, 3 ); function custom_woocommerce_email_order_meta_fields( $fields, $sent_to_admin, $order ) { $fields['meta_key'] = array( 'label' => __( 'ご依頼のデザイナー' ), 'value' => get_post_meta($order->post->ID, 'portfolio_title', true), ); return $fields; } /* ポートフォリオ選択肢の生成 */ function get_portfolio(){ $portfolio = array('' => ''); $args = array( 'post_type' => 'portfolio', 'numberposts' => 0 ); $posts_array = get_posts( $args ); $size = count( $posts_array ); for( $i=0 ; $i < $size ; $i++ ){ $portfolio += array($posts_array[$i]->post_title => $posts_array[$i]->post_title); } wp_reset_postdata(); return $portfolio; }
適当にやって見たのですが、メールの画面に関しては
/* メールに追加 */ add_filter( 'woocommerce_email_order_meta_fields', 'custom_woocommerce_email_order_meta_fields', 10, 3 ); function custom_woocommerce_email_order_meta_fields( $fields, $sent_to_admin, $order ) { $fields['meta_key'] = array( 'label' => __( 'ご依頼のデザイナー' ), 'value' => get_post_meta($order->post->ID, 'portfolio_title', true), ); return $fields; }
で追加することはできました。
フォーラム: プラグイン
返信が含まれるトピック: カスタム投稿タイプのページタイトルを取得したドロップダウンを作リたいです。フォーラム: プラグイン
返信が含まれるトピック: カスタム投稿タイプのページタイトルを取得したドロップダウンを作リたいです。動きました。本当にありがとうございます!
管理画面には表示されているので、フィールドは機能していました!!
本当にありがとうございます。これが最後で、
注文完了画面と注文完了メールにもポートフォリオのタイトルが出るようにしたいです。
お客様への確認作業が必要なので追加したいのですが、下のコードを追加したら良さそうと海外のHPのソースを見てたのですが、どう思いますでしょうか。/** * Add the fields to order emails **/ add_action( "woocommerce_email_after_order_table", "my_woocommerce_email_after_order_table", 10, 1); /* ADD THE SAME FUNCTION AGAIN TO RUN ON THANK YOU PAGE */ add_action( 'woocommerce_order_details_after_order_table', "my_woocommerce_email_after_order_table", 10, 1 );
フォーラム: プラグイン
返信が含まれるトピック: カスタム投稿タイプのページタイトルを取得したドロップダウンを作リたいです。RocketMartue様
1エラーのスクリーンショット
http://q2.upup.be/1XT4DJKmLf
こちらにエラーのスクリーンショットがあります。普通、入力の不備等があれば、入力に不備があります等のエラーメッセージが出ますが、文字がないエラーが出ます。手順通りに一応スクリーンショットをとりました。2
同時にクロームのコンソールを見るとFailed to load resource: the server responded with a status of 500 () https://xn--eck9awc8j315nbkc.jp/checkout/?wc-ajax=checkout
というようなエラーが出ます。
こちらは通常でないエラーでございます。
3また、注文をした場合ですが、正常に注文処理が完了してません。
ご厚意ありがとうございます。
フォーラム: プラグイン
返信が含まれるトピック: カスタム投稿タイプのページタイトルを取得したドロップダウンを作リたいです。フォーラム: プラグイン
返信が含まれるトピック: カスタム投稿タイプのページタイトルを取得したドロップダウンを作リたいです。munyagu様
/* ポートフォリオ選択肢の表示 */ add_action( 'woocommerce_after_order_notes', 'my_custom_checkout_field' ); function my_custom_checkout_field( $checkout ) { echo '<div id="porfolio_title_field"'; woocommerce_form_field('porfolio_title', array( 'type' => 'select', 'label' => 'ポートフォリオタイトル', 'options' => get_porfolio() ), $checkout->get_value( 'porfolio_title' ) ); echo '</div>'; } /* ポートフォリオの選択チェック */ add_action('woocommerce_checkout_process', 'my_custom_checkout_field_process'); function my_custom_checkout_field_process() { global $woocommerce; if (isset($_POST['porfolio_title']) && !empty($_POST['porfolio_title'])) { $woocommerce->add_error( __('ポートフォリオのタイトルを選択してください。') ); } } /* 選択されているポートフォリオタイトルを保存 */ add_action('woocommerce_checkout_update_order_meta', 'my_custom_checkout_field_update_order_meta'); function my_custom_checkout_field_update_order_meta( $order_id ) { if ($_POST['porfolio_title']) update_post_meta( $order_id, 'porfolio_title', esc_attr($_POST['porfolio_title'])); } /* 購入されたポートフォリオタイトルを表示 */ add_action( 'woocommerce_admin_order_data_after_billing_address', 'my_custom_checkout_field_display_admin_order_meta', 10, 1 ); function my_custom_checkout_field_display_admin_order_meta($order){ echo '<p><strong>ポートフォリオタイトル:</strong> ' . $order->order_custom_fields['porfolio_title'][0] . '</p>'; } /* ポートフォリオ選択肢の生成 */ function get_porfolio(){ $porfolio = array('' => ''); $args = array( 'post_type' => 'portfolio', 'numberposts' => 0 ); $posts_array = get_posts( $args ); $size = count( $posts_array ); for( $i=0 ; $i < $size ; $i++ ){ $porfolio += array($posts_array[$i]->post_title => $posts_array[$i]->post_title); } wp_reset_postdata(); return $porfolio; }
で取得する投稿タイプをporfolioからportfolioに変更したら動きました!!!!!
なお、他の関数は$porfolioはおそらく他のプラグイン等でも使ってないと思うのでエラーが出ないで済みました。>>RocketMartue様
>>Du bist der Lenz様ここまで来るまでに至った皆様のお力添えに感謝します。ありがとうございます。
フォーラム: プラグイン
返信が含まれるトピック: カスタム投稿タイプのページタイトルを取得したドロップダウンを作リたいです。>>初めまして。RocketMartue様。
Woo Checkout Field Editor Proというプラグインで入力項目を変えております。
function.phpを触るのが面倒くさかったのでプラグインに頼ってますが、デフォルトの状態であったと仮定して話を進めていただいて構いません。なので、function.phpにコードを追加するのだろうと予想しています。- この返信は7年、 3ヶ月前にslidejが編集しました。
フォーラム: プラグイン
返信が含まれるトピック: カスタム投稿タイプのページタイトルを取得したドロップダウンを作リたいです。>>Du bist der Lenz様
お返事、親切にありがとうございます。すごい心強いです。ポートフォリオの投稿タイプに在籍デザイナーの作品が見えるようにを割り当てるつもりです。
で、その作品を見て注文すると言う流れなので、ポートフォリオの投稿タイプに対して、その人の名前がドロップダウンで選択できるようにすると言う仕様でございます。http://名刺デザイン.jp
http://名刺デザイン.jp/portfolio/- この返信は7年、 3ヶ月前にslidejが編集しました。
フォーラム: プラグイン
返信が含まれるトピック: カスタム投稿タイプのページタイトルを取得したドロップダウンを作リたいです。お返事大変感謝申し上げます。ポートフォリオに表示させるものは、名刺デザインの例ではなく、名刺デザインをしてくれる人の名前に設定しているのですが、おっしゃる通りでございます。人の名前の一覧が出て、それが選択できるようになればいいと思っております。
- この返信は7年、 3ヶ月前にslidejが編集しました。
フォーラム: プラグイン
返信が含まれるトピック: カスタム投稿タイプのページタイトルを取得したドロップダウンを作リたいです。お返事ありがとうございます。説明が悪かったみたいですみません。
カートに入れた後で、個人情報を入力するページがありますよね。(画像です。少しいじっていますが、一般的な入力事項の場合としてご回答いただければ幸いです。)
そこで、カスタム投稿タイプportfolioのページタイトル全てをドロップダウンリストに表示させたいと思っています。
具体例は
カスタム投稿タイプporfolioにA・B・C・Dの四つのページ(それぞれの投稿のタイトルはa・b・c・d)があったとした場合にドロップダウンにa・b・c・dが表示されて選択できるようにしようと思っています。webから見つけたのですが、下のコードをうまくつなぎ合わせる予感がしています。難しいです。
1 ポートフォリオのタイトルを取得し表示するphp <?php $args = array( 'numberposts' => 5, //表示(取得)する記事の数 'post_type' => ‘portfolio’ //投稿タイプの指定 ); $customPosts = get_posts($args); if($customPosts) : foreach($customPosts as $post) : setup_postdata( $post ); ?> <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> <?php endforeach; ?> <?php else : //記事が無い場合 ?> <li><p>記事はまだありません。</p></li> <?php endif; wp_reset_postdata(); //クエリのリセット ?> 2function.phpに記述しフィールドを加えるもの(ドロップダウンではありませんが) add_action( 'woocommerce_after_order_notes', 'my_custom_checkout_field' ); function my_custom_checkout_field( $checkout ) { echo '<div id="my_custom_checkout_field"><h2>' . __('My Field') . '</h2>'; woocommerce_form_field( 'my_field_name', array( 'type' => 'text', 'class' => array('my-field-class form-row-wide'), 'label' => __('Fill in this field'), 'placeholder' => __('Enter something'), ), $checkout->get_value( 'my_field_name' )); echo '</div>'; }