[ Index ]

PHP Cross Reference of WordPress Trunk (Updated Daily)

Search

title

Body

[close]

/wp-admin/ -> options-discussion.php (source)

   1  <?php
   2  /**
   3   * Discussion settings administration panel.
   4   *
   5   * @package WordPress
   6   * @subpackage Administration
   7   */
   8  /** WordPress Administration Bootstrap */
   9  require_once  __DIR__ . '/admin.php';
  10  
  11  if ( ! current_user_can( 'manage_options' ) ) {
  12      wp_die( __( 'Sorry, you are not allowed to manage options for this site.' ) );
  13  }
  14  
  15  // Used in the HTML title tag.
  16  $title       = __( 'Discussion Settings' );
  17  $parent_file = 'options-general.php';
  18  
  19  add_action( 'admin_print_footer_scripts', 'options_discussion_add_js' );
  20  
  21  get_current_screen()->add_help_tab(
  22      array(
  23          'id'      => 'overview',
  24          'title'   => __( 'Overview' ),
  25          'content' => '<p>' . __( 'This screen provides many options for controlling the management and display of comments and links to your posts/pages. So many, in fact, they will not all fit here! :) Use the documentation links to get information on what each discussion setting does.' ) . '</p>' .
  26              '<p>' . __( 'You must click the Save Changes button at the bottom of the screen for new settings to take effect.' ) . '</p>',
  27      )
  28  );
  29  
  30  get_current_screen()->set_help_sidebar(
  31      '<p><strong>' . __( 'For more information:' ) . '</strong></p>' .
  32      '<p>' . __( '<a href="https://wordpress.org/documentation/article/settings-discussion-screen/">Documentation on Discussion Settings</a>' ) . '</p>' .
  33      '<p>' . __( '<a href="https://wordpress.org/support/forums/">Support forums</a>' ) . '</p>'
  34  );
  35  
  36  require_once  ABSPATH . 'wp-admin/admin-header.php';
  37  ?>
  38  
  39  <div class="wrap">
  40  <h1><?php echo esc_html( $title ); ?></h1>
  41  
  42  <form method="post" action="options.php">
  43  <?php settings_fields( 'discussion' ); ?>
  44  
  45  <table class="form-table indent-children" role="presentation">
  46  <tr>
  47  <th scope="row"><?php _e( 'Default post settings' ); ?></th>
  48  <td><fieldset><legend class="screen-reader-text"><span>
  49      <?php
  50      /* translators: Hidden accessibility text. */
  51      _e( 'Default post settings' );
  52      ?>
  53  </span></legend>
  54  <label for="default_pingback_flag">
  55  <input name="default_pingback_flag" type="checkbox" id="default_pingback_flag" value="1" <?php checked( '1', get_option( 'default_pingback_flag' ) ); ?> />
  56  <?php _e( 'Attempt to notify any blogs linked to from the post' ); ?></label>
  57  <br />
  58  <label for="default_ping_status">
  59  <input name="default_ping_status" type="checkbox" id="default_ping_status" value="open" <?php checked( 'open', get_option( 'default_ping_status' ) ); ?> />
  60  <?php _e( 'Allow link notifications from other blogs (pingbacks and trackbacks) on new posts' ); ?></label>
  61  <br />
  62  <label for="default_comment_status">
  63  <input name="default_comment_status" type="checkbox" id="default_comment_status" value="open" <?php checked( 'open', get_option( 'default_comment_status' ) ); ?> />
  64  <?php _e( 'Allow people to submit comments on new posts' ); ?></label>
  65  <br />
  66  <p class="description"><?php _e( 'Individual posts may override these settings. Changes here will only be applied to new posts.' ); ?></p>
  67  </fieldset></td>
  68  </tr>
  69  <tr>
  70  <th scope="row"><?php _e( 'Other comment settings' ); ?></th>
  71  <td><fieldset><legend class="screen-reader-text"><span>
  72      <?php
  73      /* translators: Hidden accessibility text. */
  74      _e( 'Other comment settings' );
  75      ?>
  76  </span></legend>
  77  <label for="require_name_email"><input type="checkbox" name="require_name_email" id="require_name_email" value="1" <?php checked( '1', get_option( 'require_name_email' ) ); ?> /> <?php _e( 'Comment author must fill out name and email' ); ?></label>
  78  <br />
  79  <label for="comment_registration">
  80  <input name="comment_registration" type="checkbox" id="comment_registration" value="1" <?php checked( '1', get_option( 'comment_registration' ) ); ?> />
  81  <?php _e( 'Users must be registered and logged in to comment' ); ?>
  82  <?php
  83  if ( ! get_option( 'users_can_register' ) && is_multisite() ) {
  84      echo ' ' . __( '(Signup has been disabled. Only members of this site can comment.)' );
  85  }
  86  ?>
  87  </label>
  88  <br />
  89  <input name="close_comments_for_old_posts" type="checkbox" id="close_comments_for_old_posts" value="1" <?php checked( '1', get_option( 'close_comments_for_old_posts' ) ); ?> /> <label for="close_comments_for_old_posts"><?php _e( 'Automatically close comments on old posts' ); ?></label>
  90  <ul>
  91      <li>
  92          <label for="close_comments_days_old"><?php _e( 'Close comments when post is how many days old' ); ?></label>
  93          <input name="close_comments_days_old" type="number" step="1" min="0" id="close_comments_days_old" value="<?php echo esc_attr( get_option( 'close_comments_days_old' ) ); ?>" class="small-text"/>
  94      </li>
  95  </ul>
  96  
  97  <input name="show_comments_cookies_opt_in" type="checkbox" id="show_comments_cookies_opt_in" value="1" <?php checked( '1', get_option( 'show_comments_cookies_opt_in' ) ); ?> />
  98  <label for="show_comments_cookies_opt_in"><?php _e( 'Show comments cookies opt-in checkbox, allowing comment author cookies to be set' ); ?></label>
  99  <br />
 100  <input name="thread_comments" type="checkbox" id="thread_comments" value="1" <?php checked( '1', get_option( 'thread_comments' ) ); ?> />
 101  <label for="thread_comments"><?php _e( 'Enable threaded (nested) comments' ); ?></label>
 102  
 103  <?php
 104  /**
 105   * Filters the maximum depth of threaded/nested comments.
 106   *
 107   * @since 2.7.0
 108   *
 109   * @param int $max_depth The maximum depth of threaded comments. Default 10.
 110   */
 111  $maxdeep = (int) apply_filters( 'thread_comments_depth_max', 10 );
 112  
 113  $thread_comments_depth = '<select name="thread_comments_depth" id="thread_comments_depth">';
 114  for ( $i = 2; $i <= $maxdeep; $i++ ) {
 115      $thread_comments_depth .= "<option value='" . esc_attr( $i ) . "'";
 116      if ( (int) get_option( 'thread_comments_depth' ) === $i ) {
 117          $thread_comments_depth .= " selected='selected'";
 118      }
 119      $thread_comments_depth .= ">$i</option>";
 120  }
 121  $thread_comments_depth .= '</select>';
 122  ?>
 123  <ul>
 124      <li>
 125          <label for="thread_comments_depth"><?php _e( 'Number of levels for threaded (nested) comments' ); ?></label>
 126          <?php echo $thread_comments_depth; ?>
 127      </li>
 128  </ul>
 129  </fieldset></td>
 130  </tr>
 131  
 132  <tr>
 133  <th scope="row"><?php _e( 'Comment Pagination' ); ?></th>
 134  <td><fieldset><legend class="screen-reader-text"><span>
 135      <?php
 136      /* translators: Hidden accessibility text. */
 137      _e( 'Comment Pagination' );
 138      ?>
 139  </span></legend>
 140  <input name="page_comments" type="checkbox" id="page_comments" value="1" <?php checked( '1', get_option( 'page_comments' ) ); ?> />
 141  <label for="page_comments"><?php _e( 'Break comments into pages' ); ?></label>
 142  <ul>
 143      <li>
 144          <label for="comments_per_page"><?php _e( 'Top level comments per page' ); ?></label>
 145          <input name="comments_per_page" type="number" step="1" min="0" id="comments_per_page" value="<?php echo esc_attr( get_option( 'comments_per_page' ) ); ?>" class="small-text" />
 146      </li>
 147      <li>
 148          <label for="default_comments_page"><?php _e( 'Comments page to display by default' ); ?></label>
 149          <select name="default_comments_page" id="default_comments_page">
 150              <option value="newest" <?php selected( 'newest', get_option( 'default_comments_page' ) ); ?>><?php _e( 'last page' ); ?></option>
 151              <option value="oldest" <?php selected( 'oldest', get_option( 'default_comments_page' ) ); ?>><?php _e( 'first page' ); ?></option>
 152          </select>
 153      </li>
 154      <li>
 155          <label for="comment_order"><?php _e( 'Comments to display at the top of each page' ); ?></label>
 156          <select name="comment_order" id="comment_order">
 157              <option value="asc" <?php selected( 'asc', get_option( 'comment_order' ) ); ?>><?php _e( 'older' ); ?></option>
 158              <option value="desc" <?php selected( 'desc', get_option( 'comment_order' ) ); ?>><?php _e( 'newer' ); ?></option>
 159          </select>
 160      </li>
 161  </ul>
 162  </fieldset></td>
 163  </tr>
 164  <tr>
 165  <th scope="row"><?php _e( 'Email me whenever' ); ?></th>
 166  <td><fieldset><legend class="screen-reader-text"><span>
 167      <?php
 168      /* translators: Hidden accessibility text. */
 169      _e( 'Email me whenever' );
 170      ?>
 171  </span></legend>
 172  <label for="comments_notify">
 173  <input name="comments_notify" type="checkbox" id="comments_notify" value="1" <?php checked( '1', get_option( 'comments_notify' ) ); ?> />
 174  <?php _e( 'Anyone posts a comment' ); ?> </label>
 175  <br />
 176  <label for="moderation_notify">
 177  <input name="moderation_notify" type="checkbox" id="moderation_notify" value="1" <?php checked( '1', get_option( 'moderation_notify' ) ); ?> />
 178  <?php _e( 'A comment is held for moderation' ); ?> </label>
 179  </fieldset></td>
 180  </tr>
 181  <tr>
 182  <th scope="row"><?php _e( 'Before a comment appears' ); ?></th>
 183  <td><fieldset><legend class="screen-reader-text"><span>
 184      <?php
 185      /* translators: Hidden accessibility text. */
 186      _e( 'Before a comment appears' );
 187      ?>
 188  </span></legend>
 189  <label for="comment_moderation">
 190  <input name="comment_moderation" type="checkbox" id="comment_moderation" value="1" <?php checked( '1', get_option( 'comment_moderation' ) ); ?> />
 191  <?php _e( 'Comment must be manually approved' ); ?> </label>
 192  <br />
 193  <label for="comment_previously_approved"><input type="checkbox" name="comment_previously_approved" id="comment_previously_approved" value="1" <?php checked( '1', get_option( 'comment_previously_approved' ) ); ?> /> <?php _e( 'Comment author must have a previously approved comment' ); ?></label>
 194  </fieldset></td>
 195  </tr>
 196  <tr>
 197  <th scope="row"><?php _e( 'Comment Moderation' ); ?></th>
 198  <td><fieldset><legend class="screen-reader-text"><span>
 199      <?php
 200      /* translators: Hidden accessibility text. */
 201      _e( 'Comment Moderation' );
 202      ?>
 203  </span></legend>
 204  <p><label for="comment_max_links">
 205  <?php
 206  printf(
 207      /* translators: %s: Number of links. */
 208      __( 'Hold a comment in the queue if it contains %s or more links. (A common characteristic of comment spam is a large number of hyperlinks.)' ),
 209      '<input name="comment_max_links" type="number" step="1" min="0" id="comment_max_links" value="' . esc_attr( get_option( 'comment_max_links' ) ) . '" class="small-text" />'
 210  );
 211  ?>
 212  </label></p>
 213  
 214  <p><label for="moderation_keys"><?php _e( 'When a comment contains any of these words in its content, author name, URL, email, IP address, or browser&#8217;s user agent string, it will be held in the <a href="edit-comments.php?comment_status=moderated">moderation queue</a>. One word or IP address per line. It will match inside words, so &#8220;press&#8221; will match &#8220;WordPress&#8221;.' ); ?></label></p>
 215  <p>
 216  <textarea name="moderation_keys" rows="10" cols="50" id="moderation_keys" class="large-text code"><?php echo esc_textarea( get_option( 'moderation_keys' ) ); ?></textarea>
 217  </p>
 218  </fieldset></td>
 219  </tr>
 220  <tr>
 221  <th scope="row"><?php _e( 'Disallowed Comment Keys' ); ?></th>
 222  <td><fieldset><legend class="screen-reader-text"><span>
 223      <?php
 224      /* translators: Hidden accessibility text. */
 225      _e( 'Disallowed Comment Keys' );
 226      ?>
 227  </span></legend>
 228  <p><label for="disallowed_keys"><?php _e( 'When a comment contains any of these words in its content, author name, URL, email, IP address, or browser&#8217;s user agent string, it will be put in the Trash. One word or IP address per line. It will match inside words, so &#8220;press&#8221; will match &#8220;WordPress&#8221;.' ); ?></label></p>
 229  <p>
 230  <textarea name="disallowed_keys" rows="10" cols="50" id="disallowed_keys" class="large-text code"><?php echo esc_textarea( get_option( 'disallowed_keys' ) ); ?></textarea>
 231  </p>
 232  </fieldset></td>
 233  </tr>
 234  <?php do_settings_fields( 'discussion', 'default' ); ?>
 235  </table>
 236  
 237  <h2 class="title"><?php _e( 'Avatars' ); ?></h2>
 238  
 239  <p><?php _e( 'An avatar is an image that can be associated with a user across multiple websites. In this area, you can choose to display avatars of users who interact with the site.' ); ?></p>
 240  
 241  <?php
 242  // The above would be a good place to link to the documentation on the Gravatar functions, for putting it in themes. Anything like that?
 243  
 244  $show_avatars       = get_option( 'show_avatars' );
 245  $show_avatars_class = '';
 246  if ( ! $show_avatars ) {
 247      $show_avatars_class = ' hide-if-js';
 248  }
 249  ?>
 250  
 251  <table class="form-table" role="presentation">
 252  <tr>
 253  <th scope="row"><?php _e( 'Avatar Display' ); ?></th>
 254  <td>
 255      <label for="show_avatars">
 256          <input type="checkbox" id="show_avatars" name="show_avatars" value="1" <?php checked( $show_avatars, 1 ); ?> />
 257          <?php _e( 'Show Avatars' ); ?>
 258      </label>
 259  </td>
 260  </tr>
 261  <tr class="avatar-settings<?php echo $show_avatars_class; ?>">
 262  <th scope="row"><?php _e( 'Maximum Rating' ); ?></th>
 263  <td><fieldset><legend class="screen-reader-text"><span>
 264      <?php
 265      /* translators: Hidden accessibility text. */
 266      _e( 'Maximum Rating' );
 267      ?>
 268  </span></legend>
 269  
 270  <?php
 271  $ratings = array(
 272      /* translators: Content suitability rating: https://en.wikipedia.org/wiki/Motion_Picture_Association_of_America_film_rating_system */
 273      'G'  => __( 'G &#8212; Suitable for all audiences' ),
 274      /* translators: Content suitability rating: https://en.wikipedia.org/wiki/Motion_Picture_Association_of_America_film_rating_system */
 275      'PG' => __( 'PG &#8212; Possibly offensive, usually for audiences 13 and above' ),
 276      /* translators: Content suitability rating: https://en.wikipedia.org/wiki/Motion_Picture_Association_of_America_film_rating_system */
 277      'R'  => __( 'R &#8212; Intended for adult audiences above 17' ),
 278      /* translators: Content suitability rating: https://en.wikipedia.org/wiki/Motion_Picture_Association_of_America_film_rating_system */
 279      'X'  => __( 'X &#8212; Even more mature than above' ),
 280  );
 281  foreach ( $ratings as $key => $rating ) :
 282      $selected = ( get_option( 'avatar_rating' ) === $key ) ? 'checked="checked"' : '';
 283      echo "\n\t<label><input type='radio' name='avatar_rating' value='" . esc_attr( $key ) . "' $selected/> $rating</label><br />";
 284  endforeach;
 285  ?>
 286  
 287  </fieldset></td>
 288  </tr>
 289  <tr class="avatar-settings<?php echo $show_avatars_class; ?>">
 290  <th scope="row"><?php _e( 'Default Avatar' ); ?></th>
 291  <td class="defaultavatarpicker"><fieldset><legend class="screen-reader-text"><span>
 292      <?php
 293      /* translators: Hidden accessibility text. */
 294      _e( 'Default Avatar' );
 295      ?>
 296  </span></legend>
 297  
 298  <p>
 299  <?php _e( 'For users without a custom avatar of their own, you can either display a generic logo or a generated one based on their email address.' ); ?><br />
 300  </p>
 301  
 302  <?php
 303  $avatar_defaults = array(
 304      'mystery'          => __( 'Mystery Person' ),
 305      'blank'            => __( 'Blank' ),
 306      'gravatar_default' => __( 'Gravatar Logo' ),
 307      'identicon'        => __( 'Identicon (Generated)' ),
 308      'wavatar'          => __( 'Wavatar (Generated)' ),
 309      'monsterid'        => __( 'MonsterID (Generated)' ),
 310      'retro'            => __( 'Retro (Generated)' ),
 311      'robohash'         => __( 'RoboHash (Generated)' ),
 312  );
 313  /**
 314   * Filters the default avatars.
 315   *
 316   * Avatars are stored in key/value pairs, where the key is option value,
 317   * and the name is the displayed avatar name.
 318   *
 319   * @since 2.6.0
 320   *
 321   * @param string[] $avatar_defaults Associative array of default avatars.
 322   */
 323  $avatar_defaults = apply_filters( 'avatar_defaults', $avatar_defaults );
 324  $default         = get_option( 'avatar_default', 'mystery' );
 325  $avatar_list     = '';
 326  
 327  // Force avatars on to display these choices.
 328  add_filter( 'pre_option_show_avatars', '__return_true', 100 );
 329  
 330  foreach ( $avatar_defaults as $default_key => $default_name ) {
 331      $selected     = ( $default === $default_key ) ? 'checked="checked" ' : '';
 332      $avatar_list .= "\n\t<label><input type='radio' name='avatar_default' id='avatar_{$default_key}' value='" . esc_attr( $default_key ) . "' {$selected}/> ";
 333      $avatar_list .= get_avatar( $user_email, 32, $default_key, '', array( 'force_default' => true ) );
 334      $avatar_list .= ' ' . $default_name . '</label>';
 335      $avatar_list .= '<br />';
 336  }
 337  
 338  remove_filter( 'pre_option_show_avatars', '__return_true', 100 );
 339  
 340  /**
 341   * Filters the HTML output of the default avatar list.
 342   *
 343   * @since 2.6.0
 344   *
 345   * @param string $avatar_list HTML markup of the avatar list.
 346   */
 347  echo apply_filters( 'default_avatar_select', $avatar_list );
 348  ?>
 349  
 350  </fieldset></td>
 351  </tr>
 352  <?php do_settings_fields( 'discussion', 'avatars' ); ?>
 353  </table>
 354  
 355  <?php do_settings_sections( 'discussion' ); ?>
 356  
 357  <?php submit_button(); ?>
 358  </form>
 359  </div>
 360  
 361  <?php require_once  ABSPATH . 'wp-admin/admin-footer.php'; ?>


Generated : Thu Nov 21 08:20:01 2024 Cross-referenced by PHPXref