是否有基于页面模板打印帖子/页面/自定义帖子类型层次结构的方法?
例如,我经常被要求查看另一个网站,我希望能够“查看”分配给“新闻稿”PHP模板的所有页面以及分配给“产品信息”PHP模板的所有页面。
是否有这样的插件或可以推荐的代码?
是否有基于页面模板打印帖子/页面/自定义帖子类型层次结构的方法?
例如,我经常被要求查看另一个网站,我希望能够“查看”分配给“新闻稿”PHP模板的所有页面以及分配给“产品信息”PHP模板的所有页面。
是否有这样的插件或可以推荐的代码?
要按模板对所有帖子进行排序,您需要两个函数:一个用于查询,另一个用于添加自定义顺序。
function get_posts_by_template()
{
add_filter( \'posts_orderby\', \'orderby_template\' );
$query = new WP_Query(
array(
//\'meta_key\' => \'_wp_page_template\',
\'post_type\' => \'any\',
\'orderby\' => \'title\',
\'order\' => \'ASC\',
\'posts_per_page\' => -1, // dangerous
\'meta_query\' => array(
array(
\'key\' => \'_wp_page_template\',
\'value\' => \'\',
\'compare\' => \'!=\'
)
)
)
);
if ( empty ( $query->posts ) )
return FALSE;
return $query->posts;
}
更改顺序function orderby_template( $orderby )
{
global $wpdb;
remove_filter( current_filter(), __FUNCTION__ );
$orderby = $wpdb->postmeta . \'.meta_value DESC, \' . $orderby;
return $orderby;
}
要获得良好的概述,我们可以使用以下内容:function list_posts_by_template()
{
$posts = get_posts_by_template();
if ( ! $posts )
return print \'no posts with a template found\';
static $template = \'\';
foreach ( $posts as $post )
{
$post_template = get_post_meta( $post->ID, \'_wp_page_template\', TRUE ) . \'<br>\';
if ( $post_template !== $template )
{
print "<h2>$post_template</h2>";
$template = $post_template;
}
printf(
\'<p><a href="%1$s">%2$s</a></p>\',
get_permalink( $post->ID ),
esc_html( $post->post_title )
);
}
}
我不确定您在什么情况下需要此功能,但指定的页面模板保存在$wpdb->postmeta
在_wp_page_template
这样你就可以做像。。。
$templates = $wpdb->get_results("SELECT * FROM {$wpdb->postmeta} WHERE meta_key = \'_wp_page_template\'");
var_dump($templates);
。。。要获取模板。。。$args = array(
\'post_type\' => \'any\',
\'meta_query\' => array(
array(
\'key\' => \'_wp_page_template\',
\'compare\' => \'EXISTS\',
)
)
);
$t = new WP_Query($args);
var_dump($t);
。。。让帖子与之进行比较。它们由ID
== post_id
我想你可以把这两者结合起来。。。
$templates = $wpdb->get_results(
"SELECT post_id,meta_value,post_title
FROM {$wpdb->postmeta}
JOIN {$wpdb->posts} ON {$wpdb->posts}.ID = {$wpdb->postmeta}.post_id
WHERE meta_key = \'_wp_page_template\'");
var_dump($templates);
您无法获取automagically assigned templates 这样,如果你需要的话。关于发布的问题here, 有没有可能让输出变成这样?哪里class=\"parent\" 是否应用于超链接?<ul> <li><a href=\"#\">Page 1</a></li> <li><a class=\"parent\" href=\"#\">Page with Subpages</a> <ul class=\"children\">