我正在尝试向404页面添加内容。例如,我想为mysite定义帖子内容。com/现有页/虚拟页,而不是显示404页。我尝试了几种不同的方法,但都没有成功,因此我非常感谢您的帮助。我的实际结构是:mysite。com/个人发展/课程。我的网站。com/个人发展存在,但mysite除外。com/个人发展/班级没有。我的网站。com/personal development/class将显示mysite中更改的内容。com/个人发展
如果类页面实际存在,则“添加\\u重写\\u”规则似乎有效。
add_action( \'init\', \'dynamic_classes_class_type_rewrite\' );
function dynamic_classes_class_type_rewrite()
{
global $wp_rewrite;
add_rewrite_tag( \'%personal-development%\', \'([^&]+)\' );
add_rewrite_rule(
\'^personal-development/([^/]*)/?\',
\'index.php?page_id=17318&class_type=$matches[1]\',
\'top\'
);
}
这一个抓到页面并取消404。然后显示主页内容,但不使用模板样式表,也不允许我更改内容。下面的示例是我尝试获取适当的内容并显示它。我还尝试显示不同的模板。我能够显示模板,但仍然无法显示任何内容。
add_filter(\'template_redirect\', \'dynamic_classes_class_type_redirect\' );
function dynamic_classes_class_type_redirect()
{
//for best seo I am setting up a redirect for pages.
global $wp, $wpdb, $wp_query;
if(!$post_title=get_post($post)->post_title)//looks like we hit a 404
{
$url=explode(\'/\',dynamic_classes_page_url());//see if its one of our dynamically created pages.
if(count($url)>4)//we need to make sure this long enough
{
$db_prefix= $wpdb->prefix;
$sql=\'SELECT ID
FROM \'.$db_prefix.\'posts
WHERE post_name=\\\'\'.implode(\'\',array_slice($url,-2,1)).\'\\\' /*get the second to last*/
LIMIT 1\';
$rs_class = $wpdb->get_results($sql);
if($rs_class)
{
status_header( 200 );
$wp_query->is_404=false;
wp_reset_query();
setup_postdata(get_post($rs_class[0]->ID));
}
}
}
}
add\\u action和“the\\u post”将允许我根据需要更改内容,但不允许更改404的内容,即使我像上面的示例那样取消了404。
add_action( \'the_post\', \'my_the_post_action\' );
function my_the_post_action( $post_object ) {
$post_object->post_content=\'Programmer test.\';
}