phpwordpressyoastseo插件,为自定义url生成自定义站点地图(代码片段)

author author     2022-12-09     366

关键词:

<?php
/**
 *  Create a new custom yoast seo sitemap
 */
 
add_filter( 'wpseo_sitemap_index', 'ex_add_sitemap_custom_items' );
add_action( 'init', 'init_wpseo_do_sitemap_actions' );


// Add custom index
function ex_add_sitemap_custom_items()
	global $wpseo_sitemaps;
	$date = $wpseo_sitemaps->get_last_modified('CUSTOM_POST_TYPE');

	$smp ='';

    	$smp .= '<sitemap>' . "\n";
	$smp .= '<loc>' . site_url() .'/CUSTOM_KEY-sitemap.xml</loc>' . "\n";
	$smp .= '<lastmod>' . htmlspecialchars( $date ) . '</lastmod>' . "\n";
	$smp .= '</sitemap>' . "\n";


	return $smp;



function init_wpseo_do_sitemap_actions()
	add_action( "wpseo_do_sitemap_CUSTOM_KEY", 'ex_generate_origin_combo_sitemap');





function ex_generate_origin_combo_sitemap()


	global $wpdb;
	global $wp_query;
	global $wpseo_sitemaps;

        $post_type = 'CUSTOM_POST_TYPE';

	wp_reset_query();
	$args = array(
		'posts_per_page'   => -1,
		'orderby'          => 'post_date',
		'order'            => 'DESC',
		'post_type'        => $post_type,
		'post_status'      => 'publish',
		'suppress_filters' => true
	);
	query_posts( $args );
	wp_reset_postdata();

	//echo '<pre>';print_r($url);echo '</pre>';
	$posts_array = get_posts( $args );

	$output = '';
	if( !empty( $posts_array ) )

		$chf = 'weekly';
		$pri = 1.0;

		foreach ( $posts_array as $p ) 
			$p->post_type   = $post_type;
			$p->post_status = 'publish';
			$p->filter      = 'sample';



			$url = array();

			if ( isset( $p->post_modified_gmt ) && $p->post_modified_gmt != '0000-00-00 00:00:00' && $p->post_modified_gmt > $p->post_date_gmt ) 
				$url['mod'] = $p->post_modified_gmt;
			 else 
				if ( '0000-00-00 00:00:00' != $p->post_date_gmt ) 
					$url['mod'] = $p->post_date_gmt;
				 else 
					$url['mod'] = $p->post_date;
				
			

			$url['loc'] = site_url().'/sample/all/'.$p->post_name;
			$url['chf'] = $chf;
			$url['pri'] = $pri;


			$output .= $wpseo_sitemaps->sitemap_url( $url );

			// Clear the post_meta and the term cache for the post, as we no longer need it now.
			// wp_cache_delete( $p->ID, 'post_meta' );
			// clean_object_term_cache( $p->ID, $post_type );
		
	

	// Grab last modified date
	$sql  = $wpdb->prepare(" SELECT MAX(p.post_modified_gmt) AS lastmod
		FROM	$wpdb->posts AS p
		WHERE post_status IN ('publish') AND post_type = %s ", $post_type );

	$mod = $wpdb->get_var( $sql );

	// Generate terms URLs
	$practitioner_terms = get_terms( 'TAXONOMY', 'orderby=count&hide_empty=0' );
	if( !empty( $practitioner_terms ) )

		$pri = 1;
		$chf = 'weekly';

		foreach ($practitioner_terms as $key => $term )

			$url = array();

			$url['loc'] = site_url().'/sample/'.$term->slug;
		      	$url['pri'] = $pri;
		      	$url['mod'] = $mod;
		      	$url['chf'] = $chf;
		      	$output .= $wpseo_sitemaps->sitemap_url( $url );

		
	

	// Generate permutation & combinations
	if( ( !empty( $practitioner_terms) ) &&  ( ! empty($posts_array ) ) )

		$pri = 1;
		$chf = 'weekly';

		wp_reset_postdata();


		foreach ($practitioner_terms as $key => $term )

			$args = array(
				'posts_per_page'   => -1,
				'orderby'          => 'post_date',
				'order'            => 'DESC',
				'post_type'        => $post_type,
				'post_status'      => 'publish',
				'suppress_filters' => true,
				'tax_query' => array(
				    array(
				        'taxonomy' => 'TAXONOMY',
				        'field'    => 'slug',
				        'terms'    => $term->slug,
				        'operator' => 'IN'
				    ),
				),
			);

			$posts_array = get_posts( $args );
			//echo '<pre>';print_r($posts_array);echo '</pre>';

			$url = array();

			foreach ($posts_array as $key => $p )
				$url['loc'] = site_url().'/sample/'.$term->slug.'/'.$p->post_name;
			      	$url['pri'] = $pri;
			      	$url['mod'] = $mod;
			      	$url['chf'] = $chf;
			      	$output .= $wpseo_sitemaps->sitemap_url( $url );

			

		
	


        if ( empty( $output ) ) 
            $wpseo_sitemaps->bad_sitemap = true;
            return;
        

        //Build the full sitemap
        $sitemap = '<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ';
        $sitemap .= 'xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" ';
        $sitemap .= 'xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' . "\n";
        $sitemap .= $output . '</urlset>';

        //echo $sitemap;
        $wpseo_sitemaps->set_sitemap($sitemap);



/*********************************************************
 *  OR we can use $wpseo_sitemaps->register_sitemap( 'CUSTOM_KEY', 'METHOD' );
 ********************************************************/

add_action( 'init', 'ex_register_my_new_sitemap', 99 );
/**
 * On init, run the function that will register our new sitemap as well
 * as the function that will be used to generate the XML. This creates an
 * action that we can hook into built around the new
 * sitemap name - 'wp_seo_do_sitemap_my_new_sitemap'
 */
function ex_register_my_new_sitemap() 
	global $wpseo_sitemaps;
	$wpseo_sitemaps->register_sitemap( 'CUSTOM_KEY', 'ex_generate_origin_combo_sitemap' );


add_action( 'init', 'init_do_sitemap_actions' );

function init_do_sitemap_actions()
	add_action( 'wp_seo_do_sitemap_our-CUSTOM_KEY', 'ex_generate_origin_combo_sitemap' );







为自定义 wordpress 插件加载 js 和 css 文件

】为自定义wordpress插件加载js和css文件【英文标题】:Loadjsandcssfilesforcustomwordpressplugin【发布时间】:2014-04-0403:46:27【问题描述】:在我的wp-contents/pugins文件夹中,我有program-registration。在这个插件里面我有js/registration.js和css/regis... 查看详情

androidgradle插件自定义gradle任务⑪(gradle任务分组|为自定义gradle任务指定分组|为自定义gradle任务指定任务描述|代码示例)(代码片段)

文章目录一、Gradle任务分组二、为自定义Gradle任务指定分组(DefaultTask#setGroup函数|DefaultTask#getGroup函数)三、为自定义Gradle任务指定任务描述(DefaultTask#setDescription函数)四、代码示例AndroidPluginDSLReference参考文档:AndroidStudio构建配置官... 查看详情

androidgradle插件gradle自定义plugin插件④(为自定义gradle插件的扩展配置扩展|在自定义插件中获取扩展属性)(代码片段)

文章目录一、AndroidGradle插件扩展的扩展二、为自定义Gradle插件的扩展配置扩展并获取扩展属性AndroidPluginDSLReference参考文档:AndroidStudio构建配置官方文档:https://developer.android.google.cn/studio/build添加构建依赖项参考文档:https://developer.... 查看详情

androidgradle插件gradle自定义plugin插件④(为自定义gradle插件的扩展配置扩展|在自定义插件中获取扩展属性)(代码片段)

文章目录一、AndroidGradle插件扩展的扩展二、为自定义Gradle插件的扩展配置扩展并获取扩展属性AndroidPluginDSLReference参考文档:AndroidStudio构建配置官方文档:https://developer.android.google.cn/studio/build添加构建依赖项参考文档:https://developer.... 查看详情

androidgradle插件自定义gradle任务⑤(为自定义gradle任务添加依赖任务|gradle任务依赖执行顺序控制)(代码片段)

文章目录一、为自定义Gradle任务添加依赖任务二、Gradle任务依赖执行顺序控制AndroidPluginDSLReference参考文档:AndroidStudio构建配置官方文档:https://developer.android.google.cn/studio/build添加构建依赖项参考文档:https://developer.android.google.cn/stud... 查看详情

WordPress ACF:为自定义帖子类型添加默认行到管理部分的中继器字段类型

...:2016-12-1010:23:23【问题描述】:WordPress的高级自定义字段插件提供了一个中继器类型字段。我已经知道如何通过代码向其中添加行,但我不知道如何让自定义帖子 查看详情

Spring Boot Test 无法使用 JUnit 5 为自定义集成测试源集加载应用程序上下文

...oot后端服务的一些集成测试开始。因此我添加了一个gradle插件来帮助我添 查看详情

.htaccess 用 WordPress 插件重写

】.htaccess用WordPress插件重写【英文标题】:.htaccessrewritewithWordPressplugin【发布时间】:2018-03-0808:19:33【问题描述】:我正在为自定义WordPress多站点网络构建一个WordPress插件,并且有一些文件使用URL变量从第二个数据库(不是WordPre... 查看详情

分隔插件不起作用

】分隔插件不起作用【英文标题】:Separatorinsetsnotworking【发布时间】:2014-01-1114:08:21【问题描述】:我在Storyboard中有一个UITableView,我已将分隔符插入配置为自定义(0,0)以及原型单元(0,0)。虽然我可以看到分隔线现在是表格宽度... 查看详情

jQuery 插件创建和面向公众的方法

】jQuery插件创建和面向公众的方法【英文标题】:jQueryplugincreationandpublicfacingmethods【发布时间】:2012-10-0412:28:33【问题描述】:我创建了一个插件,可以使用DIV将HTML选择框转换为自定义下拉菜单。一切正常,但我想让它变得更... 查看详情

在 Android 上为自定义形状添加阴影

】在Android上为自定义形状添加阴影【英文标题】:AddshadowtocustomshapeonAndroid【发布时间】:2011-03-0418:40:05【问题描述】:是否可以在Android中为自定义形状添加阴影?浏览文档后,我只看到了一种应用文本阴影的方法。我试过这个... 查看详情

将表转换为自定义类型数组

】将表转换为自定义类型数组【英文标题】:Converttableintoarrayofcustomtypes【发布时间】:2015-09-1808:26:58【问题描述】:一列表转一维数组很容易;my_arrayinteger[];my_array:=ARRAY(SELECT*FROMsingle_column_table);但就我而言,我需要将包含多列... 查看详情

快速将数据解析为自定义数据对象

】快速将数据解析为自定义数据对象【英文标题】:Parsedatatocustomdataobjectinswift【发布时间】:2018-03-1410:03:58【问题描述】:我正在尝试在swift4中使用codable将comming数据解析为自定义对象,但仍然不知道确切。这是我的自定义类:... 查看详情

自动为自定义异常添加前缀

】自动为自定义异常添加前缀【英文标题】:Automaticallyaddprefixtocustomexception【发布时间】:2016-07-1515:14:34【问题描述】:对于C++std:exception处理,我很怀疑。这是我在网上找到的一些示例代码,我目前正在使用。classMyBaseException:pu... 查看详情

为自定义类设置委托对象

】为自定义类设置委托对象【英文标题】:Setdelegateobjectforcustomclass【发布时间】:2014-08-2718:44:38【问题描述】:我制作了一个自定义视图。我设置了两种启动方式,1.initWithFrame(用于代码初始化)2.initWithCoder(用于情节提要初... 查看详情

为自定义类型扩展 spdlog

】为自定义类型扩展spdlog【英文标题】:Extendspdlogforcustomtype【发布时间】:2019-11-1709:00:21【问题描述】:在使用格式化时,有没有办法扩展spdlog以支持自定义结构作为项目?所以当我有一个structpintx;inty;intz;;pmy_p;我想做spdlog::info... 查看详情

为自引用表设置一对多关系

】为自引用表设置一对多关系【英文标题】:settingupaonetomanyrelationshipforaselfreferencingtable【发布时间】:2020-06-0705:25:33【问题描述】:我有一个Project实体,它有一个非自动生成的id字段和一个后继字段。这个继任者就是接下来的... 查看详情

为自定义 UITabBarItem 着色

】为自定义UITabBarItem着色【英文标题】:TintcustomUITabBarItem【发布时间】:2013-12-3015:24:54【问题描述】:在我的iPad应用程序中,我有自定义的UITabBarItem图像。我设置了选中和未选中的图标。选中的图标是红色的,未选中的图标是... 查看详情