質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.45%

  • PHP

    24612questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • WordPress

    9153questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

ショートコードを入れようとして、function.phpに入れたらレイアウト崩れした

受付中

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 1,412

chNOBUNAGA

score 31

function.phpを編集したら、レイアウト崩れしました。以下、追加部分のみ

function shortcode_project($atts, $content = null) {
        extract(shortcode_atts(array(
                "ex" => '',
                "type" => 'project'
        ), $atts));
        global $post;
        $myposts = get_posts('numberposts=-1&order=ASC&post_type='.$type.'&exclude='.$ex);
        $retour='<form method="get" action="'.home_url('/').'">

      <input type="text" name="s" value="'.the_search_query().'" placeholder="??" />
      <input type="hidden" name="post_type" value="project">
      <input type="submit" value="??" />
    </form><ul>';

        foreach($myposts as $post) :
            if(!is_subpage()) {
             setup_postdata($post);
            if(has_tag('1')){

             $retour.='<div class="side-corner-tag"><div class="block2"><a href="'.get_permalink().'">'.get_the_post_thumbnail( $page->ID, 'thumbnail' ).the_title("","",false).get_the_content("Continue reading " . get_the_title()).'<a class="button" href="'.get_permalink().'"></a></div></a></div><p><span></span></p></div> ';

}

else{
             $retour.='<div class="block"><a href="'.get_permalink().'">'.get_the_post_thumbnail( $page->ID, 'thumbnail' ).the_title("","",false).get_the_content("Continue reading " . get_the_title()).'</a></div> ';

}

}
        endforeach;wp_reset_postdata();
       return $retour; 
}

add_action( 'wp_enqueue_scripts', 'business_one_page_scripts' );

/**
 * Custom template tags for this theme.
 */
require get_template_directory() . '/inc/template-tags.php';

/**
 * Custom functions that act independently of the theme templates.
 */
require get_template_directory() . '/inc/extras.php';

/**
 * Customizer additions.
 */
require get_template_directory() . '/inc/customizer.php';

/**
 * Load Jetpack compatibility file.
 */
require get_template_directory() . '/inc/jetpack.php';

/**
 * Post Meta Box
 */
require get_template_directory() . '/inc/metabox.php';

/**
 * Widget Recent Post
 */
require get_template_directory() . '/inc/widget-recent-post.php';

/**
 * Widget Popular Post
 */
require get_template_directory() . '/inc/widget-popular-post.php';

/**
 * Widget Social Links
 */
require get_template_directory() . '/inc/widget-social-links.php';

/**
 * Multiple Image Field
 * 
 * @link https://github.com/lucatume/wp-customizer
 */
require get_template_directory() . '/inc/multiimage-custom-control.php';
 add_shortcode('project', 'shortcode_project');

get_template_part('create-project');
get_template_part('create-proposal');

ちなみに、関数部分を echo 'aaa';のみにすると正常に動作しました

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • kei344

    2016/06/23 00:22

    過去の質問に何の返信もされていませんが、解決していないのであればその状況をコメントなどで入れてください。解決したのであれば「解決済」にしてください。

    キャンセル

  • chNOBUNAGA

    2016/06/23 00:24

    すいません、忘れておりました
    解決したもののみ、解決済みにいたしました

    キャンセル

  • kei344

    2016/06/23 11:37

    解決されたのであれば「解決済」にしてください。

    キャンセル

  • 退会済みユーザー

    2016/06/28 04:02

    こちらの質問が他のユーザから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました
    「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。

回答 2

0

$retour= の部分の複数行入れようとしている箇所が問題です。$retour= から ; までの改行を無くすか、ヒアドキュメントをお使いください。


【ヒアドキュメント | PHP Labo】
http://www.php-labo.net/tutorial/php/heredocument.html

【PHPの基本構文「ヒアドキュメント」 - PHP入門 - Webkaru】
http://webkaru.net/php/here-document/

【PHP ヒアドキュメントの使い方:2通り - すたら日記】
http://d.hatena.ne.jp/sutara_lumpur/20080803/1217724875

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/06/23 00:56

    すいません。
    $retourとは何行目でしょうか?

    キャンセル

  • 2016/06/23 00:58

    仮にreturn $retour;
    を消しても乱れてしまいます

    キャンセル

  • 2016/06/23 01:00

    改行を消しましたが、改善されませんでした、

    キャンセル

  • 2016/06/23 01:03

    $retour= の箇所は提示されているコードの中に1箇所しかありませんが、もしかして提示されたコード以外の部分を探されていませんか? 近いものは $retour.= くらいですが、そこは複数行を入れている箇所ではありませんし・・・。

    キャンセル

  • 2016/06/23 01:08

    ASCLLでおかしくなってましたありがとうございます

    キャンセル

  • 2016/06/23 01:11

    //エラー出力強制
    ini_set( 'display_errors', 1 ); // エラーを画面に表示(1を0にすると画面上にはエラーは出ない)
    //すべてのエラー表示
    error_reporting( E_ALL );

    function.phpの最初のほうにこれを書いて、エラーが出ますか?
    また、崩れた部分の「出力されたHTML」(ブラウザで「ページのソースを表示」)を質問文に追記ください。

    キャンセル

  • 2016/06/23 01:11

    ASCLLとはなんでしょうか。

    キャンセル

  • 2016/06/24 03:30

    横槍失礼します。
    WordPress でのエラー表示は、規定の定数があるのでそれを使います。

    ```php
    define( 'WP_DEBUG', true );
    define( 'WP_DEBUG_DISPLAY', WP_DEBUG );
    define( 'WP_DEBUG_LOG', WP_DEBUG );
    ```

    各定数の意味は codex をご覧ください。

    キャンセル

0

こちらのソースコードは、どこかからのコピペでしょうか?
色々と間違いがあるように見受けれらます。

  • </form><ul> となっている箇所があるが、</ul> がない
  • </div></a></div><p><span></span></p></div> となっている箇所があるが、</a></div></div><p><span></span></p> が正解だと思われる。ちなみに <p><span></span></p> は不要ではないでしょうか?
  • ループ内で $page を使用しているが、$post が正解だと思われる。
  • global 宣言している $post は不要ではないでしょうか?
  • $myposts で使用している、$type と $ex の値が検証されていないため、セキュリティ上危ない気がする。
  • shortcode_project() 関数の第二引数は使用されていないため不要。

崩れているのは、エラーのせいもあるかもしれませんが、HTML の文法エラーでもあると思われます。

テストしていませんが、こんなんでいかがでしょうか?ただ、$myposts で使用している、$type と $ex の値を検証していません。どのような値が入ってくるのか不明なため、ご自身でエスケープや置換処理してください。WordPress には、いくつものサニタイズ関数が用意されているので、特殊な値ではないのであれば、それを利用するのがよいと思います。

function shortcode_project( $atts ) {
    extract( shortcode_atts( array(
        "ex"   => '',
        "type" => 'project'
    ), $atts ) );

    $myposts  = get_posts( 'numberposts=-1&order=ASC&post_type=' . $type . '&exclude=' . $ex );
    $retour[] = '<form method="get" action="' . home_url( '/' ) . '">';
    $retour[] = '<input type="text" name="s" value="' . the_search_query() . '" placeholder="??" />';
    $retour[] = '<input type="hidden" name="post_type" value="project">';
    $retour[] = '<input type="submit" value="??" />';
    $retour[] = '</form>';

    foreach ( $myposts as $post ) :
        if ( ! is_subpage() ) {
            setup_postdata( $post );
            if ( has_tag( '1' ) ) {
                $retour[] = '<div class="side-corner-tag">';
                $retour[] = '<div class="block2">';
                $retour[] = '<a href="' . get_permalink() . '">';
                $retour[] = get_the_post_thumbnail( $post->ID, 'thumbnail' );
                $retour[] = the_title( "", "", false );
                $retour[] = get_the_content( "Continue reading " . get_the_title() );
                $retour[] = '<a class="button" href="' . get_permalink() . '"></a>';
                $retour[] = '</a>';
                $retour[] = '</div>';
                $retour[] = '</div>';
            } else {
                $retour[] = '<div class="block">';
                $retour[] = '<a href="' . get_permalink() . '">';
                $retour[] = get_the_post_thumbnail( $post->ID, 'thumbnail' );
                $retour[] = the_title( "", "", false );
                $retour[] = get_the_content( "Continue reading " . get_the_title() );
                $retour[] = '</a>';
                $retour[] = '</div>';
            }
        }
    endforeach;
    wp_reset_postdata();

    return implode( PHP_EOL, $retour );
}

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.45%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • PHP

    24612questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • WordPress

    9153questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。