需要修改WordPress的文本大小调整器插件

时间:2014-06-25 01:03:45

标签: php wordpress wordpress-plugin

我已在我正在处理的网站上安装了一个非常简单的文本缩放器插件,但我想阻止缩放器出现在首页上。不幸的是,我对PHP的了解非常有限,所以我不确定最简单的方法是什么。

以下是插件的代码:

<?php
/*
Plugin Name: Post size text changer
Plugin URI: http://www.sooource.net/post-text-size-changer
Description: This plugin allows your blog to change the font size of entries 'on the fly'.
Version: 1.0
Author: TrueFalse
Author URI: http://www.sooource.net
License: GPLv2 or later
Text Domain: ptsc
Domain Path: /languages
*/

# Загрузка локализаций:
load_plugin_textdomain('ptsc', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/');

# Хуки, действия, фильтры:
add_action('wp_enqueue_scripts', 'ptsc_enqueue_js');    // - подключение JavaScript к фронтенду.
add_action('admin_init', 'ptsc_options_fields');        // - регистрация полей в БД.
add_action('admin_menu', 'ptsc_admin_menu');            // - добавление пункта меню в админку.
add_filter('the_content', 'ptsc_insert_html');          // - вставка HTML-кода в пост.
register_uninstall_hook(__FILE__, 'ptsc_deinstall');    // - крючок деинсталляции.

# Подключение JavaScript:
function ptsc_enqueue_js() {
  wp_enqueue_script('resize', plugins_url('js/resize.js', __FILE__), array('jquery'));
}

# Вставка ссылок плагина:
function ptsc_insert_html($content) {
  if (is_singular())
    return ptsc_default('ptsc_html_before').
    '<a id="increase-font" href="#">[ A+ ] </a>/<a id="decrease-font" href="#">[ A- ] </a>'.
    ptsc_default('ptsc_html_after'). '<div class="resize">'. $content. '</div>';
  else
    return $content;
}

# Регистрируем новую страницу на вкладке "Параметры".
function ptsc_admin_menu() {
  add_options_page(
    __('Post size text changer', 'ptsc'),
    __('Post size text changer', 'ptsc'),
    'manage_options',
    'post-size-text-changer.php',
    'ptsc_options_page');
}

# Показываем форму:
function ptsc_options_page() {
  echo '<div class="wrap">';
  screen_icon();
  echo '<h2>'. __('Post size text changer', 'ptsc'). '</h2>';
  echo '<form method="post" action="options.php">';
  do_settings_sections('ptsc_page');
  settings_fields('ptsc_fields');
  submit_button();
  echo '</form>';
  echo '</div>';
}

# Регистрируем поля в БД и оформляем их отображение.
function ptsc_options_fields() {
  register_setting('ptsc_fields', 'ptsc_html_before');
  register_setting('ptsc_fields', 'ptsc_html_after');
  add_settings_section('ptsc_section_id', NULL, 'ptsc_section_callback', 'ptsc_page');
  add_settings_field('ptsc_setting-html-before-id', __('Before links', 'ptsc'). ':', 'ptsc_html_before_field_callback', 'ptsc_page', 'ptsc_section_id');
  add_settings_field('ptsc_setting-html-after-id', __('After links', 'ptsc'). ':', 'ptsc_html_after_field_callback', 'ptsc_page', 'ptsc_section_id');
}

# Функции вывода элементов формы на экран:
function ptsc_section_callback() {
  echo '<p>'. __('Please configure HTML-wrapper to change the style of inserting the plugin', 'ptsc'). '.</p>';
}
function ptsc_html_before_field_callback() {
  echo '<input type="text" class="regular-text" value="'. esc_html(stripslashes(ptsc_default('ptsc_html_before'))). '" id="ptsc-html-before-field" name="ptsc_html_before" />';
}
function ptsc_html_after_field_callback() {
  echo '<input type="text" class="regular-text" value="'. esc_html(stripslashes(ptsc_default('ptsc_html_after'))). '" id="ptsc-html-after-field" name="ptsc_html_after" />';
}

# Считывание полей из БД и установка значений по умолчанию:
function ptsc_default($field) {
  $default = get_option($field);
  if ($field == 'ptsc_html_before')
    $default = ( !empty($default) ) ? $default: '<p style="text-align:right">';
  elseif ($field == 'ptsc_html_after')
    $default = ( !empty($default) ) ? $default: '</p>';
  return $default;
}

# Хук деисталляции:
function ptsc_deinstall() {
  delete_option('ptsc_html_before');
  delete_option('ptsc_html_after');
}

?>

我认为一个简单的if / else循环是可行的,特别是因为WP具有is_home()功能,但我不会读俄语,我不知道在哪里开始。有什么想法吗?或者可能有更简单的方法来完成这项工作?

2 个答案:

答案 0 :(得分:1)

试试这个: -

function ptsc_insert_html($content) {
  if (is_singular() && !is_front_page())
    return ptsc_default('ptsc_html_before').
    '<a id="increase-font" href="#">[ A+ ] </a>/<a id="decrease-font" href="#">[ A- ] </a>'.
    ptsc_default('ptsc_html_after'). '<div class="resize">'. $content. '</div>';
  else
    return $content;
}

答案 1 :(得分:0)

我不读俄语,但我确实把一些文字扔进谷歌翻译。这些评论似乎没那么大帮助。

无论如何,这个块在这里:(英文评论翻译:插入链接插件:)

# Вставка ссылок плагина:
function ptsc_insert_html($content) {
  if (is_singular())
    return ptsc_default('ptsc_html_before').
    '<a id="increase-font" href="#">[ A+ ] </a>/<a id="decrease-font" href="#">[ A- ] </a>'.
    ptsc_default('ptsc_html_after'). '<div class="resize">'. $content. '</div>';
  else
    return $content;
}

看起来它正在接收您的帖子/页面内容,然后使用resize类包装它。它看起来像是插入链接以使文本更大/更小。

我会更改它以调整一个变量,当home!= true时,该变量只有字符串resize。

未经测试但是这样:

function ptsc_insert_html($content) {

  $resize = '';
  if (!is_home()) {
     $resize = 'resize';
  }

  if (is_singular())
    return ptsc_default('ptsc_html_before').
    '<a id="increase-font" href="#">[ A+ ] </a>/<a id="decrease-font" href="#">[ A- ] </a>'.
    ptsc_default('ptsc_html_after'). '<div class="'. $resize .'">'. $content. '</div>';
  else
    return $content;
}

希望有所帮助。