* @copyright Copyright (c) 2008 - 2015, Justin Tadlock * @link http://themehybrid.com/hybrid-core * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html */ /** * Outputs the comment reply link. Only use outside of `wp_list_comments()`. * * @since 2.0.0 * @access public * @param array $args * @return void */ function hybrid_comment_reply_link( $args = array() ) { echo hybrid_get_comment_reply_link( $args ); } /** * Outputs the comment reply link. Note that WP's `comment_reply_link()` doesn't work outside of * `wp_list_comments()` without passing in the proper arguments (it isn't meant to). This function * is just a wrapper for `get_comment_reply_link()`, which adds in the arguments automatically. * * @since 2.0.0 * @access public * @param array $args * @return string */ function hybrid_get_comment_reply_link( $args = array() ) { if ( ! get_option( 'thread_comments' ) || in_array( get_comment_type(), array( 'pingback', 'trackback' ) ) ) return ''; $args = wp_parse_args( $args, array( 'depth' => intval( $GLOBALS['comment_depth'] ), 'max_depth' => get_option( 'thread_comments_depth' ), ) ); return get_comment_reply_link( $args ); } /** * Uses the `$comment_type` to determine which comment template should be used. Once the * template is located, it is loaded for use. Child themes can create custom templates based off * the `$comment_type`. The comment template hierarchy is `comment-$comment_type.php`, * `comment.php`. * * The templates are saved in `$hybrid->comment_template[$comment_type]`, so each comment template * is only located once if it is needed. Following comments will use the saved template. * * @since 0.2.3 * @access public * @global object $hybrid * @param object $comment * @return void */ function hybrid_comments_callback( $comment ) { global $hybrid; // Get the comment type of the current comment. $comment_type = get_comment_type( $comment->comment_ID ); // Create an empty array if the comment template array is not set. if ( ! isset( $hybrid->comment_template ) || ! is_array( $hybrid->comment_template ) ) $hybrid->comment_template = array(); // Check if a template has been provided for the specific comment type. If not, get the template. if ( ! isset( $hybrid->comment_template[ $comment_type ] ) ) { // Create an array of template files to look for. $templates = array( "comment-{$comment_type}.php", "comment/{$comment_type}.php" ); // If the comment type is a 'pingback' or 'trackback', allow the use of 'comment-ping.php'. if ( 'pingback' == $comment_type || 'trackback' == $comment_type ) { $templates[] = 'comment-ping.php'; $templates[] = 'comment/ping.php'; } // Add the fallback 'comment.php' template. $templates[] = 'comment/comment.php'; $templates[] = 'comment.php'; // Allow devs to filter the template hierarchy. $templates = apply_filters( 'hybrid_comment_template_hierarchy', $templates, $comment_type ); // Locate the comment template. $template = locate_template( $templates ); // Set the template in the comment template array. $hybrid->comment_template[ $comment_type ] = $template; } // If a template was found, load the template. if ( ! empty( $hybrid->comment_template[ $comment_type ] ) ) require( $hybrid->comment_template[ $comment_type ] ); } /** * Ends the display of individual comments. Uses the callback parameter for `wp_list_comments()`. * Needs to be used in conjunction with `hybrid_comments_callback()`. Not needed but used just in * case something is changed. * * @since 0.2.3 * @access public * @return void */ function hybrid_comments_end_callback() { echo ''; }