class-wcml-wpseo.php
70 lines
| 1 | <?php |
| 2 | |
| 3 | class WCML_WPSEO implements \IWPML_Action { |
| 4 | |
| 5 | private $updated_post_id; |
| 6 | |
| 7 | public function add_hooks() { |
| 8 | |
| 9 | add_filter( 'wcml_product_content_label', [ $this, 'wpseo_custom_field_label' ], 10, 2 ); |
| 10 | |
| 11 | if ( 'all' === WPML\FP\Obj::prop( 'clang', $_GET ) ) { |
| 12 | add_filter( 'wpseo_robots_array', [ $this, 'noindex_all_comments_page' ], 10, 1 ); |
| 13 | } |
| 14 | |
| 15 | if ( defined( 'WPSEO_VERSION' ) && defined( 'WPSEO_PATH' ) && isset( $_GET['page'] ) && \WCML\Utilities\AdminUrl::PAGE_WPML_WCML == $_GET['page'] && isset( $_GET['tab'] ) && \WCML\Utilities\AdminUrl::TAB_PRODUCTS == $_GET['tab'] ) { |
| 16 | if ( version_compare( WPSEO_VERSION, '3', '<' ) ) { |
| 17 | require_once WPSEO_PATH . 'admin/class-metabox.php'; |
| 18 | } elseif ( file_exists( WPSEO_PATH . 'admin/metabox/class-metabox.php' ) ) { |
| 19 | require_once WPSEO_PATH . 'admin/metabox/class-metabox.php'; |
| 20 | } |
| 21 | } |
| 22 | |
| 23 | add_action( 'post_updated', [ $this, 'set_updated_post_id' ] ); |
| 24 | add_action( 'wpseo_premium_post_redirect_slug_change', [ $this, 'wpseo_premium_post_redirect_slug_change' ] ); |
| 25 | } |
| 26 | |
| 27 | public function wpseo_custom_field_label( $field, $product_id ) { |
| 28 | global $woocommerce_wpml, $wpseo_metabox; |
| 29 | |
| 30 | $yoast_seo_fields = [ '_yoast_wpseo_focuskw', '_yoast_wpseo_title', '_yoast_wpseo_metadesc' ]; |
| 31 | |
| 32 | if ( ! is_array( maybe_unserialize( get_post_meta( $product_id, $field, true ) ) ) ) { |
| 33 | |
| 34 | if ( ! is_null( $wpseo_metabox ) && in_array( $field, $yoast_seo_fields ) ) { |
| 35 | |
| 36 | $wpseo_metabox_values = $wpseo_metabox->get_meta_boxes( 'product' ); |
| 37 | |
| 38 | $label = $wpseo_metabox_values[ str_replace( '_yoast_wpseo_', '', $field ) ]['title']; |
| 39 | |
| 40 | return $label; |
| 41 | } |
| 42 | } |
| 43 | |
| 44 | return $field; |
| 45 | } |
| 46 | |
| 47 | public function set_updated_post_id( $post_id ) { |
| 48 | $this->updated_post_id = $post_id; |
| 49 | } |
| 50 | |
| 51 | public function wpseo_premium_post_redirect_slug_change( $slug_changed_flag ) { |
| 52 | |
| 53 | if ( null !== $this->updated_post_id && get_post_type( $this->updated_post_id ) === 'product_variation' ) { |
| 54 | return true; |
| 55 | } |
| 56 | |
| 57 | return $slug_changed_flag; |
| 58 | } |
| 59 | |
| 60 | public function noindex_all_comments_page( $robotsArray ) { |
| 61 | if ( isset( $robotsArray['index'] ) ) { |
| 62 | unset( $robotsArray['index'] ); |
| 63 | } |
| 64 | $robotsArray['noindex'] = 'noindex'; |
| 65 | return $robotsArray; |
| 66 | } |
| 67 | |
| 68 | } |
| 69 | |
| 70 |