1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- <?php
- /**
- * WPSEO plugin file.
- *
- * @package WPSEO\Admin\ConfigurationUI
- */
- /**
- * Class WPSEO_Config_Field_Multiple_Authors.
- */
- class WPSEO_Config_Field_Multiple_Authors extends WPSEO_Config_Field_Choice {
- /**
- * WPSEO_Config_Field_Multiple_Authors constructor.
- */
- public function __construct() {
- parent::__construct( 'multipleAuthors' );
- $this->set_property( 'label', __( 'Does, or will, your site have multiple authors?', 'wordpress-seo' ) );
- $this->set_property( 'description', __( 'If you choose no, your author archives will be deactivated to prevent duplicate content issues.', 'wordpress-seo' ) );
- $this->add_choice( 'yes', __( 'Yes', 'wordpress-seo' ) );
- $this->add_choice( 'no', __( 'No', 'wordpress-seo' ) );
- }
- /**
- * Set adapter.
- *
- * @param WPSEO_Configuration_Options_Adapter $adapter Adapter to register lookup on.
- */
- public function set_adapter( WPSEO_Configuration_Options_Adapter $adapter ) {
- $adapter->add_custom_lookup(
- $this->get_identifier(),
- [ $this, 'get_data' ],
- [ $this, 'set_data' ]
- );
- }
- /**
- * Get the data from the stored options.
- *
- * @return null|string
- */
- public function get_data() {
- if ( WPSEO_Options::get( 'has_multiple_authors', false ) ) {
- $value = WPSEO_Options::get( 'has_multiple_authors' );
- }
- if ( ! isset( $value ) || is_null( $value ) ) {
- // If there are more than one users with level > 1 default to multiple authors.
- $user_criteria = [
- 'fields' => 'IDs',
- 'who' => 'authors',
- ];
- $users = get_users( $user_criteria );
- $value = count( $users ) > 1;
- }
- return ( $value ) ? 'yes' : 'no';
- }
- /**
- * Set the data in the options.
- *
- * @param string $data The data to set for the field.
- *
- * @return bool Returns true or false for successful storing the data.
- */
- public function set_data( $data ) {
- $value = ( $data === 'yes' );
- // Set multiple authors option.
- $result_multiple_authors = WPSEO_Options::set( 'has_multiple_authors', $value );
- /*
- * Set disable author archives option. When multiple authors is set to true,
- * the disable author option has to be false. Because of this the $value is inversed.
- */
- $result_author_archives = WPSEO_Options::set( 'disable-author', ! $value );
- return ( $result_multiple_authors === true && $result_author_archives === true );
- }
- }
|