使用挂钩定制插件功能

时间:2015-03-12 作者:IYBITWC

我在我的函数文件中编写了一个钩子,它将安装的插件中的元盒添加到我创建的自定义帖子类型中。metabox看起来不错,但在metabox中选中的默认选择是“index,follow”,而我希望它在默认情况下是“noindex,nofollow”。是否有任何方法可以使用我的挂钩更改插件功能?

我的挂钩:

    function robotsmeta_add_custom_box() {
        add_meta_box(\'robotsmeta\',\'Robots Meta\',array(\'RobotsMeta_Admin\',\'noindex_option_fill\'),\'secured-area\',\'side\');
    }
    add_action(\'add_meta_boxes\', \'robotsmeta_add_custom_box\');
插件的noindex\\u option\\u fill函数:

    function noindex_option_fill() {
        global $post;
        $robotsmeta = $post->robotsmeta;
        if (!isset($robotsmeta) || $robotsmeta == "") {
            $robotsmeta = "index,follow";
        }
        ?>
        <label for="meta_robots_index_follow" class="selectit"><input id="meta_robots_index_follow" name="robotsmeta" type="radio" value="index,follow" <?php if ($robotsmeta == "index,follow") echo \'checked="checked"\'?>/> index, follow</label><br/>
        <label for="meta_robots_index_nofollow" class="selectit"><input id="meta_robots_index_nofollow" name="robotsmeta" type="radio" value="index,nofollow" <?php if ($robotsmeta == "index,nofollow") echo \'checked="checked"\'?>/> index, nofollow</label><br/>
        <label for="meta_robots_noindex_follow" class="selectit"><input id="meta_robots_noindex_follow" name="robotsmeta" type="radio" value="noindex,follow" <?php if ($robotsmeta == "noindex,follow") echo \'checked="checked"\'?>/> noindex, follow</label><br/>
        <label for="meta_robots_noindex_nofollow" class="selectit"><input id="meta_robots_noindex_nofollow" name="robotsmeta" type="radio" value="noindex,nofollow" <?php if ($robotsmeta == "noindex,nofollow") echo \'checked="checked"\'?>/> noindex, nofollow</label><br/>
        <?php
    }

1 个回复
最合适的回答,由SO网友:czerspalace 整理而成

可以尝试以下操作:

function set_robotsmeta_default( $post_object ) {
    if (!isset($post_object->robotsmeta) || $post_object->robotsmeta == "") {
        $post_object->robotsmeta = "noindex,nofollow";
    }
    return $post_object;
}
add_action( \'the_post\', \'set_robotsmeta_default\' );
编辑:由于上面的代码不起作用,下面的代码可以通过在插件之前编辑全局$post对象来工作add_meta_boxes 被调用。我只是不知道这是否会影响已经设置了该值的帖子。

function set_robotsmeta_default() {
    global $post;
    if (!isset($post->robotsmeta) || $post->robotsmeta == "") {
        $post->robotsmeta = "noindex,nofollow";
    }  
}
add_action( \'add_meta_boxes\', \'set_robotsmeta_default\', 1);

结束

相关推荐

Testing hooks callback

我正在开发一个使用TDD的插件,有一件事我完全没有测试出来,那就是。。。挂钩。我的意思是好的,我可以测试钩子回调,但我如何测试钩子是否真的触发了(自定义钩子和WordPress默认钩子)?我认为一些嘲弄会有所帮助,但我就是想不出我错过了什么。我用WP-CLI安装了测试套件。根据this answer, init 钩子应该触发,但。。。事实并非如此;此外,该代码在WordPress内部工作。根据我的理解,引导程序是最后加载的,所以不触发init是有意义的,所以剩下的问题是:如果触发了挂钩,我该如何测试?谢谢