テーマ内で囲みショートコードを使用する際にHTMLとPHPが混在する長いコードを囲みたいときにどのように記入したらいいのでしょうか?
わかりやすく以下の位置にあるショートコードで、囲まれている部分をメンバー対象外の方に非表示にしたいです。
global $product; if ( ! $product->is_purchasable() ) { return; } echo wc_get_stock_html( $product ); // WPCS: XSS ok. if ( $product->is_in_stock() ) : ?> <?php do_action( 'woocommerce_before_add_to_cart_form' ); ?> [swpm_protected visible_to = "expired"]※ここに入れたい <form class="cart" action="<?php echo esc_url( apply_filters( 'woocommerce_add_to_cart_form_action', $product->get_permalink() ) ); ?>" method="post" enctype='multipart/form-data'> <?php do_action( 'woocommerce_before_add_to_cart_button' ); ?> <?php do_action( 'woocommerce_before_add_to_cart_quantity' ); woocommerce_quantity_input( array( 'min_value' => apply_filters( 'woocommerce_quantity_input_min', $product->get_min_purchase_quantity(), $product ), 'max_value' => apply_filters( 'woocommerce_quantity_input_max', $product->get_max_purchase_quantity(), $product ), 'input_value' => isset( $_POST['quantity'] ) ? wc_stock_amount( wp_unslash( $_POST['quantity'] ) ) : $product->get_min_purchase_quantity(), // WPCS: CSRF ok, input var ok. ) ); do_action( 'woocommerce_after_add_to_cart_quantity' ); ?> <button type="submit" name="add-to-cart" value="<?php echo esc_attr( $product->get_id() ); ?>" class="single_add_to_cart_button button alt"><?php echo esc_html( $product->single_add_to_cart_text() ); ?></button> <?php do_action( 'woocommerce_after_add_to_cart_button' ); ?> </form> [/swpm_protected] ※ここに入れたい <?php do_action( 'woocommerce_after_add_to_cart_form' ); ?> <?php endif; ?>
試しに以下のような書き方をしてみましたがうまく表示できません。
<?php echo do_shortcode('[swpm_protected visible_to = "expired"]' . do_action( 'woocommerce_before_add_to_cart_form'); echo '<form class="cart" action=" '.echo esc_url( apply_filters( 'woocommerce_add_to_cart_form_action', $product->get_permalink() ) ); .' " method="post" enctype="multipart/form-data"> '; do_action( 'woocommerce_before_add_to_cart_button' ); do_action( 'woocommerce_before_add_to_cart_quantity' ); woocommerce_quantity_input( array( 'min_value' => apply_filters( 'woocommerce_quantity_input_min', $product->get_min_purchase_quantity(), $product ), 'max_value' => apply_filters( 'woocommerce_quantity_input_max', $product->get_max_purchase_quantity(), $product ), 'input_value' => isset( $_POST['quantity'] ) ? wc_stock_amount( wp_unslash( $_POST['quantity'] ) ) : $product->get_min_purchase_quantity(), // WPCS: CSRF ok, input var ok. ) ); do_action( 'woocommerce_after_add_to_cart_quantity' ); echo '<button type="submit" name="add-to-cart" value=" '.echo esc_attr( $product->get_id() ).' " class="single_add_to_cart_button button alt">'.echo esc_html( $product->single_add_to_cart_text() ).'</button>'; do_action( 'woocommerce_after_add_to_cart_button' ); echo '</form>'; do_action( 'woocommerce_after_add_to_cart_form' ); . '[/swpm_protected]'); ?>
以下の方法も試してみましたが、うまく変数にも入れられませんでした。
https://webllica.com/wordpress-theme-templete-short-code/
https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/do_shortcode
そもそも、これだけのコードをテーマ内でdo_shortcodeで使えるものなのでしょうか?
詳しい方のアドバイスを頂けたら嬉しいです。
よろしくお願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。