| Server IP : 80.74.154.100 / Your IP : 216.73.217.0 Web Server : Apache System : Linux marissa.metanet.ch 4.18.0-553.141.2.lve.el7h.x86_64 #1 SMP Wed Jul 8 17:20:31 UTC 2026 x86_64 User : onlineadmin ( 10487) PHP Version : 8.5.7 Disable Function : opcache_get_status MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /home/httpd/vhosts/comeonline.ch/httpdocs/wp-content/plugins/wpsso/lib/submenu/ |
Upload File : |
<?php
/*
* License: GPLv3
* License URI: https://www.gnu.org/licenses/gpl.txt
* Copyright 2012-2026 Jean-Sebastien Morisset (https://wpsso.com/)
*/
if ( ! defined( 'ABSPATH' ) ) {
die( 'These aren\'t the droids you\'re looking for.' );
}
if ( ! class_exists( 'WpssoSubmenuGeneral' ) && class_exists( 'WpssoAdmin' ) ) {
class WpssoSubmenuGeneral extends WpssoAdmin {
public function __construct( &$plugin, $id, $name, $lib, $ext ) {
$this->p =& $plugin;
if ( $this->p->debug->enabled ) {
$this->p->debug->mark();
}
$this->menu_id = $id;
$this->menu_name = $name;
$this->menu_lib = $lib;
$this->menu_ext = $ext;
$this->menu_metaboxes = array(
'open_graph' => _x( 'General Settings', 'metabox title', 'wpsso' ),
'social_search' => _x( 'Social and Search Sites', 'metabox title', 'wpsso' ),
'social_pages' => _x( 'Social Pages and Accounts', 'metabox title', 'wpsso' ),
);
}
/*
* Add metaboxes for this settings page.
*
* See WpssoAdmin->load_settings_page().
*/
protected function add_settings_page_metaboxes( $callback_args = array() ) {
if ( $this->p->debug->enabled ) {
$this->p->debug->mark();
}
$this->maybe_show_language_notice();
$this->p->media->get_default_images( $size_name = 'wpsso-opengraph' );
parent::add_settings_page_metaboxes( $callback_args );
}
/*
* Callback method must be public for add_meta_box() hook.
*
* See WpssoAdmin->add_settings_page_metaboxes().
*/
public function show_metabox_open_graph( $obj, $mb ) {
if ( $this->p->debug->enabled ) {
$this->p->debug->mark();
}
$tabs = array(
'site' => _x( 'Site Information', 'metabox tab', 'wpsso' ),
'loc_defs' => _x( 'Location Defaults', 'metabox tab', 'wpsso' ),
'content' => _x( 'Titles / Descriptions', 'metabox tab', 'wpsso' ),
'images' => _x( 'Images', 'metabox tab', 'wpsso' ),
'videos' => _x( 'Videos', 'metabox tab', 'wpsso' ),
);
$this->show_metabox_tabbed( $obj, $mb, $tabs );
}
/*
* Callback method must be public for add_meta_box() hook.
*
* See WpssoAdmin->add_settings_page_metaboxes().
*/
public function show_metabox_social_search( $obj, $mb ) {
if ( $this->p->debug->enabled ) {
$this->p->debug->mark();
}
$tabs = array(
'facebook' => _x( 'Facebook', 'metabox tab', 'wpsso' ),
'google' => _x( 'Google', 'metabox tab', 'wpsso' ),
'pinterest' => _x( 'Pinterest', 'metabox tab', 'wpsso' ),
'twitter' => _x( 'X (Twitter)', 'metabox tab', 'wpsso' ),
'other_sites' => _x( 'Other Sites', 'metabox tab', 'wpsso' ),
);
$this->show_metabox_tabbed( $obj, $mb, $tabs );
}
protected function get_table_rows( $page_id, $metabox_id, $tab_key = '', $args = array() ) {
$table_rows = array();
$match_rows = trim( $page_id . '-' . $metabox_id . '-' . $tab_key, '-' );
switch ( $match_rows ) {
case 'essential-settings':
$def_site_name = get_bloginfo( 'name' );
$def_site_desc = get_bloginfo( 'description' );
$table_rows[ 'site_name' ] = '' .
$this->form->get_th_html_locale( _x( 'Site Name', 'option label', 'wpsso' ),
$css_class = '', $css_id = 'site_name' ) .
'<td>' . $this->form->get_input_locale( 'site_name', $css_class = 'long_name', $css_id = '',
$len = 0, $def_site_name ) . '</td>';
$table_rows[ 'site_desc' ] = '' .
$this->form->get_th_html_locale( _x( 'Site Description', 'option label', 'wpsso' ),
$css_class = '', $css_id = 'site_desc' ) .
'<td>' . $this->form->get_input_locale( 'site_desc', $css_class = 'wide', $css_id = '',
$len = 0, $def_site_desc ) . '</td>';
$table_rows[ 'og_def_img_id' ] = '' .
$this->form->get_th_html_locale( _x( 'Default Image ID', 'option label', 'wpsso' ),
$css_class = '', $css_id = 'og_def_img_id' ) .
'<td>' . $this->form->get_input_image_upload_locale( 'og_def_img' ) . '</td>';
$table_rows[ 'og_def_img_url' ] = '' .
$this->form->get_th_html_locale( _x( 'or Default Image URL', 'option label', 'wpsso' ),
$css_class = '', $css_id = 'og_def_img_url' ) .
'<td>' . $this->form->get_input_image_url_locale( 'og_def_img' ) . '</td>';
if ( ! empty( $this->p->avail[ 'p' ][ 'schema' ] ) ) {
$this->add_table_rows_schema_publisher_type( $table_rows );
}
break;
case 'general-open_graph-site':
$def_site_name = SucomUtilWP::get_site_name();
$def_site_desc = SucomUtilWP::get_site_description();
$def_home_url = SucomUtilWP::get_home_url(); // Returns the home page URL with a trailing slash.
$org_types_strict = $this->p->util->get_form_cache( 'org_types_select_strict', $add_none = false ); // Use strict for Google.
$place_names = $this->p->util->get_form_cache( 'place_names', $add_none = true );
$table_rows[ 'site_name' ] = '' .
$this->form->get_th_html_locale( _x( 'Site Name', 'option label', 'wpsso' ),
$css_class = '', $css_id = 'site_name' ) .
'<td>' . $this->form->get_input_locale( 'site_name', $css_class = 'long_name', $css_id = '',
$len = 0, $def_site_name ) . '</td>';
$table_rows[ 'site_name_alt' ] = '' .
$this->form->get_th_html_locale( _x( 'Site Alternate Name', 'option label', 'wpsso' ),
$css_class = '', $css_id = 'site_name_alt' ) .
'<td>' . $this->form->get_input_locale( 'site_name_alt', $css_class = 'long_name' ) . '</td>';
$table_rows[ 'site_desc' ] = '' .
$this->form->get_th_html_locale( _x( 'Site Description', 'option label', 'wpsso' ),
$css_class = '', $css_id = 'site_desc' ) .
'<td>' . $this->form->get_input_locale( 'site_desc', $css_class = 'wide', $css_id = '',
$len = 0, $def_site_desc ) . '</td>';
$table_rows[ 'site_home_url' ] = $this->form->get_tr_hide( $in_view = 'basic', 'site_home_url' ) .
$this->form->get_th_html_locale( _x( 'Site Home URL', 'option label', 'wpsso' ),
$css_class = '', $css_id = 'site_home_url' ) .
'<td>' . $this->form->get_input_locale( 'site_home_url', $css_class = 'wide', $css_id = '',
$len = 0, $def_home_url ) . '</td>';
if ( ! empty( $this->p->avail[ 'p' ][ 'schema' ] ) ) { // Since WPSSO Core v6.23.3.
$tr_on_change_organization_html = $this->form->get_tr_on_change( 'site_pub_schema_type', 'organization' );
$this->add_table_rows_schema_publisher_type( $table_rows );
$table_rows[ 'site_org_place_id' ] = $tr_on_change_organization_html .
$this->form->get_th_html( _x( 'Organization Location', 'option label', 'wpsso' ),
$css_class = '', $css_id = 'site_org_place_id' ) .
'<td>' . $this->form->get_select( 'site_org_place_id', $place_names,
$css_class = 'wide', $css_id = '', $is_assoc = true ) . '</td>';
$table_rows[ 'site_org_schema_type' ] = $tr_on_change_organization_html .
$this->form->get_th_html( _x( 'Organization Schema Type', 'option label', 'wpsso' ),
$css_class = '', $css_id = 'site_org_schema_type' ) .
'<td>' . $this->form->get_select( 'site_org_schema_type', $org_types_strict,
$css_class = 'schema_type', $css_id = '', $is_assoc = true, $is_disabled = false,
$selected = false, $event_names = array( 'on_focus_load_json' ),
$event_args = array( 'json_var' => 'org_types' ) ) . '</td>';
}
break;
case 'general-open_graph-loc_defs':
$dimension_units = WpssoUtilUnits::get_dimension_units();
$fl_volume_units = WpssoUtilUnits::get_fluid_volume_units();
$weight_units = WpssoUtilUnits::get_weight_units();
$table_rows[ 'og_def_country' ] = '' .
$this->form->get_th_html( _x( 'Default Country', 'option label', 'wpsso' ),
$css_class = '', $css_id = 'og_def_country' ) .
'<td>' . $this->form->get_select_country( 'og_def_country' ) . '</td>';
$table_rows[ 'og_def_timezone' ] = '' .
$this->form->get_th_html( _x( 'Default Timezone', 'option label', 'wpsso' ),
$css_class = '', $css_id = 'og_def_timezone' ) .
'<td>' . $this->form->get_select_timezone( 'og_def_timezone' ) . '</td>';
$table_rows[ 'og_def_currency' ] = '' .
$this->form->get_th_html( _x( 'Default Currency', 'option label', 'wpsso' ),
$css_class = '', $css_id = 'og_def_currency' ) .
'<td>' . $this->form->get_select( 'og_def_currency', SucomUtil::get_currencies() ) . '</td>';
$table_rows[ 'og_def_dimension_units' ] = '' .
$this->form->get_th_html( _x( 'Default Dimension Units', 'option label', 'wpsso' ),
$css_class = '', $css_id = 'og_def_dimension_units' ) .
'<td>' . $this->form->get_select( 'og_def_dimension_units', $dimension_units,
$css_class = 'unit_text', $css_id = '', $is_assoc = 'sorted' ) . '</td>';
$table_rows[ 'og_def_weight_units' ] = '' .
$this->form->get_th_html( _x( 'Default Weight Units', 'option label', 'wpsso' ),
$css_class = '', $css_id = 'og_def_weight_units' ) .
'<td>' . $this->form->get_select( 'og_def_weight_units', $weight_units,
$css_class = 'unit_text', $css_id = '', $is_assoc = 'sorted' ) . '</td>';
$table_rows[ 'og_def_fluid_volume_units' ] = '' .
$this->form->get_th_html( _x( 'Default Fluid Volume Units', 'option label', 'wpsso' ),
$css_class = '', $css_id = 'og_def_fluid_volume_units' ) .
'<td>' . $this->form->get_select( 'og_def_fluid_volume_units', $fl_volume_units,
$css_class = 'unit_text', $css_id = '', $is_assoc = 'sorted' ) . '</td>';
break;
case 'general-open_graph-content':
$table_rows[ 'og_title_sep' ] = '' .
$this->form->get_th_html( _x( 'Title Separator', 'option label', 'wpsso' ),
$css_class = '', $css_id = 'og_title_sep' ) .
'<td>' . $this->form->get_input( 'og_title_sep', 'xshort' ) . '</td>';
$table_rows[ 'og_ellipsis' ] = '' .
$this->form->get_th_html( _x( 'Truncated Text Ellipsis', 'option label', 'wpsso' ),
$css_class = '', $css_id = 'og_ellipsis' ) .
'<td>' . $this->form->get_input( 'og_ellipsis', 'xshort' ) . '</td>';
$table_rows[ 'og_desc_hashtags' ] = '' .
$this->form->get_th_html( _x( 'Description Hashtags', 'option label', 'wpsso' ),
$css_class = '', $css_id = 'og_desc_hashtags' ) .
'<td>' . $this->form->get_select( 'og_desc_hashtags', range( 0, $this->p->cf[ 'form' ][ 'max_hashtags' ] ),
$css_class = 'short', $css_id = '', $is_assoc = true ) . ' ' .
_x( 'tag names', 'option comment', 'wpsso' ) . '</td>';
break;
case 'general-open_graph-images':
$max_media_items = $this->p->cf[ 'form' ][ 'max_media_items' ];
$table_rows[ 'og_img_max' ] = $this->form->get_tr_hide( $in_view = 'basic', 'og_img_max' ) .
$this->form->get_th_html( _x( 'Maximum Images to Include', 'option label', 'wpsso' ),
$css_class = '', $css_id = 'og_img_max' ) .
'<td>' . $this->form->get_select( 'og_img_max', range( 0, $max_media_items ),
$css_class = 'short', $css_id = '', $is_assoc = true ) .
$this->p->msgs->maybe_preview_images_first() . '</td>';
$table_rows[ 'og_def_img_id' ] = '' .
$this->form->get_th_html_locale( _x( 'Default Image ID', 'option label', 'wpsso' ),
$css_class = '', $css_id = 'og_def_img_id' ) .
'<td>' . $this->form->get_input_image_upload( 'og_def_img' ) . '</td>';
$table_rows[ 'og_def_img_url' ] = '' .
$this->form->get_th_html_locale( _x( 'or Default Image URL', 'option label', 'wpsso' ),
$css_class = '', $css_id = 'og_def_img_url' ) .
'<td>' . $this->form->get_input_image_url( 'og_def_img' ) . '</td>';
break;
case 'general-open_graph-videos':
break;
case 'general-social_search-facebook':
$user_contacts = $this->p->user->get_form_contact_fields();
$table_rows[ 'fb_site_verify' ] = '' .
$this->form->get_th_html( _x( 'Facebook Domain Verification ID', 'option label', 'wpsso' ),
$css_class = '', $css_id = 'fb_site_verify' ) .
'<td>' . $this->form->get_input( 'fb_site_verify', $css_class = 'api_key' ) . '</td>';
$table_rows[ 'fb_locale' ] = '' .
$this->form->get_th_html_locale( _x( 'Facebook Locale', 'option label', 'wpsso' ),
$css_class = '', $css_id = 'fb_locale' ) .
'<td>' . $this->form->get_select_locale( 'fb_locale', SucomUtil::get_publisher_languages( 'facebook' ) ) . '</td>';
$table_rows[ 'fb_app_id' ] = $this->form->get_tr_hide( $in_view = 'basic', 'fb_app_id' ) .
$this->form->get_th_html( _x( 'Facebook Application ID', 'option label', 'wpsso' ),
$css_class = '', $css_id = 'fb_app_id' ) .
'<td>' . $this->form->get_input( 'fb_app_id', $css_class = 'api_key' ) . '</td>';
break;
case 'general-social_search-google':
$table_rows[ 'g_site_verify' ] = '' .
$this->form->get_th_html( _x( 'Google Website Verification ID', 'option label', 'wpsso' ),
$css_class = '', $css_id = 'g_site_verify' ) .
'<td>' . $this->form->get_input( 'g_site_verify', $css_class = 'api_key' ) . '</td>';
/*
* Robots settings.
*
* WpssoUtilRobots->is_disabled() returns true if:
*
* - An SEO plugin is active.
* - The 'add_meta_name_robots' option is unchecked.
* - The 'wpsso_robots_disabled' filter returns true.
*/
$robots_disabled = $this->p->util->robots->is_disabled();
$table_rows[ 'robots_max_snippet' ] = $this->form->get_tr_hide( $in_view = 'basic', 'robots_max_snippet' ) .
$this->form->get_th_html( _x( 'Robots Snippet Max. Length', 'option label', 'wpsso' ),
$css_class = '', $css_id = 'robots_max_snippet' ) .
'<td>' . $this->form->get_input( 'robots_max_snippet',
$css_class = 'chars', $css_id = '', $len = 0, $holder = false, $robots_disabled ) . ' ' .
_x( 'characters or less', 'option comment', 'wpsso' ) . ' ' .
_x( '(-1 for no limit)', 'option comment', 'wpsso' ) . '</td>';
$table_rows[ 'robots_max_image_preview' ] = $this->form->get_tr_hide( $in_view = 'basic', 'robots_max_image_preview' ) .
$this->form->get_th_html( _x( 'Robots Image Preview Size', 'option label', 'wpsso' ),
$css_class = '', $css_id = 'robots_max_image_preview' ) .
'<td>' . $this->form->get_select( 'robots_max_image_preview', $this->p->cf[ 'form' ][ 'robots_max_image_preview' ],
$css_class = '', $css_id = '', $is_assoc = true, $robots_disabled ) . '</td>';
$table_rows[ 'robots_max_video_preview' ] = $this->form->get_tr_hide( $in_view = 'basic', 'robots_max_video_preview' ) .
$this->form->get_th_html( _x( 'Robots Video Max. Previews', 'option label', 'wpsso' ),
$css_class = 'medium', $css_id = 'robots_max_video_preview' ) .
'<td>' . $this->form->get_input( 'robots_max_video_preview',
$css_class = 'chars', $css_id = '', $len = 0, $holder = false, $robots_disabled ) .
_x( 'seconds', 'option comment', 'wpsso' ) . ' ' .
_x( '(-1 for no limit)', 'option comment', 'wpsso' ) . '</td>';
break;
case 'general-social_search-pinterest':
$table_rows[ 'pin_site_verify' ] = '' .
$this->form->get_th_html( _x( 'Pinterest Website Verification ID', 'option label', 'wpsso' ),
$css_class = '', $css_id = 'pin_site_verify' ) .
'<td>' . $this->form->get_input( 'pin_site_verify', 'api_key' ) . '</td>';
$table_rows[ 'pin_add_nopin_header_img_tag' ] = $this->form->get_tr_hide( $in_view = 'basic', 'pin_add_nopin_header_img_tag' ) .
$this->form->get_th_html( _x( 'Add "nopin" to Site Header Image', 'option label', 'wpsso' ),
$css_class = '', $css_id = 'pin_add_nopin_header_img_tag' ) .
'<td>' . $this->form->get_checkbox( 'pin_add_nopin_header_img_tag' ) .' ' .
_x( '(recommended)', 'option comment', 'wpsso' ) . '</td>';
$table_rows[ 'pin_add_nopin_media_img_tag' ] = '' .
$this->form->get_th_html( _x( 'Add Pinterest "nopin" to Images', 'option label', 'wpsso' ),
$css_class = '', $css_id = 'pin_add_nopin_media_img_tag' ) .
'<td>' . $this->form->get_checkbox( 'pin_add_nopin_media_img_tag' ) . ' ' .
_x( '(recommended)', 'option comment', 'wpsso' ) . '</td>';
$table_rows[ 'pin_add_img_html' ] = '' .
$this->form->get_th_html( _x( 'Add Hidden Image for Pinterest', 'option label', 'wpsso' ),
$css_class = '', $css_id = 'pin_add_img_html' ) .
'<td>' . $this->form->get_checkbox( 'pin_add_img_html' ) . ' ' .
_x( '(recommended)', 'option comment', 'wpsso' ) . '</td>';
break;
case 'general-social_search-twitter':
$tc_types = array(
'summary' => _x( 'Summary', 'option value', 'wpsso' ),
'summary_large_image' => _x( 'Summary Large Image', 'option value', 'wpsso' ),
);
$table_rows[ 'tc_type_singular' ] = '' .
$this->form->get_th_html( _x( 'X (Twitter) Card for Singular with Image', 'option label', 'wpsso' ),
$css_class = '', $css_id = 'tc_type_singular' ) .
'<td>' . $this->form->get_select( 'tc_type_singular', $tc_types ) . '</td>';
$table_rows[ 'tc_type_default' ] = '' .
$this->form->get_th_html( _x( 'X (Twitter) Card Type by Default', 'option label', 'wpsso' ),
$css_class = '', $css_id = 'tc_type_default' ) .
'<td>' . $this->form->get_select( 'tc_type_default', $tc_types ) . '</td>';
break;
case 'general-social_search-other_sites':
$table_rows[ 'ahrefs_site_verify' ] = '' .
$this->form->get_th_html( _x( 'Ahrefs Website Verification ID', 'option label', 'wpsso' ),
$css_class = '', $css_id = 'ahrefs_site_verify' ) .
'<td>' . $this->form->get_input( 'ahrefs_site_verify', 'api_key' ) . '</td>';
$table_rows[ 'baidu_site_verify' ] = '' .
$this->form->get_th_html( _x( 'Baidu Website Verification ID', 'option label', 'wpsso' ),
$css_class = '', $css_id = 'baidu_site_verify' ) .
'<td>' . $this->form->get_input( 'baidu_site_verify', 'api_key' ) . '</td>';
$table_rows[ 'bing_site_verify' ] = '' .
$this->form->get_th_html( _x( 'Bing Website Verification ID', 'option label', 'wpsso' ),
$css_class = '', $css_id = 'bing_site_verify' ) .
'<td>' . $this->form->get_input( 'bing_site_verify', 'api_key' ) . '</td>';
$table_rows[ 'yandex_site_verify' ] = '' .
$this->form->get_th_html( _x( 'Yandex Website Verification ID', 'option label', 'wpsso' ),
$css_class = '', $css_id = 'yandex_site_verify' ) .
'<td>' . $this->form->get_input( 'yandex_site_verify', 'api_key' ) . '</td>';
break;
case 'general-social_pages':
foreach ( WpssoConfig::get_social_accounts() as $social_key => $label ) {
switch ( $social_key ) {
case 'fb_publisher_url':
case 'instagram_publisher_url':
case 'linkedin_publisher_url':
case 'pin_publisher_url':
case 'tiktok_publisher_url':
case 'tc_site':
case 'yt_publisher_url':
$tr_hide = '';
break;
default:
$tr_hide = $this->form->get_tr_hide( $in_view = 'basic', 'social_key' );
break;
}
$input_class = strpos( $social_key, '_url' ) ? 'wide' : '';
$table_rows[ $social_key ] = $tr_hide .
$this->form->get_th_html_locale( _x( $label, 'option value', 'wpsso' ),
$css_class = 'nowrap', $social_key ) .
'<td>' . $this->form->get_input_locale( $social_key, $input_class ) . '</td>';
}
break;
}
return $table_rows;
}
private function add_table_rows_schema_publisher_type( array &$table_rows ) {
if ( $this->p->debug->enabled ) {
$this->p->debug->mark();
}
$site_owners = WpssoUser::get_persons_names( $add_none = true, $roles_id = 'owner' );
$table_rows[ 'site_pub_schema_type' ] = '' .
$this->form->get_th_html( _x( 'Site Publisher Type', 'option label', 'wpsso' ), $css_class = '', $css_id = 'site_pub_schema_type' ) .
'<td>' . $this->form->get_select( 'site_pub_schema_type', $this->p->cf[ 'form' ][ 'publisher_types' ],
$css_class = '', $css_id = '', $is_assoc = true, $is_disabled = false,
$selected = false, $event_names = array( 'on_change_unhide_rows' ) ) . '</td>';
/*
* Publisher Type Person.
*/
$table_rows[ 'site_pub_person_id' ] = $this->form->get_tr_on_change( 'site_pub_schema_type', 'person' ) .
$this->form->get_th_html( _x( 'Site Publisher Person', 'option label', 'wpsso' ), '', 'site_pub_person_id' ) .
'<td>' . $this->form->get_select( 'site_pub_person_id', $site_owners,
$css_class = '', $css_id = '', $is_assoc = true ) . '</td>';
/*
* Publisher Type Organization.
*/
$table_rows[ 'site_org_logo_url' ] = $this->form->get_tr_on_change( 'site_pub_schema_type', 'organization' ) .
$this->form->get_th_html_locale( '<a href="https://developers.google.com/search/docs/advanced/structured-data/logo">' .
_x( 'Organization Logo URL', 'option label', 'wpsso' ) . '</a>', $css_class = '', $css_id = 'site_org_logo_url' ) .
'<td>' . $this->form->get_input_locale( 'site_org_logo_url', $css_class = 'wide' ) . '</td>';
$table_rows[ 'site_org_banner_url' ] = $this->form->get_tr_on_change( 'site_pub_schema_type', 'organization' ) .
$this->form->get_th_html_locale( '<a href="https://developers.google.com/search/docs/data-types/article#logo-guidelines">' .
_x( 'Organization Banner URL', 'option label', 'wpsso' ) . '</a>', $css_class = '', $css_id = 'site_org_banner_url' ) .
'<td>' . $this->form->get_input_locale( 'site_org_banner_url', $css_class = 'wide' ) . '</td>';
}
}
}