首页 > 解决方案 > 在 PHP 中运行一个动作函数的一个特定动作

问题描述

背景:

在我的 WordPress 主题中,我有以下操作函数,它们合并了几个钩子,例如,几个函数合并为:

'single_job_listing_meta_start'

public static function template_tags() {
    add_action( 'single_job_listing_start', array( __CLASS__, 'single_job_listing_start' ), 10 );

    add_action( 'listify_single_job_listing_meta', array( __CLASS__, 'enqueue_scripts' ) );
    add_action( 'listify_single_job_listing_meta', array( __CLASS__, 'single_job_listing_meta' ) );

    add_action( 'single_job_listing_meta_start', array( __CLASS__, 'the_secondary_image' ), 7 );
    add_action( 'single_job_listing_meta_start', 'listify_the_listing_title', 10 );
    add_action( 'single_job_listing_meta_start', 'listify_the_listing_location', 20 );
    add_action( 'single_job_listing_meta_start', 'listify_the_listing_category', 30 );

    add_action( 'single_job_listing_meta_after', 'listify_the_listing_rating' );

    add_action( 'listify_single_job_listing_actions', array( __CLASS__, 'the_actions' ) );
    add_action( 'listify_single_job_listing_actions_after', array( __CLASS__, 'submit_review_link' ) );

    add_action( 'listify_single_job_listing_cover_end', array( __CLASS__, 'cover_gallery' ) );
}

期望的结果

但是,我实际上需要它背后的更精细的功能,即

array( __CLASS__, 'the_secondary_image' ) 
'listify_the_listing_title'
'listify_the_listing_location'
'listify_the_listing_category'
'listify_the_listing_rating'

解决方案尝试

通过尝试,我能够执行上述最后 4 个钩子,只需通过例如

<?php listify_the_listing_rating(); ?>

但是,我有两个问题:

  1. 鉴于这些都被挂钩(合并)到'single_job_listing_meta_start',有没有办法调用这个(合并的)动作并只执行一个特定的挂钩?如果是,例如代码将如何?

  2. 虽然我能够通过 2-5 执行上述钩子函数 <?php listify_the_listing_rating(); ?>,但我将如何执行第一个钩子array( __CLASS__, 'the_secondary_image'?我试过<?php array( __CLASS__, 'the_secondary_image') ?>了,没有用。

标签: phpwordpress

解决方案


我能够使用以下内容执行辅助图像代码:

Listify_WP_Job_Manager_Template_Single_Listing::the_secondary_image();

我相信它指的是模板文件(代码的第一部分),然后是函数(第二部分)。


推荐阅读