php的新手,但我已经了解它是如何工作的(我的意思是,我可以编写php并在YouTube教程中做一些事情)。我很难将它应用到实际使用中:
我想缩短我需要放在 frontpage.php 上的php数量(WordPress,但我听说这个问题不是WordPress问题;只是一个php问题。)
我要多次调用相同的php来每次显示1个帖子,只需更改类别即可在php中显示 - 所以,现在我有:
lots of php cat=33 lots of php
我想创建一个函数,以便在我的frontpage.php上,我只需要写:
whatever cat=33 whatever
或只是
whatever 33
如果它有助于我的代码,它是(这有标签,但我在这里和那里同时使用标签和猫):
<?php
$args=array(
'tag' => 'feature-left',
'showposts'=>1,
'caller_get_posts'=>1
);
$my_query = new WP_Query($args);
$offset = 3;
if( $my_query->have_posts() ) {
while ($my_query->have_posts()) : $my_query->the_post(); ?>
<a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>" itemscope="itemscope" itemtype="http://schema.org/BlogPosting" itemprop="blogPost">
<h4><?php the_excerpt(); ?> </h4>
</a>
<a href="<?php the_permalink() ?>" >
<div class="front-first-article-title" itemprop="headline"><h2 style="color:#00589C; margin-bottom:5px;"><b><?php the_title(); ?></b></h2>
</div>
<?php
endwhile;
} //if ($my_query)
wp_reset_query(); // Restore global post data stomped by the_post().
?>
答案 0 :(得分:3)
在您的主题文件夹中,找到您的functions.php文件。
在该文件中,将此代码(来自您的问题)放入一个函数中,如下所示:
function my_custom_loop($category) {
$args=array(
'tag' => 'feature-left',
// showposts has been replaced, use 'posts_per_page' instead
// 'showposts' =>1,
'posts_per_page' => 1,
// this has been replaced, use 'ignore_sticky_posts'
// 'caller_get_posts' => 1,
'ignore_sticky_posts' => true,
'cat' => $category
);
$my_query = new WP_Query($args);
$offset = 3;
if( $my_query->have_posts() ) {
while ($my_query->have_posts()) : $my_query->the_post(); ?>
<a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>" itemscope="itemscope" itemtype="http://schema.org/BlogPosting" itemprop="blogPost">
<h4><?php the_excerpt(); ?> </h4>
</a>
<a href="<?php the_permalink() ?>" >
<div class="front-first-article-title" itemprop="headline"><h2 style="color:#00589C; margin-bottom:5px;"><b><?php the_title(); ?></b></h2>
</div>
<?php
endwhile;
} //if ($my_query)
wp_reset_query(); // Restore global post data stomped by the_post().
}
现在,在您的主页文件中,您可以放入my_custom_loop(33)
以输出自定义帖子循环。
注意强>
您的循环中的HTML存在一些问题。您不应将<div>
或<h2>
或<h4>
元素放在<a>
标记内。此外,您的<a>
代码未正确关闭。最后,我建议在<h2>
上使用类/ CSS而不是内联样式,因为它会多次输出到屏幕,输出很傻完全相同的内联CSS很多次。
修改强>
根据您最近的评论,是的,您可以使该功能也处理标签,并使用&#34;数字&#34;充满活力。请注意,这种问题有多种方法,但最直接的(给定您现有的功能)会是这样的:
/* Note the "default values" for $tag and $offset.
* You can call this function in many ways:
* my_custom_loop(33); just get the categories, with an offset of 3
* my_custom_loop(33, NULL, 5); get the categories, offset of 5
* my_custom_loop(NULL, 'feature-left'); get the tags, offset of 3
* my_custom_loop(NULL, 'feature-left', 5); get the tags, offset of 5
*/
function my_custom_loop($category, $tag = NULL, $offset = 3) {
$args=array(
// showposts has been replaced, use 'posts_per_page' instead
// 'showposts' =>1,
'posts_per_page' => 1,
// this has been replaced, use 'ignore_sticky_posts'
// 'caller_get_posts' => 1,
'ignore_sticky_posts' => true,
);
if ($category) {
$args['cat'] = $category;
}
if ($tag) {
$args['tag'] = 'feature-left';
}
$my_query = new WP_Query($args);
// ... rest of function to output loop
}
答案 1 :(得分:2)
如果您不希望自己的功能拥挤,可以创建文件夹,然后调用它templates/parts/
对于要重用的每个部分放在一个.PHP
文件中。
然后你需要这个块的任何你称之为
<?php include(locate_template( 'templates/parts/slider-box.php' ));?>
从设计角度来看,这是更好的选择。例如,我正在建立的一个网站的主页面看起来像这样
<?php $catNum = 23; ?>
<?php include(locate_template( 'templates/parts/slider-box.php' ));?>
<?php include(locate_template( 'templates/parts/ads3.php' ));?>
<?php $catNum = 2; ?>
<?php include(locate_template( 'templates/parts/catBlox-main.php' ));?>
<?php $catNum = 4; ?>
<?php include(locate_template( 'templates/parts/catBlox-main.php' ));?>
<?php $catNum = 3; ?>
<?php include(locate_template( 'templates/parts/catBlox-main.php' ));?>
我将每个部分的所有文件都放在一个文件夹中我可以将它们移动到其他项目中,或者当出现问题时,除了转到1个大函数中的函数之外,还可以更容易去文件.php