从插件文件的函数调用变量



这是一个与WordPress相关的问题,但却是一个普遍的问题。

我使用的插件有一个函数,其中有一个我想在模板中使用的变量,但我不知道如何调用该变量。就其本身而言,使用echo命令,什么都不会显示。函数类(如果需要(是class_wpp_property_inport,我需要的变量是$import_time这是实际的函数:

static public function wpp_publish_box_options( $id ) {
global $post, $wp_properties;
if( !$wpp_import_schedule_id = get_post_meta( $post->ID, 'wpp_import_schedule_id', true ) ) {
return;
}
//** Get time stamp from new format ( Version 2.6.0+ ) */
$import_time = get_post_meta( $post->ID, 'wpp_import_time', true );
//** Get time stamp from old meta_key ( pre-version 2.6.0 ) if new meta_key does not exist */
if( empty( $import_time ) ) {
$import_time = get_post_meta( $post->ID, 'wpp_xml_import', true );
}
$import_url = admin_url( "edit.php?post_type=property&page=wpp_property_import#{$wpp_import_schedule_id}" );
$import_name = $wp_properties[ 'configuration' ][ 'feature_settings' ][ 'property_import' ][ 'schedules' ][ $wpp_import_schedule_id ][ 'name' ];
$disable_update = get_post_meta( $post->ID, 'wpp::disable_xmli_update', true );
$text = __( 'Ignore updates on XMLI process', ud_get_wpp_importer()->domain );
if( !empty( $import_time ) ) {
$import_time = date_i18n( __( 'M j, Y @ G:i', ud_get_wpp_importer()->domain ), strtotime( $import_time ) );
?>
<div class="misc-pub-section-last">
<?php echo WPP_F::checkbox( "name=wpp::disable_xmli_update&id=wpp_xmli_disable_update&label=$text", $disable_update ); ?>
</div>
<div class="misc-pub-section xml_import_time misc-pub-section-last">
<span class="wpp_i_time_stamp"><?php printf( __( 'Imported on: <b>%1$s</b> <a href="%2$s" title="%3$s">Importer</a>', ud_get_wpp_importer()->domain ), $import_time, $import_url, $import_name ); ?>
<b></b></span>
</div>
<?php
}

}

关于变量作用域的文档将比我更好地解释这一点,请参阅本文了解更多详细信息,但要点如下:

变量的作用域是在其中定义它的上下文。大多数情况下,所有PHP变量都只有一个作用域。这个单独的作用域也涵盖了包含的和必需的文件。

但是,PHP允许您使用global关键字滥用作用域。它的名称具有误导性,基本上它允许您将在当前作用域之外定义的变量导入到当前作用域中。$import_time需要一个$post,它应该在模板页面上可用,所以在函数中调用global $post应该允许我们访问它

调用CCD_ 5将不起作用;全球";(从字面上讲,最重要的是(像$post一样。

// in functions.php, or wherever you want
function convertImportTime(?string $import_time, string $format = 'M j, Y @ G:i'): ?string
{
if (!$import_time) {
return null;
}
return date_i18n(
__($format, ud_get_wpp_importer()->domain),
strtotime($import_time)
); 
}
function getImportTime(): ?string
{
global $post;
if (!$post) {
return null;
}
$import_time = get_post_meta($post->ID, 'wpp_import_time', true);
if (!$import_time) {
$import_time = get_post_meta($post->ID, 'wpp_xml_import', true);
}
return convertImportTime($import_time);
}
// template.php
<h1><?php echo getImportTime(); ?></h1>

最新更新