首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何有条件地删除商店页面上的视频替换产品图像

如何有条件地删除商店页面上的视频替换产品图像
EN

WordPress Development用户
提问于 2020-04-23 15:45:25
回答 1查看 393关注 0票数 0

我正在开发WordPress (woocommerce)插件。

如果从特定产品的shop链接设置了video链接,如果没有设置video链接,我想要显示相关的产品image,那么我想要用video替换产品图像(D3页面),我怎么能这样做?

Code我正在使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
add_action( 'init', array($this, 'show_video_if_set_else_image') );
public function show_video_if_set_else_image(){

    add_action('woocommerce_before_shop_loop_item_title', 'show_video');
    function show_video(){
        $linkk = get_post_meta(get_the_ID(), 'YT_video_link', true);
        $linkk = substr($linkk, -11);
        if($linkk != ''){
            echo 'show video';
            remove_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_product_thumbnail', 10 );

            ?>

我也问了这里这个问题,请看一下。我对php中的OOP有点陌生,如果load是== empty,那么在其他部分应该做些什么,因为对于某些产品,图像加载了twice (查看给定的链接),这对我来说有点出乎意料。

请帮忙,非常感谢。谢谢。

当我在remove_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_product_thumbnail', 10 );部件中执行else时,它仍然加载第二个产品image,尽管为该产品设置了video,为什么会这样呢?

EN

回答 1

WordPress Development用户

回答已采纳

发布于 2020-04-23 19:36:25

它负载了两次,我相信它是由于另一个钩子也存在。您可能需要移除另一个不必要的钩子。实际上,您不必在另一个钩子中运行动作woocommerce_before_shop_loop_item_title

类删除操作的

示例

如果您想在类中放置一个remove_action,可以使用不同的方法。下面的示例说明了两种方法。下面的类被证明适用于放置默认的商店主题的functions.php或插件,只要站点运行时不受其他插件的干扰。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class example {
    public function __construct() {
        // option1: place here will work
        remove_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_product_thumbnail', 10 );

        // wrong demonstration: will not work because original call is not a class, it is not necessary to use class method to remove
        // remove_action( 'woocommerce_before_shop_loop_item_title', array( $this 'woocommerce_template_loop_product_thumbnail' ), 10 );

        add_action( 'init', array( $this, 'init' ) );
    }

    // option2: if you want to ***group different actions*** together, it also works.
    public function init() {
        // place here also work
        // remove_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_product_thumbnail', 10 );

        // other remove actions or actions
    } 
}

new example();

个人动作

如果您将动作移出init钩子,然后重试并移除不需要的钩子。如果您想在没有init挂钩的情况下将其添加到插件中,只需这样修改即可。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// your ' show_video' is already doing the job `show_video_if_set_else_image`
// so you might want to change this function name too
remove_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_product_thumbnail', 10 );
add_action('woocommerce_before_shop_loop_item_title', array($this, 'show_video' ) );

    function show_video(){
        $linkk = get_post_meta(get_the_ID(), 'YT_video_link', true);
        $linkk = substr($linkk, -11);
        if($linkk != ''){
            echo 'show video';
            // if you put remove_action, it will not work as expected because the remove_action is run after add_action, so before it removes, it run already.

            ?>

关于优先级

如果你想改变标题挂钩的优先级,你只需要调整优先级,比如add_action( 'woocommerce_before_shop_loop_item_title', 'some_function', 50 );。

WordPress钩子系统是一个基于事件的系统。它遵循一系列称为筛选器或操作的事件。通常,过滤器允许您覆盖一个值,而操作允许您执行额外的作业。所以它是按照优先级和顺序运行的。对于行动来说,它会在特定的时间起作用。所以一次只做一份工作。除非有特殊的原因,否则大多数情况下都不需要使用其他作业来添加作业。因为action本身独立存在于do_action()定义的不同点。

即使添加了init钩子,woocommerce_before_shop_loop_item_title的队列仍然在do_action( 'woocommerce_before_shop_loop_item_title')运行,不会在更早的时候运行。更改钩子的优先级是同一个钩子,因为可能会有其他要重写的操作。然后,您可以调整钩子以便稍后运行,以确保您的重写工作。

关于double running

可能有一些现有的woocommerce_before_shop_loop_item_title操作在做类似的事情。因此,如果它输出两次,因为您只输出了一次,而原始动作输出了一次。

如果你想删除现有的行动(S)。只需运行:(以下是Woocommerce默认操作)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
remove_action( 'woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_product_thumbnail', 10 );

您可以参考remove_action()

钩子名称、函数名和优先级必须与原始名称相同,以便删除它,因此您可以参考该源代码或在文件夹中查找代码以获得准确的信息。

票数 0
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/364912

复制
相关文章
Excel技巧:使用上方单元格的值填充空单元格
有时候,工作表列中有许多空单元格,而不是在每行都重复相同的内容,这样可以使报表更容易阅读,然而也会导致一些问题,例如不方便排序或筛选数据。
fanjy
2022/04/13
3.4K0
Excel技巧:使用上方单元格的值填充空单元格
问与答98:如何根据单元格中的值动态隐藏指定的行?
Q:我有一个工作表,在单元格B1中输入有数值,我想根据这个数值动态隐藏行2至行100。具体地说,就是在工作表中放置一个命令按钮,如果单元格B1中的数值是10时,当我单击这个命令按钮时,会显示前10行,即第2行至第11行;再次单击该按钮后,隐藏全部的行,即第2行至第100行;再单击该按钮,则又会显示第2行至第11行,又单击该按钮,隐藏第2行至第100行……也就是说,通过单击该按钮,重复显示第2行至第11行与隐藏第2行至第100行的操作。如图1所示。
fanjy
2021/03/12
6.4K0
Excel实战技巧:基于单元格的值显示相应的图片
选择零件号,显示相应的零件图;选择员工姓名,显示该员工相片,等等,都是选择单元格中的值而显示相应的图片的例子,也就是说基于单元格的值查找并显示对应的图片,单元格的值改变,图片也自动改变。效果如下图1所示。
fanjy
2023/02/24
9.5K0
Excel实战技巧:基于单元格的值显示相应的图片
问与答95:如何根据当前单元格中的值高亮显示相应的单元格?
Q:这个问题很奇怪,需要根据在工作表Sheet1中输入的数值高亮显示工作表Sheet2中相应的单元格。具体如下:
fanjy
2021/03/12
3.9K0
VBA代码:将水平单元格区域转换成垂直单元格区域
下图1所示是一个常见的需求,在多个列中放置着每个月份的数据,需要将月份移到单个列中,同时保留报表中的所有描述性信息。
fanjy
2022/11/16
1.4K0
VBA代码:将水平单元格区域转换成垂直单元格区域
VBA代码:将垂直单元格区域转换成水平单元格区域
有时候,我们想将垂直列表中的数据转换为水平列表,通常可以使用数据透视表来完成。假设数据是唯一ID,并且客户端可以附加到相同的唯一ID,如下图1所示。
fanjy
2022/11/16
3640
VBA代码:将垂直单元格区域转换成水平单元格区域
使用Python遍历修改Excel单元格的值
为了这位老哥的学习,于是就用Python帮了一把,一共300多题,要是一个个来还不得累死。
SingYi
2022/07/14
2.2K0
使用Python遍历修改Excel单元格的值
Excel公式练习64: 获取单元格区域中移除空单元格后的值
导语:在前面的文章中有一些与本文类似的案例。要想熟练掌握一门技术,就是要不断地反复练习。
fanjy
2020/05/25
3.1K0
Excel公式练习64: 获取单元格区域中移除空单元格后的值
Extjs grid设置单元格字体颜色,单元格背景颜色,行背景颜色
1.用GridView中的getRowClass方法来实现颜色的渲染,status是在Store中定义的字段
全栈程序员站长
2022/09/18
3.4K0
Extjs grid设置单元格字体颜色,单元格背景颜色,行背景颜色
使用VBA跨单元格分配值
这是在exceloffthegrid.com中看到的一个案例,一个非常有用的节省时间的宏:在单元格之间分配值。
fanjy
2023/08/29
3200
使用VBA跨单元格分配值
ASP.NET 最佳DataGrid读取单元格的值
 参考:http://blog.csdn.net/aiouwen521/article/details/8490742
跟着阿笨一起玩NET
2018/09/19
1.2K0
点击table的td单元格出现dialog弹窗,获取值后将值放回td单元格
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/106388.html原文链接:https://javaforall.cn
全栈程序员站长
2022/06/30
2.3K0
Element Plus修改表格行、单元格样式
主要是通过 row-style属性来实现。它是行的 style的回调方法,可以通过它来实现设置某一行的样式。
赤蓝紫
2023/03/16
3.8K0
Element Plus修改表格行、单元格样式
VBA专题13:引用单元格/单元格区域的方法
在VBA中,可以通过多种不同的方式来引用工作表中的单元格/单元格区域。下面是一些引用方法的汇总。
fanjy
2021/08/31
3.9K0
Excel VBA取白色单元格内容黄色的单元格的Address
哆哆Excel
2023/09/09
3470
Excel VBA取白色单元格内容黄色的单元格的Address
单元格的点击问题
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/51578744
用户1451823
2018/09/13
6460
单元格的点击问题
Excel公式技巧82:查找指定值所在的单元格
通常,我们会根据指定的位置查找值,例如使用VLOOKUP函数查找指定行列单元格中的值。然而,如果我们知道了某个值,需要查找这个值所在的单元格,这如何使用公式呢?
fanjy
2021/06/01
10.6K0
Excel公式技巧82:查找指定值所在的单元格
ag-grid 设置单元格以及行的颜色「建议收藏」
在使用ag-grid的时候有通过单元格的值设置不同行颜色,然后百度了网上的方法,汇总了一下,具体效果图如下:
全栈程序员站长
2022/09/14
3.5K0
ag-grid 设置单元格以及行的颜色「建议收藏」
【HTML】HTML 表格总结 ★★★ ( 表格标签 | 行标签 | 单元格标签 | 表格标签属性 | 表头单元格标签 | 表格标题标签 | 合并单元格 )
表头单元格 可以在表格中 用作第一排 作为表格 的 表头 使用 , 表头单元格 中的 文本设置 可以与 普通单元格 中的文本设置 不同 ;
韩曙亮
2023/03/30
3.1K0
【HTML】HTML 表格总结 ★★★ ( 表格标签 | 行标签 | 单元格标签 | 表格标签属性 | 表头单元格标签 | 表格标题标签 | 合并单元格 )
SAP abap ALV的列颜色、、行颜色、单元格颜色设置
matinal
2023/10/13
4290

相似问题

基于右边及以上单元格值的单元格之和

23

基于唯一单元格值检索GridView行

23

插入特定单元格值以上的行

12

Excel:基于行搜索值动态引用单元格范围

10

基于单元格值的矩阵行单元格采样

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文