Polylang - 如何在触发“plugins_loaded”操作之前在插件或 mu-plugin 中添加“add_filter”

问题描述 投票:0回答:2

我试图将标志更改为 svg 中的自定义标志,我在他们的文档中找到了这个“pll_custom_flag”函数(https://polylang.pro/doc/filter-reference/

在那里,它说“在触发'plugins_loaded'操作之前,需要将过滤器添加到插件或mu-plugin中。它不能在主题的functions.php中工作。”

但是,我不知道具体在哪里以及如何添加这个动作。

这是我为我的网站定制的操作。

add_filter( ‘pll_custom_flag’, ‘pll_custom_flag’, 10, 2 );

function pll_custom_flag( $flag, $code ) {
$flag[‘url’] = "http://example.com/wp-content/polylang/flags-custom/{$code}.svg";
$flag[‘height’] = 24;
return $flag;
}

我还将两个 svg 图像添加到我在 polylang 目录下创建的新目录(flags-custom)中。

我对 PHP 的了解几乎为零,如果有人能在这方面帮助我,我将不胜感激。

谢谢你。

php wordpress plugins polylang
2个回答
0
投票

解决方案1: 您需要为此过滤器创建插件。创建一个并将此过滤器放入其中。

解决方案2(更简单): 使用此过滤器将文件(例如:polylang_filters.php)放入 /wp-content/mu-plugins 中。

1或2后进入Polylang设置->Url修改并点击保存。无需更改,只需单击“保存”即可更新网址。

如果您的文件夹中有自定义标志,它们将会显示。

PS.

我更愿意将我的标志保留在主题文件夹中:

add_filter( 'pll_custom_flag', 'pll_custom_flag', 10, 2 );

function pll_custom_flag( $flag, $code ) {
    $flag['url']    = get_template_directory_uri()."/img/lang_flags/{$code}.svg";
    $flag['width']  = 20;
    $flag['height'] = 20;
    return $flag;
}

在我的标志文件夹中,我有标志: 国标.svg de.svg 等等...


0
投票

除了上面提到的帖子之外,如果您使用子主题,您还可以使用以下代码:

add_filter( 'pll_custom_flag', 'pll_custom_flag', 10, 2 );

function pll_custom_flag( $flag, $code ) {
    $flag['url']    = get_stylesheet_directory_uri()."/polylang/{$code}.svg";
    $flag['width']  = 28;
    $flag['height'] = 28;
    return $flag;
}

我在 child-theme/polylang/ 文件夹中有标志。 -> Polylang 设置 -> 网址修改并单击保存后,如果标志文件名错误,您将通过检查页面上的语言名称在浏览器的检查器中看到正确的文件名。

我希望有帮助。 :-)

© www.soinside.com 2019 - 2024. All rights reserved.