Исключить некоторые форумы из скрипта, чтобы скрыть ссылки для гостей.

Вопрос или проблема

Я работаю с плагином WPForo и пытаюсь адаптировать этот скрипт, чтобы скрыть ссылки от посетителей

    add_filter('wpforo_content_after', 'wpforo_hide_links_for_guests', 10);
function wpforo_hide_links_for_guests( $content ){
    if( WPF()->current_user_groupid === 4 ){
        $content = preg_replace('|<a[^>]+href=[^>]+>[^<>]+<\/a>|im', '<a href="#" rel="nofollow">[' . wpforo_phrase('Please login to see the link', false) . ']</a>', $content);
    }
   return $content;
}

Скрипт работает нормально, но проблема в том, что блокируются ссылки, которые не показываются гостям на всех форумах

Из этого кода нужно исключить два разных форума, чтобы показывать ссылки гостям.

например, так

else {
  WPF()->current_forumid_key === 3,6 ){
        $content = disable;
}

Я потерялся и не знаю, как добавить исключения, чтобы код не применялся только на двух разных форумах.

Этот код используется в файле functions.php темы.

Можете помочь мне?

Заранее спасибо

Ответ или решение

Конечно, я помогу вам разобраться в вашей задаче. Давайте подробно разберем ситуацию и предложим решение.

Теория

Ваша задача состоит в том, чтобы модифицировать уже работающий скрипт в WordPress плагине WPForo таким образом, чтобы он скрывал ссылки для гостей во всех форумах, за исключением двух определённых форумов. В текущем скрипте проверка на пользователя-гостя осуществляется через условие WPF()->current_user_groupid === 4. Вы также хотите добавить условие, которое исключит два форума, на которых ссылки не будут скрываться для гостей, при этом все остальные оставив без изменений.

Пример

Мы рассматриваем такой кодовый блок:

add_filter('wpforo_content_after', 'wpforo_hide_links_for_guests', 10);
function wpforo_hide_links_for_guests( $content ){
    if(WPF()->current_user_groupid === 4) {
        $content = preg_replace('|<a[^>]+href=[^>]+>[^<]+<\/a>|im', '<a href="#" rel="nofollow">['.wpforo_phrase('Please login to see the link', false).']</a>', $content);
    }
   return $content;
}

Вам необходимо добавить проверку на ID форума, чтобы в случае, если форум имеет ID 3 или 6, скрипт не применялся.

Применение

Вы можете использовать дополнительное условие внутри существующего, чтобы проверить идентификатор текущего форума. Это достигается с помощью оператора && и функции проверки. Модифицированный код может выглядеть следующим образом:

add_filter('wpforo_content_after', 'wpforo_hide_links_for_guests', 10);
function wpforo_hide_links_for_guests( $content ){
    // Идентификаторы форумов, которые должны быть исключены.
    $excluded_forum_ids = array(3, 6);

    // Проверяем, является ли пользователь гостем и форум не исключён.
    if(WPF()->current_user_groupid === 4 && !in_array(WPF()->current_forumid_key, $excluded_forum_ids)) {
        $content = preg_replace('|<a[^>]+href=[^>]+>[^<]+<\/a>|im', '<a href="#" rel="nofollow">['.wpforo_phrase('Please login to see the link', false).']</a>', $content);
    }
    return $content;
}

Заключение

С помощью функции in_array() скрипт проверяет, находится ли текущий идентификатор форума в массиве исключенных. Если идентификатор не найден в этом массиве, тогда применение регулярного выражения для замены ссылки выполняется. Таким образом, ссылки сохраняются видимыми только на указанных форумах. Это решение должно соответствовать вашим требованиям и не блокировать ссылки именно в форумах с ID 3 и 6, предоставляя вам гибкость в управлении видимостью содержания форума для гостей.

Оцените материал
Добавить комментарий

Капча загружается...