如何避免一个代码多次出现,而是通过一些函数来实现?短码,但我认为主题词的核心文件中没有使用短码?

时间:2017-07-16 作者:The WP Intermediate

我在网上发布了一个问题StackExchange Here. 问题已成功回答。

我希望避免在不同的php文件(如内容)中多次复制粘贴一个代码。php或者可能是在某些提要栏区域中再次需要代码等。

shortcode是避免多次粘贴的解决方案吗?但我认为短代码是在WordPress编辑器上使用的,而不是核心php文件?

解决方案是什么?

顺便说一下,我不想重复复制粘贴的完整代码是→

<?php 
            // Get the id of the post\'s author.
            $author_id = get_the_author_meta( \'ID\' );

            // Get WP_User object for the author.
            $author_userdata = get_userdata( $author_id );

            // Get the author\'s website. It\'s stored in the wp_users table in the user_url field.
            $author_website = $author_userdata->data->user_url;

            // Get the rest of the author links. These are stored in the 
            // wp_usermeta table by the key assigned in wpse_user_contactmethods()
            $author_facebook = get_the_author_meta( \'facebook\', $author_id );
            $author_twitter  = get_the_author_meta( \'twitter\', $author_id  );
            $author_linkedin = get_the_author_meta( \'linkedin\', $author_id );
            $author_youtube  = get_the_author_meta( \'youtube\', $author_id  );

            // Output the user\'s social links if they have values.
            if ( $author_website ) {
                    printf( \'<a href="%s"><i class="fa fa-home" aria-hidden="true"></i></a>\',
                            esc_url( $author_website )
                    );
            }

            if ( $author_facebook ) {
                    printf( \'<a href="%s"><i class="fa fa-facebook" aria-hidden="true"></i></a>\',
                            esc_url( $author_facebook )
                    );
            }

            if ( $author_twitter ) {
                    printf( \'<a href="%s"><i class="fa fa-twitter" aria-hidden="true"></i></a>\',
                            esc_url( $author_twitter )
                    );
            }

            if ( $author_linkedin ) {
                    printf( \'<a href="%s"><i class="fa fa-linkedin" aria-hidden="true"></i></a>\',
                            esc_url( $author_linkedin )
                    );
            }

            if ( $author_youtube ) {
                    printf( \'<a href="%s"><i class="fa fa-youtube" aria-hidden="true"></i></a>\',
                            esc_url( $author_youtube )
                    );
            }
        ?>

1 个回复
SO网友:Picard

您可以使用PHP\'s includes 像这样:

include dirname(__FILE__).\'/components/authorSocials.php\';
但您应该记住向组件提供数据。由于您的想法是在不同的地方使用它,因此默认值并不总是可用的,并且是正确的,因此您应该为此解决方案添加更多代码:

$user_id = assign_your_user_id_here();
include dirname(__FILE__).\'/components/authorSocials.php\';
然后在“组件”中执行以下操作:

<?php 
    // Get the id of the post\'s author.
    $author_id = get_the_author_meta(\'ID\', $user_id);

    .....
?>

结束

相关推荐

DO_SHORTCODE中的快捷码标签不起作用

我正在创建一个短代码,作为插件的一部分,我正在调用这样的模板:do_shortcode(\'[shortcodename title=\"monkeys\"]\'); 函数如下所示:function shortcodename_function($atts = []) { // stuff } 在函数内部,我试图在运行shortcode\\u atts之前打印出$atts,以确认它们在那里,但我什么也没有得到。这就像是完全忽略了我应用的属性。一旦我运行shortcode