我假设WP的底层数据库中有一个表,如何向其中添加自定义的post类型。
一、 我不想在每个页面上都加载,我希望能够在页面上使用slug和post类型的查询。
function cptui_register_my_cpts_app() {
$labels = array();
$args = array();
register_post_type( "app", $args );
}
add_action( \'init\', \'cptui_register_my_cpts_app\' );
更具体地说,如果成员尚未登录,我希望能够创建从自定义帖子类型(在本例中为“app”)到登录页面的重定向。
function my_redirect() {
if( !is_user_logged_in() && is_singular(\'app\') ) {
wp_redirect( \'login page\' );
exit();
}
}
add_action(\'init\', \'my_redirect\');
SO网友:Digvijayad
自定义帖子类型自动存储在wp_posts
表以及所有其他员额。但是,您不能使用所有常规查询来访问它们。我相信这就是你要找的pre_get_posts
钩根据codex
此挂钩在创建查询变量对象之后,但在实际查询运行之前调用。pre\\u get\\u posts操作允许开发人员通过引用访问$query对象
下面是一个非常好的片段,它允许您对自定义帖子类型使用普通的帖子查询。从中找到here.(未经个人测试,我几天前见过。还没有机会尝试。)
/*
* Extend wp search to include custom post meta
*/
function custom_search_query( $query ) {
if ( !is_admin() && $query->is_search ) {
$query->set(\'meta_query\', array(
array(
\'key\' => \'__meta_key__\',
\'value\' => $query->query_vars[\'s\'],
\'compare\' => \'LIKE\'
)
));
$query->set(\'post_type\', \'__your_post_type__\'); // optional
};
}
add_filter( \'pre_get_posts\', \'dc_custom_search_query\');
?>
SO网友:Cedon
您可以使用WP_Query
类和post_type
论点所以在你的情况下,机器可读的名称app
指定给您的自定义帖子类型:
$args = array(
\'post_type\' => \'app\',
);
$my_query = new WP_Query( $args );
然后将其输入循环:
<?php
if ( $my_query->have_posts() ) {
while ( $my_query->have_posts() ) : $my_query->the_post(); ?>
// Your Loop Code
<?php endwhile; ?>
<?php wp_reset_postdata(); ?>
<?php else : ?>
// No Posts Found Code
<?php endif; ?>
?>
您可以使用其他参数进一步优化结果。只需确保您的自定义post类型声明
public => true,
在其论点中。
也就是说,您对自定义帖子类型、任何相关自定义分类法等的定义实际上应该在插件中。这样,您可以随意交换主题,而无需孤立自定义帖子和分类法,或者每次都必须将代码移植到新主题中。