为什么子目录中的函数.php文件不能初始化并覆盖父目录?

时间:2018-08-11 作者:James

晚上好

我对函数进行了一些修改。php文件来完成我目前的wordpress网站开发。

我已经完成了文件中的新代码,并将编辑后的函数文件上载到子主题。该代码只是将分类广告网站中广告上的元数据单词“new”替换为“new with tags”。

这样做之后,我所做的更改并没有对父函数进行放置。php文件。

在我的子函数文件中是否有一些特定的操作必须覆盖父函数?

请参阅以下代码。(子主题->functions.php)

<?php
    add_action( \'wp_enqueue_scripts\', \'theme_enqueue_styles\', 12 );
    function theme_enqueue_styles() {
        wp_enqueue_style( \'parent-style\', get_template_directory_uri() . \'/style.css\' );
    }

    function adifier_custom_meta() {
        $meta_boxes = array();

        $advert_details = array(
            array(
                \'id\'                => \'advert_cond\',
                \'name\'              => esc_html__( \'Condition\', \'adifier\' ),
                \'type\'              => \'select\',
                \'options\'           => array(
                \'0\' => esc_html__( \'-Select-\', \'adifier\' ),
                \'1\' => esc_html__( \'New with tags\', \'adifier\' ),
                \'2\' => esc_html__( \'New with tags\', \'adifier\' ),
                \'3\' => esc_html__( \'Used with tags\', \'adifier\' ),
                \'4\' => esc_html__( \'For Parts Or Not Working\', \'adifier\' ),
            ),
            \'values_callback\'   => \'adifier_get_advert_meta\',
            \'save_callback\'     => \'adifier_save_advert_meta\',          
        ),
    );
?>

1 个回复
SO网友:kashalo

因此,为了实现您的目标,您需要删除元框,并使用包含新值的新回调重新添加它;

so lets assume originally you have the meta-box added as below :

function adifier_custom_meta()
{
    $screens = [\'page\', \'post\'];
    foreach ($screens as $screen) {
        add_meta_box(
            \'advert_cond\', // Unique ID
            esc_html__(\'Condition\', \'adifier\'), // Box title
            \'adifier_get_advert_meta\', // Content callback, must be of type callable
            $screen, // Post type,
            \'side\'
        );
    }
}
add_action(\'add_meta_boxes\', \'adifier_custom_meta\');
and the original call-back output as following :

function adifier_get_advert_meta($post)
{
    $value = get_post_meta($post->ID, \'_advert_cond_meta_key\', true);
    ?>
    <label for="advert_cond">Description for this field</label>
    <select name="advert_cond" id="advert_cond" class="postbox">
        <option value="0"><?php echo esc_html__(\'-Select-\', \'adifier\') ?></option>
        <option value="1" <?php selected($value, \'1\');?>><?php echo esc_html__(\'New with tags\', \'adifier\') ?></option>
        <option value="1" <?php selected($value, \'2\');?>><?php echo esc_html__(\'New with tags\', \'adifier\') ?></option>
        <option value="3" <?php selected($value, \'3\');?>><?php echo esc_html__(\'Used with tags\', \'adifier\') ?></option>
        <option value="4" <?php selected($value, \'4\');?>><?php echo esc_html__(\'For Parts Or Not Working\', \'adifier\') ?></option>

    </select>
    <?php
}
in order to change above we need to add the following functions:

add_action(\'add_meta_boxes\', \'adifier_custom_meta2\');
function adifier_custom_meta2()
{
    $screens = [\'page\', \'post\'];
    remove_meta_box(\'advert_cond\', $screens, \'side\');
    add_meta_box(
        \'advert_cond\', // Unique ID
        esc_html__(\'Condition\', \'adifier\'), // Box title
        \'adifier_get_advert_meta2\', // Content callback, must be of type callable
        $screens, // Post type,
        \'side\'
    );
}

and now we will add our new call-back output with our new values :

function adifier_get_advert_meta2($post)
{
    $value = get_post_meta($post->ID, \'_advert_cond_meta_key\', true);
    ?>
    <label for="advert_cond">Description for this field</label>
    <select name="advert_cond" id="advert_cond" class="postbox">
        <option value="0"><?php echo esc_html__(\'-Select-\', \'adifier\') ?></option>
        <option value="1" <?php selected($value, \'1\');?>><?php echo esc_html__(\'New\', \'adifier\') ?></option>
        <option value="2" <?php selected($value, \'3\');?>><?php echo esc_html__(\'Used\', \'adifier\') ?></option>
        <option value="3" <?php selected($value, \'4\');?>><?php echo esc_html__(\'For Parts Or Not Working\', \'adifier\') ?></option>

    </select>
    <?php
}
有关更多信息,您可以从以下链接查看WordPress文档:

Custom Meta Boxes

Add Meta Box

结束

相关推荐

对WooCommerce的Functions.php更改不起作用

我正在尝试将其添加到函数中。php。在我的另一个站点上的测试实验室中,它可以很好地添加测试信息。但在这个网站上,我试图把它添加到什么都没有发生的情况下。该网站正在使用最新的woocommerce运行一个建筑节俭主题。有什么想法吗?我基本上只是想在每个产品页面上添加一行类似于免责声明但无法添加的文本。add_action(\'woocommerce_before_add_to_cart_form\',\'print_something_below_short_description\');