author-bio.php
2 years ago
blog-display.php
2 years ago
customizer.js
6 years ago
customizer.php
2 years ago
featured-images-fallback.php
2 years ago
featured-images.php
2 years ago
post-details.php
2 years ago
post-details.php
176 lines
| 1 | <?php |
| 2 | /** |
| 3 | * Theme Tools: functions for Post Details. |
| 4 | * |
| 5 | * @package automattic/jetpack |
| 6 | */ |
| 7 | |
| 8 | if ( ! function_exists( 'jetpack_post_details_enqueue_scripts' ) ) { |
| 9 | |
| 10 | /** |
| 11 | * The function to include Post Details in a theme's stylesheet. |
| 12 | */ |
| 13 | function jetpack_post_details_enqueue_scripts() { |
| 14 | // Make sure we can proceed. |
| 15 | list( $should_run, $options, $definied, $post_details ) = jetpack_post_details_should_run(); |
| 16 | |
| 17 | if ( ! $should_run ) { |
| 18 | return; |
| 19 | } |
| 20 | |
| 21 | list( $date_option, $categories_option, $tags_option, $author_option, $comment_option ) = $options; |
| 22 | list( $date, $categories, $tags, $author, $comment ) = $definied; |
| 23 | |
| 24 | $elements = array(); |
| 25 | |
| 26 | // If date option is unticked, add it to the list of classes. |
| 27 | if ( 1 !== (int) $date_option && ! empty( $date ) ) { |
| 28 | $elements[] = $date; |
| 29 | } |
| 30 | |
| 31 | // If categories option is unticked, add it to the list of classes. |
| 32 | if ( 1 !== (int) $categories_option && ! empty( $categories ) ) { |
| 33 | $elements[] = $categories; |
| 34 | } |
| 35 | |
| 36 | // If tags option is unticked, add it to the list of classes. |
| 37 | if ( 1 !== (int) $tags_option && ! empty( $tags ) ) { |
| 38 | $elements[] = $tags; |
| 39 | } |
| 40 | |
| 41 | // If author option is unticked, add it to the list of classes. |
| 42 | if ( 1 !== (int) $author_option && ! empty( $author ) ) { |
| 43 | $elements[] = $author; |
| 44 | } |
| 45 | |
| 46 | // If comment option is unticked, add it to the list of classes. |
| 47 | if ( 1 !== (int) $comment_option && ! empty( $comment ) ) { |
| 48 | $elements[] = $comment; |
| 49 | } |
| 50 | |
| 51 | // If the Elements array is empty, return without setting custom CSS. |
| 52 | if ( empty( $elements ) ) { |
| 53 | return; |
| 54 | } |
| 55 | |
| 56 | // Get the list of classes. |
| 57 | $elements = implode( ', ', $elements ); |
| 58 | |
| 59 | // Hide the classes with CSS. |
| 60 | $css = $elements . ' { clip: rect(1px, 1px, 1px, 1px); height: 1px; position: absolute; overflow: hidden; width: 1px; }'; |
| 61 | |
| 62 | // Add the CSS to the stylesheet. |
| 63 | wp_add_inline_style( $post_details['stylesheet'], $css ); |
| 64 | } |
| 65 | add_action( 'wp_enqueue_scripts', 'jetpack_post_details_enqueue_scripts' ); |
| 66 | |
| 67 | } |
| 68 | |
| 69 | if ( ! function_exists( 'jetpack_post_details_body_classes' ) ) { |
| 70 | |
| 71 | /** |
| 72 | * Adds custom classes to the array of body classes. |
| 73 | * |
| 74 | * @param array $classes Classes for the body element. |
| 75 | */ |
| 76 | function jetpack_post_details_body_classes( $classes ) { |
| 77 | // Make sure we can proceed. |
| 78 | list( $should_run, $options, $definied ) = jetpack_post_details_should_run(); |
| 79 | |
| 80 | if ( ! $should_run ) { |
| 81 | return $classes; |
| 82 | } |
| 83 | |
| 84 | list( $date_option, $categories_option, $tags_option, $author_option, $comment_option ) = $options; |
| 85 | list( $date, $categories, $tags, $author, $comment ) = $definied; |
| 86 | |
| 87 | // If date option is unticked, add a class of 'date-hidden' to the body. |
| 88 | if ( 1 !== (int) $date_option && ! empty( $date ) ) { |
| 89 | $classes[] = 'date-hidden'; |
| 90 | } |
| 91 | |
| 92 | // If categories option is unticked, add a class of 'categories-hidden' to the body. |
| 93 | if ( 1 !== (int) $categories_option && ! empty( $categories ) ) { |
| 94 | $classes[] = 'categories-hidden'; |
| 95 | } |
| 96 | |
| 97 | // If tags option is unticked, add a class of 'tags-hidden' to the body. |
| 98 | if ( 1 !== (int) $tags_option && ! empty( $tags ) ) { |
| 99 | $classes[] = 'tags-hidden'; |
| 100 | } |
| 101 | |
| 102 | // If author option is unticked, add a class of 'author-hidden' to the body. |
| 103 | if ( 1 !== (int) $author_option && ! empty( $author ) ) { |
| 104 | $classes[] = 'author-hidden'; |
| 105 | } |
| 106 | |
| 107 | // If comment option is unticked, add a class of 'comment-hidden' to the body. |
| 108 | if ( 1 !== (int) $comment_option && ! empty( $comment ) ) { |
| 109 | $classes[] = 'comment-hidden'; |
| 110 | } |
| 111 | |
| 112 | return $classes; |
| 113 | } |
| 114 | add_filter( 'body_class', 'jetpack_post_details_body_classes' ); |
| 115 | |
| 116 | } |
| 117 | |
| 118 | if ( ! function_exists( 'jetpack_post_details_should_run' ) ) { |
| 119 | |
| 120 | /** |
| 121 | * Determines if Post Details should run. |
| 122 | */ |
| 123 | function jetpack_post_details_should_run() { |
| 124 | // Empty value representing falsy return value. |
| 125 | $void = array( false, null, null, null ); |
| 126 | |
| 127 | // If the theme doesn't support 'jetpack-content-options', don't continue. |
| 128 | if ( ! current_theme_supports( 'jetpack-content-options' ) ) { |
| 129 | return $void; |
| 130 | } |
| 131 | |
| 132 | $options = get_theme_support( 'jetpack-content-options' ); |
| 133 | $post_details = ( ! empty( $options[0]['post-details'] ) ) ? $options[0]['post-details'] : null; |
| 134 | |
| 135 | // If the theme doesn't support 'jetpack-content-options[ 'post-details' ]', don't continue. |
| 136 | if ( empty( $post_details ) ) { |
| 137 | return $void; |
| 138 | } |
| 139 | |
| 140 | $date = ( ! empty( $post_details['date'] ) ) ? $post_details['date'] : null; |
| 141 | $categories = ( ! empty( $post_details['categories'] ) ) ? $post_details['categories'] : null; |
| 142 | $tags = ( ! empty( $post_details['tags'] ) ) ? $post_details['tags'] : null; |
| 143 | $author = ( ! empty( $post_details['author'] ) ) ? $post_details['author'] : null; |
| 144 | $comment = ( ! empty( $post_details['comment'] ) ) ? $post_details['comment'] : null; |
| 145 | |
| 146 | // If there is no stylesheet and there are no date, categories, tags, author or comment declared, don't continue. |
| 147 | if ( |
| 148 | empty( $post_details['stylesheet'] ) |
| 149 | && ( empty( $date ) |
| 150 | || empty( $categories ) |
| 151 | || empty( $tags ) |
| 152 | || empty( $author ) |
| 153 | || empty( $comment ) ) |
| 154 | ) { |
| 155 | return $void; |
| 156 | } |
| 157 | |
| 158 | $date_option = Jetpack_Options::get_option_and_ensure_autoload( 'jetpack_content_post_details_date', 1 ); |
| 159 | $categories_option = Jetpack_Options::get_option_and_ensure_autoload( 'jetpack_content_post_details_categories', 1 ); |
| 160 | $tags_option = Jetpack_Options::get_option_and_ensure_autoload( 'jetpack_content_post_details_tags', 1 ); |
| 161 | $author_option = Jetpack_Options::get_option_and_ensure_autoload( 'jetpack_content_post_details_author', 1 ); |
| 162 | $comment_option = Jetpack_Options::get_option_and_ensure_autoload( 'jetpack_content_post_details_comment', 1 ); |
| 163 | |
| 164 | $options = array( $date_option, $categories_option, $tags_option, $author_option, $comment_option ); |
| 165 | $definied = array( $date, $categories, $tags, $author, $comment ); |
| 166 | |
| 167 | // If all the options are ticked, don't continue. |
| 168 | if ( array( 1, 1, 1, 1, 1 ) === $options ) { |
| 169 | return $void; |
| 170 | } |
| 171 | |
| 172 | return array( true, $options, $definied, $post_details ); |
| 173 | } |
| 174 | |
| 175 | } |
| 176 |