为什么需要-不加载筛选器

时间:2019-08-12 作者:Alt C

我正在使用WordPress插件的模板:https://wppb.me/

但我不知道这是不是因为编码的原因。

我想做的是使用require 并从文件中加载以下代码。

require plugin_dir_path( __FILE__ ) . \'admin/partials/ggowl_template/ggowl_template_func.php\';
如果我把这个代码放在插件的主文件中,它就会工作(无需)。不知道我在哪里出错

<小时>

add_filter(\'template_include\', \'ggowl_template_post_function\',-20,1);

function ggowl_template_post_function($single) {
        //$ggowl_admin_options = get_option(\'ggowl_admin_options\');
        // if( null !== get_option(\'ggowl_admin_options\')){
        if( false !== get_option(\'ggowl_admin_options\')){
            global $post;
            if( !is_object($post) ){
            return $single;
            }

            $ggowl_admin_options = get_option(\'ggowl_admin_options\'); // Array of All Options
                $ggowl_admin_template_options = $ggowl_admin_options[\'ggowl_select_post_template_repeater\'];
                foreach ($ggowl_admin_template_options as $key => $value) {
                    $posttype = $value[0];
                    // var_dump($posttype);
                    $ggowl_select_post_template_0 = (int)$value[\'template\'][0][0];
                    if ( ($post->post_type == $posttype )&&($ggowl_select_post_template_0 != 0) ) {
                            if ( file_exists( plugin_dir_path( __FILE__ ) . \'includes/templates/ggowl-template-post.php\' ) ) {
                                    return plugin_dir_path( __FILE__ ) . \'includes/templates/ggowl-template-post.php\';
                            }
                    }
                }
        }
    return $single;
}

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

The filter itself probably works, but the file_exists() returns false.

因此,我不确定这是否回答了这个问题,但我在您的代码中看到的一个问题是:

当你输入代码时your-plugin/admin/partials/ggowl_template/ggowl_template_func.php, plugin_dir_path( __FILE__ ) 从内部ggowl_template_post_function() 可能是your-plugin/admin/partials/ggowl_template/ &mdash;而不是主插件文件路径,因此我建议您在主插件文件中定义主插件文件(其绝对路径),如下所示:

<?php
/**
 * Plugin Name: My Plugin
 * Version: 1.0
 */

defined( \'ABSPATH\' ) || exit;

define( \'MY_PLUGIN_PLUGIN_FILE\', __FILE__ );
从主插件文件以外的其他PHP文件中MY_PLUGIN_PLUGIN_FILE 而不是__FILE__ 当引用主插件文件时。

相关推荐

EDIT-Comments.php COMMENT_ROW_ACTIONS AJAX问题

在编辑注释上。php页面,我正在连接到comment\\u row\\u actions过滤器,以便在末尾添加另一个链接。我正在复制“Approve”链接,添加另一个查询键和值,并修改锚文本。我想根据新查询键的值添加一些注释元。批准的链接:/wp-admin/comment.php?c=9999&action=approvecomment&_wpnonce=8526c66已批准的元链接/wp-admin/comment.php?c=9999&action=approvecommen