如果存在函数,并且满足数组,则回声函数?
-
16-10-2019 - |
题
我的功能如下:
<?php echo my_custom_function( array( 'category_url'=>'My Special Category' ) ); ?>
它从“我的特殊类别”中获取数据并显示它。我想围绕有条件的语句,说当时只有该类别具有显示的内容,以显示它。有多个category_url的效果将其包裹在if语句中,并且仅由于数组而使用my_custom_function不起作用,它会引发错误:“丢失参数1”。
关于如何使此函数的存在任何想法仅在存在以及论点等于本身时回声吗? PHP NOOB问题。 ;) 谢谢!!
解决方案
以下功能显示了一些“最佳实践”示例;)
它包括错误处理,检查emtpy数组值,解析输入args带有默认值,关心是否要回声结果等等。甚至为孩子主题默认设置了一个过滤器。 :)
您的functions.php文件中的函数:
function wpse15886_check_cat( $args = array( 'cat_url', 'other_args_for_the_output', 'echo' => false ) )
{
// Abort if no 'cat_url' argument was given
if ( ! isset( $args['cat_url'] ) )
$error = __( 'You have to specify a category slug.' );
// check if the category exists
$given_cat = get_category_by_slug( $args['cat_url'] );
if ( empty( $given_cat ) )
$error = sprintf( __( 'The category with the slug %1$s does not exist.' ), $args['cat_url'] );
// check if we got posts for the given category
$the_posts = get_posts( array( 'category' => $args['cat_url'] ) );
if ( empty( $the_posts ) )
$error = __( 'No posts were found for the given category slug.' );
// error handling - generate the output
$error_msg = new WP_Error( __FUNCTION__, $error );
if ( is_wp_error( $error_msg ) )
{
?>
<div id="error-<?php echo $message->get_error_code(); ?>" class="error-notice">
<strong>
<?php echo $message->get_error_message(); ?>
</strong>
</div>
<?php
// abort
return;
}
// Set some defaults
$defaults = array(
'key a' => 'val a'
,'key a' => 'val a'
,'key a' => 'val a'
);
// filter defaults
$defaults = apply_filters( 'filter_check_cats', $defaults );
// merge defaults with input arguments
$args = wp_parse_args( $args, $defaults );
extract( $args, EXTR_SKIP );
// >>>> build the final function output
$output = $the_posts;
$output = __( 'Do what ever you need to do here.' );
$output = sprintf( __( 'Manipulating some of the parsed %1$s for example.' ), $args['other_args_for_the_output'] );
// <<<< end build output
// just return the value for further modification
if ( $args['echo'] === false )
return $output;
return print $output;
}
请注意,我尚未测试该功能,因此可能存在一些错误陈述。但是错误会带领你。
用户酶:
$my_cats = array(
'cat_slug_a'
,'cat_slug_b'
,'cat_slug_c'
);
if ( function_exists( 'wpse15886_check_cat' ) )
{
foreach ( $my_cats as $cat )
{
$my_cats_args = array(
$cat
,'other_args_for_the_output' // this could also be another array set in here
,'echo' => true
);
// trigger the function
wpse15886_check_cat( $my_cats_args );
}
}