Woocommerce - 删除单个产品页面的超链接

时间:2016-07-31 02:49:44

标签: php wordpress woocommerce

我正在使用woocommerce,我想删除单个产品页面的超链接,因为我使用了quickview功能,使内容弹出灯箱并使单个产品页面不再需要。

但是,购物车和迷你购物车中生成的链接会链接到默认产品页面,因此我想将其删除。

我想为购物车页面做些什么:从产品缩略图中删除指向单个产品页面的超链接 我本身不是php专家,但已制作this post之后的一些进展。它适用于我的产品标题,但在购物车页面中不适用于我的产品缩略图

以下是我的cart.php的片段:

                <td class="product-thumbnail">
                    <?php
                        $thumbnail = apply_filters( 'woocommerce_cart_item_thumbnail', $_product->get_image(), $cart_item, $cart_item_key );

                        if ( ! $product_permalink ) {
                            echo $thumbnail;
                        } else {
                            printf( '%s', $thumbnail );
                        }
                    ?>
                </td>

                <td class="product-name" data-title="<?php _e( 'Product', 'woocommerce' ); ?>">
                    <?php
                        if ( ! $product_permalink ) {
                            echo apply_filters( 'woocommerce_cart_item_name', $_product->get_title(), $cart_item, $cart_item_key ) . '&nbsp;';
                        } else {
                            echo apply_filters( 'woocommerce_cart_item_name', sprintf( '%s',  $_product->get_title() ) );
                        }

                        // Meta data
                        echo WC()->cart->get_item_data( $cart_item );

                        // Backorder notification
                        if ( $_product->backorders_require_notification() && $_product->is_on_backorder( $cart_item['quantity'] ) ) {
                            echo '<p class="backorder_notification">' . esc_html__( 'Available on backorder', 'woocommerce' ) . '</p>';
                        }
                    ?>
                </td>

我想为迷你购物车做些什么:从产品缩略图和产品标题中删除指向单个产品页面的超链接

和我的mini-cart.php中的代码段:(完整的mini-cart.php代码here

            <?php
            foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
                $_product     = apply_filters( 'woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key );
                $product_id   = apply_filters( 'woocommerce_cart_item_product_id', $cart_item['product_id'], $cart_item, $cart_item_key );

                if ( $_product && $_product->exists() && $cart_item['quantity'] > 0 && apply_filters( 'woocommerce_widget_cart_item_visible', true, $cart_item, $cart_item_key ) ) {
                    $product_name      = apply_filters( 'woocommerce_cart_item_name', $_product->get_title(), $cart_item, $cart_item_key );
                    $thumbnail         = apply_filters( 'woocommerce_cart_item_thumbnail', $_product->get_image(), $cart_item, $cart_item_key );
                    $product_price     = apply_filters( 'woocommerce_cart_item_price', WC()->cart->get_product_price( $_product ), $cart_item, $cart_item_key );
                    ?>
                    <li class="<?php echo esc_attr( apply_filters( 'woocommerce_mini_cart_item_class', 'mini_cart_item', $cart_item, $cart_item_key ) ); ?>">
                        <?php
                        echo apply_filters( 'woocommerce_cart_item_remove_link', sprintf(
                            '<a href="%s" class="remove" title="%s" data-product_id="%s" data-product_sku="%s">&times;</a>',
                            esc_url( WC()->cart->get_remove_url( $cart_item_key ) ),
                            __( 'Remove this item', 'woocommerce' ),
                            esc_attr( $product_id ),
                            esc_attr( $_product->get_sku() )
                        ), $cart_item_key );
                        ?>
                        <?php if ( ! $_product->is_visible() ) : ?>
                            <?php echo str_replace( array( 'http:', 'https:' ), '', $thumbnail ) . $product_name . '&nbsp;'; ?>
                        <?php else : ?>
                                <?php echo str_replace( array( 'http:', 'https:' ), '', $thumbnail ) . $product_name . '&nbsp;'; ?>
                            </a>
                        <?php endif; ?>
                        <?php echo WC()->cart->get_item_data( $cart_item ); ?>

                        <?php echo apply_filters( 'woocommerce_widget_cart_item_quantity', '<span class="quantity">' . sprintf( '%s &times; %s', $cart_item['quantity'], $product_price ) . '</span>', $cart_item, $cart_item_key ); ?>
                    </li>
                    <?php
                }
            }
            ?>

尽管删除了<a href>标记,但产品缩略图和产品标题仍然是超链接的。

请帮助!!

超链接产品标题和缩略图的屏幕截图 enter image description here

1 个答案:

答案 0 :(得分:0)

对于cart.php 您可以更改这两行

替换

printf( '<a href="%s">%s</a>', esc_url( $product_permalink ), $thumbnail );

printf( '%s', $thumbnail );

echo apply_filters( 'woocommerce_cart_item_name', sprintf( '<a href="%s">%s</a>', esc_url( $product_permalink ), $_product->get_title() ), $cart_item, $cart_item_key );

echo apply_filters( 'woocommerce_cart_item_name', sprintf( '%s',  $_product->get_title() ), $cart_item, $cart_item_key );

或者您可以使用过滤器完成工作,如果您在子主题/ woocommerce / cart / cart.php中使用子主题进行更改。

在mini-cart.php中

替换

<a href="<?php echo esc_url( $product_permalink ); ?>">
   <?php echo str_replace( array( 'http:', 'https:' ), '', $thumbnail ) . $product_name . '&nbsp;'; ?>
</a>

<?php echo str_replace( array( 'http:', 'https:' ), '', $thumbnail ) . $product_name . '&nbsp;'; ?>

页面应该是chil-theme / woocommerce / cart / mini-cart.php

您提供给我的页面链接是订单页面,应该使用的页面是order-details-item.php

这里你应该替换

echo apply_filters( 'woocommerce_order_item_name', $product_permalink ? sprintf( '<a href="%s">%s</a>', $product_permalink, $item['name'] ) : $item['name'], $item, $is_visible );

echo apply_filters( 'woocommerce_order_item_name', $product_permalink ? sprintf( '%s', $item['name'] ) : $item['name'], $item, $is_visible );

如果您可以分享页面的屏幕截图,请告诉我,如果它不适合您,或者您可以允许我创建虚假订单,那么我可以查看它。

如果您遇到问题请告诉我。