我使用以下代码来显示包含当前产品页面中的一些信息的模式:

function visualizer_modal() {
    if(!is_product()) {
        return;
    }
    global $product;
    ?>
    <div class="visualizer-modal">
        <div class="modal-header">
            <button type="button" class="close">&times;</button>
            <h4 class="modal-title">Customize & Buy</h4>
        </div>
        <div class="modal-body">
            <img
                src="<?php wp_get_attachment_url($product->get_id()) ?>" 
                alt="<?php $product->get_name() ?> image" />
        </div>
    </div>
    <?php
}

它是从使用下面这行代码创建按钮的函数中调用的:

add_action('wp_footer', [$this, 'visualizer_modal']);

然而,我没有收到任何产品信息.我只从alt属性中得到了破碎的图像图标和单词"图像".我以前试过使用print_footer_scripts而不是wp_footer,但我得到了同样的结果.我也使用了wp_get_attachment_image_src来try 获取产品图像,但这也不起作用,也解释不了为什么我无法在alt中获取产品名称.

我刚开始为WordPress和WooCommerce进行开发,所以我不确定为什么$product不能给我任何东西.是不是因为我是在产品模板之后从页面的页脚调用它?或者这里还发生了其他什么事?

注意:对于上面的代码块,我将img标记全部放在一行上,我只是在这里将其分开,以使其更具可读性.

推荐答案

您的代码中有许多错误:

  • wp_get_attachment_url()需要图像附件ID,而不是产品ID,因此您将使用$product->get_image_id()来实现该目的.
  • 您需要将echowp_get_attachment_url()$product->get_name()相加才能显示某些内容.
  • 你可以直接用$product->get_image()来代替wp_get_attachment_url().

try 以下操作:

function visualizer_modal() {
    if( ! is_product() ) return;
    global $product;
    ?>
    <div class="visualizer-modal">
        <div class="modal-header">
            <button type="button" class="close">&times;</button>
            <h4 class="modal-title"><?php _e('Customize & Buy'); ?></h4>
        </div>
        <div class="modal-body">
        <?php echo $product->get_image('full', ['alt' => $product->get_name().' image']); ?>
        </div>
    </div>
    <?php
}

add_action('wp_footer', [$this, 'visualizer_modal']);

应该能行得通.

Php相关问答推荐

在不刷新页面的情况下无法使用JQuery更新id

CodeIgniter AJAX表格提交中的CSRF token 再生问题

WooCommerce管理订单列表自定义列不显示值

WooCommerce:在 checkout 审核单和发票中显示定制产品数据

WooCommerce-在选定类别中每消费X个金额即可添加免费礼物

如果为布尔值,则 for each 循环重新启动

从字符串转换日期和/或时间时,Laravel转换失败

如何在WordPress REST API中判断应用程序密码

在WooCommerce中只允许高价产品的BACS付款

将购物车按钮重定向到Checkout-Wooccommerce

Woocommerce单一产品Ajax添加到带有自定义购物车项目数据的购物车

打折时更改 Woocommerce 产品名称

使用自定义插件中的 WooCommerce 模板发送自定义邮箱

使用 wp_footer 挂钩添加一些 CSS 不起作用

Firefox 115 会话行为:为什么页面无法找到要加载的现有会话 ID?

添加或删除优惠券后自动刷新 WooCommerce checkout 表单字段

Symfony 迁移判断器在我的工作中失控

Laravel 模型将日期保存为空

Symfony 6 中的入口点 (public/index.php) - 它是如何工作的?

获取具有所有特定相关模型的模型