フォーラムへの返信

10件の返信を表示中 - 1 - 10件目 (全10件中)
  • トピック投稿者 slidej

    (@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() . '">' . '続きを読む &raquo;' . '</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">&larr;</span> Older posts' ) ) . '</div>'
    . '<div class="nav-next">' . get_previous_posts_link( __( 'Newer posts <span class="meta-nav">&rarr;</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;
    }
    

    で追加することはできました。

    トピック投稿者 slidej

    (@slidej)

    トピック投稿者 slidej

    (@slidej)

    動きました。本当にありがとうございます!
    管理画面には表示されているので、フィールドは機能していました!!
    本当にありがとうございます。

    これが最後で、
    注文完了画面と注文完了メールにもポートフォリオのタイトルが出るようにしたいです。
    お客様への確認作業が必要なので追加したいのですが、下のコードを追加したら良さそうと海外の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 );
    トピック投稿者 slidej

    (@slidej)

    RocketMartue様

    1エラーのスクリーンショット
    http://q2.upup.be/1XT4DJKmLf
    こちらにエラーのスクリーンショットがあります。普通、入力の不備等があれば、入力に不備があります等のエラーメッセージが出ますが、文字がないエラーが出ます。手順通りに一応スクリーンショットをとりました。


    同時にクロームのコンソールを見ると

    Failed to load resource: the server responded with a status of 500 () https://xn--eck9awc8j315nbkc.jp/checkout/?wc-ajax=checkout

    というようなエラーが出ます。

    こちらは通常でないエラーでございます。

    3また、注文をした場合ですが、正常に注文処理が完了してません。

    ご厚意ありがとうございます。

    • この返信は7年、 3ヶ月前にslidejが編集しました。
    • この返信は7年、 3ヶ月前にslidejが編集しました。
    トピック投稿者 slidej

    (@slidej)

    なんども失礼してしております。フォームが追加はできたもののデータをポストするときにエラーが出ます。

    エラーを探るべく少し研究してみようかなと思いますが、再び情報を共有させてくださいませ。
    失礼しております。

    • この返信は7年、 3ヶ月前にslidejが編集しました。
    • この返信は7年、 3ヶ月前にslidejが編集しました。
    トピック投稿者 slidej

    (@slidej)

    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様

    ここまで来るまでに至った皆様のお力添えに感謝します。ありがとうございます。

    トピック投稿者 slidej

    (@slidej)

    >>初めまして。RocketMartue様。
    Woo Checkout Field Editor Proというプラグインで入力項目を変えております。
    function.phpを触るのが面倒くさかったのでプラグインに頼ってますが、デフォルトの状態であったと仮定して話を進めていただいて構いません。なので、function.phpにコードを追加するのだろうと予想しています。

    • この返信は7年、 3ヶ月前にslidejが編集しました。
    トピック投稿者 slidej

    (@slidej)

    >>Du bist der Lenz様
    お返事、親切にありがとうございます。すごい心強いです。

    ポートフォリオの投稿タイプに在籍デザイナーの作品が見えるようにを割り当てるつもりです。
    で、その作品を見て注文すると言う流れなので、ポートフォリオの投稿タイプに対して、その人の名前がドロップダウンで選択できるようにすると言う仕様でございます。

    http://名刺デザイン.jp
    http://名刺デザイン.jp/portfolio/

    • この返信は7年、 3ヶ月前にslidejが編集しました。
    トピック投稿者 slidej

    (@slidej)

    お返事大変感謝申し上げます。ポートフォリオに表示させるものは、名刺デザインの例ではなく、名刺デザインをしてくれる人の名前に設定しているのですが、おっしゃる通りでございます。人の名前の一覧が出て、それが選択できるようになればいいと思っております。

    • この返信は7年、 3ヶ月前にslidejが編集しました。
    トピック投稿者 slidej

    (@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>';
    
    }
    • この返信は7年、 3ヶ月前にslidejが編集しました。
    • この返信は7年、 3ヶ月前にslidejが編集しました。
    • この返信は7年、 3ヶ月前にslidejが編集しました。
10件の返信を表示中 - 1 - 10件目 (全10件中)